This file is indexed.

/usr/lib/emboss/include/embshow.h is in emboss-lib 6.6.0+dfsg-6.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
/* @include embshow ***********************************************************
**
** General routines for sequence display.
**
** @author Copyright (c) 2000 Gary Williams
** @version $Revision: 1.21 $
** @modified $Date: 2011/10/18 14:24:25 $ by $Author: rice $
** @@
**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
**
** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
** Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
** MA  02110-1301,  USA.
******************************************************************************/

#ifndef EMBSHOW_H
#define EMBSHOW_H





/* ========================================================================= */
/* ============================= include files ============================= */
/* ========================================================================= */

#include "ajdefine.h"
#include "ajstr.h"
#include "ajlist.h"
#include "ajseqdata.h"
#include "ajfeatdata.h"
#include "ajrange.h"
#include "ajtranslate.h"

AJ_BEGIN_DECLS




/* ========================================================================= */
/* =============================== constants =============================== */
/* ========================================================================= */




/* ========================================================================= */
/* ============================== public data ============================== */
/* ========================================================================= */




/* @enum ShowEValtype *********************************************************
**
** Descriptor object types
**
** @value SH_SEQ Sequence
** @value SH_BLANK Blank line
** @value SH_TICK Tick marks
** @value SH_TICKNUM Tick numbers
** @value SH_COMP Complementary strand
** @value SH_TRAN Protein translation
** @value SH_RE Restriction enzyme cut sites
** @value SH_FT Features
** @value SH_NOTE Notes
******************************************************************************/

typedef enum
{
    SH_SEQ,
    SH_BLANK,
    SH_TICK,
    SH_TICKNUM,
    SH_COMP,
    SH_TRAN,
    SH_RE,
    SH_FT,
    SH_NOTE
} ShowEValtype;




/* @data EmbPShow *************************************************************
**
** NUCLEUS data structure for EmbPShow object for a sequence
**
** @attr list [AjPList] list of EmbPShowInfo structures
**
** @cc information about the sequence
**
** @attr seq [const AjPSeq] the sequence
** @attr nucleic [AjBool] ajTrue = the sequence is nucleic
** @attr offset [ajuint] offset to start numbering at
** @attr start [ajuint] sequence position to start printing at
** @attr end [ajuint] sequence position to stop printing at
**
** @cc information about the page layout
**
** @attr width [ajuint] width of sequence to display on each line
** @attr length [ajuint] length of a page (0 = indefinite)
** @attr margin [ajuint] margin for numbers
** @attr html [AjBool] ajTrue = format page for HTML
** @@
******************************************************************************/

typedef struct EmbSShow {
  AjPList list;
  const AjPSeq seq;
  AjBool nucleic;
  ajuint offset;
  ajuint start;
  ajuint end;
  ajuint width;
  ajuint length;
  ajuint margin;
  AjBool html;
} EmbOShow;
#define EmbPShow EmbOShow*




/* @data EmbPShowInfo *********************************************************
**
**
** The sequence and associated things to show are held in an ordered list
** of type EmbPShowInfo. This list is held in the structure EmbPShow.
**
** The things to show are displayed around the sequence in the order that
** they are held on the list.
**
** EmbPShowInfo holds the descriptor (one of EmbPShowBlank, EmbPShowTicks,
** EmbPShowSeq, EmbPShowComp, etc.) and the type of the descriptor (one of
** SH_BLANK, SH_TICKS, SH_SEQ, SH_COMP, etc.  )
**
** Each descriptor (EmbPShowSeq, EmbPShowBlank, EmbPShowTicks, etc.) holds
** information that could be useful in displaying its type of information.
**
** So, for example:
**
** EmbPShow could have a list of:
** ----------------------------
**
** EmbPShowInfo->type=SH_BLANK
**    |       ->info=EmbPShowBlank
**    |
** EmbPShowInfo->type=SH_TICKS
**    |       ->info=EmbPShowTicks
**    |
** EmbPShowInfo->type=SH_SEQ
**    |       ->info=EmbPShowSeq
**    |
** EmbPShowInfo->type=SH_COMP
**    |       ->info=EmbPShowComp
**    |
** EmbPShowInfo->type=etc.
**    |       ->info=etc.
**    |
**   etc.
**
** @attr info [void*] Information descriptor (set of available descriptors)
** @attr type [ajint] Type of information (enumerated list)
** @attr Padding [char[4]] Padding to alignment boundary
** @@
******************************************************************************/

typedef struct EmbSShowInfo {
  void * info;
  ajint type;
  char Padding[4];
} EmbOShowInfo;
#define EmbPShowInfo EmbOShowInfo*




/* @data EmbPShowSeq **********************************************************
**
** NUCLEUS data structure for sequence information, type = SH_SEQ
**
** @attr number [AjBool] ajTrue = number the sequence
** @attr threeletter [AjBool] ajTrue = display proteins in three letter code
** @attr upperrange [const AjPRange] range of sequence to uppercase
** @attr highlight [const AjPRange] range of sequence to colour in HTML
** @@
******************************************************************************/

typedef struct EmbSShowSeq {
  AjBool number;
  AjBool threeletter;
  const AjPRange upperrange;
  const AjPRange highlight;
} EmbOShowSeq;
#define EmbPShowSeq EmbOShowSeq*

/* blank line information, type = SH_BLANK */





/* @data EmbPShowBlank ********************************************************
**
** NUCLEUS data structure for  blank line information, type = SH_BLANK
**
** @attr dummy [AjBool] Dummy attribute - no specific information needed
**                      AJNEW0() falls over if 0 bytes are allocated, so
**                      put in this dummy to pad the structure out
** @@
******************************************************************************/

typedef struct EmbSShowBlank {
  AjBool dummy;
} EmbOShowBlank;
#define EmbPShowBlank EmbOShowBlank*




/* @data EmbPShowTicks ********************************************************
**
** NUCLEUS data structure for tick line information, type = SH_TICK
**
** @attr dummy [AjBool] Dummy attribute - no specific information needed
**                      AJNEW0() falls over if 0 bytes are allocated, so
**                      put in this dummy to pad the structure out
** @@
******************************************************************************/

typedef struct EmbSShowTicks {
  AjBool dummy;
} EmbOShowTicks;
#define EmbPShowTicks EmbOShowTicks*




/* @data EmbPShowTicknum ******************************************************
**
** NUCLEUS data structure for tick number line information, type = SH_TICKNUM
**
** @attr dummy [AjBool] Dummy attribute - no specific information needed
**                      AJNEW0() falls over if 0 bytes are allocated, so
**                      put in this dummy to pad the structure out
** @@
******************************************************************************/

typedef struct EmbSShowTicknum {
  AjBool dummy;
} EmbOShowTicknum;
#define EmbPShowTicknum EmbOShowTicknum*




/* @data EmbPShowTran *********************************************************
**
** NUCLEUS data structure for translation information, type = SH_TRAN
**
** @attr transeq [AjPSeq] Copy of our stored translation
** @attr trnTable [const AjPTrn] translation table
** @attr frame [ajint] 1,2,3,-1,-2 or -3 = frame to translate
** @attr threeletter [AjBool] ajTrue = display in three letter code
** @attr number [AjBool] ajTrue = number the translation
** @attr tranpos [ajuint] store of translation position for numbering
** @attr regions [const AjPRange] only translate in these regions,
**                                NULL = do all
** @attr orfminsize [ajuint] minimum size of ORF to display
** @attr lcinterorf [AjBool] ajTrue = put the inter-orf regions in lower case
** @attr firstorf [AjBool] ajTrue = beginning of the seq is a possible ORF
** @attr lastorf [AjBool] ajTrue = end of the seq is a possible ORF
** @attr showframe [AjBool] ajTrue = write the frame number
** @attr Padding [char[4]] Padding to alignment boundary
** @@
******************************************************************************/

typedef struct EmbSShowTran {
  AjPSeq transeq;
  const AjPTrn trnTable;
  ajint frame;
  AjBool threeletter;
  AjBool number;
  ajuint tranpos;
  const AjPRange regions;
  ajuint orfminsize;
  AjBool lcinterorf;
  AjBool firstorf;
  AjBool lastorf;
  AjBool showframe;
  char   Padding[4];
} EmbOShowTran;
#define EmbPShowTran EmbOShowTran*




/* @data EmbPShowComp *********************************************************
**
** NUCLEUS data structure for sequence complement information, type = SH_COMP
**
** @attr number [AjBool] ajTrue = number the complement
** @@
******************************************************************************/

typedef struct EmbSShowComp {
  AjBool number;
} EmbOShowComp;
#define EmbPShowComp EmbOShowComp*




/* @data EmbPShowRE ***********************************************************
**
** NUCLEUS data structure for RE cut site information, type = SH_RE
**
** @attr sense [ajint]  1 or -1 = sense to display
** @attr flat [AjBool] ajTrue = display in flat format with recognition sites
** @attr matches [AjPList] list of AjPMatmatch matches
** @attr plasmid [AjBool] ajTrue = Circular (plasmid) sequence. Needed so
**                        that when we display sequences we can decide whether
**                        to show cuts that go past the origin in either
**                        direction
** @attr hits [ajuint]  number of hits in list
** @attr sitelist [AjPList] list of EmbSShowREsite
** @@
******************************************************************************/

typedef struct EmbSShowRE {
  ajint sense;
  AjBool flat;
  AjPList matches;
  AjBool plasmid;
  ajuint hits;
  AjPList sitelist;
} EmbOShowRE;
#define EmbPShowRE EmbOShowRE*




/* @data EmbPShowFT ***********************************************************
**
** NUCLEUS data structure for  Feature information, type = SH_FT
**
** @attr feat [AjPFeattable] Feature table
** @@
******************************************************************************/

typedef struct EmbSShowFT {
  AjPFeattable feat;
} EmbOShowFT;
#define EmbPShowFT EmbOShowFT*




/* @data EmbPShowNote *********************************************************
**
** NUCLEUS data structure for annotation information, type = SH_NOTE
**
** @attr regions [const AjPRange] regions to annotate, NULL = no regions
** @@
******************************************************************************/

typedef struct EmbSShowNote {
  const AjPRange regions;
} EmbOShowNote;
#define EmbPShowNote EmbOShowNote*




/********* assorted structures ***********/




/* @data EmbPShowREsite *******************************************************
**
** NUCLEUS data structure for Restriction Enzyme cut site position list node
**
** @attr name [AjPStr] name of Restriction Enzyme
** @attr pos [ajint] cut site position
** @attr Padding [char[4]] Padding to alignment boundary
** @@
******************************************************************************/

typedef struct EmbSShowREsite {
  AjPStr name;
  ajint pos;
  char Padding[4];
} EmbOShowREsite;
#define EmbPShowREsite EmbOShowREsite*




/* ========================================================================= */
/* =========================== public functions ============================ */
/* ========================================================================= */



/*
** Prototype definitions
*/

EmbPShow embShowNew (const AjPSeq seq, ajint begin, ajint end, ajint width,
		     ajint length, ajint margin, AjBool html, ajint offset);
void     embShowDel (EmbPShow* pthis);

void     embShowAddSeq (EmbPShow thys, AjBool number, AjBool threeletter,
			const AjPRange upperrange, const AjPRange colour);
void     embShowAddBlank (EmbPShow thys);
void     embShowAddTicks (EmbPShow thys);
void     embShowAddTicknum (EmbPShow thys);
void     embShowAddComp (EmbPShow thys, AjBool number);
void     embShowAddTran (EmbPShow thys, const AjPTrn trnTable, ajint frame,
			 AjBool threeletter, AjBool number,
			 const AjPRange regions,
			 ajint orfminsize, AjBool lcinterorf,
			 AjBool firstorf, AjBool lastorf, AjBool showframe);
void     embShowAddRE (EmbPShow thys, ajint sense, const AjPList restrictlist,
		       AjBool plasmid, AjBool flat);
void     embShowAddFT (EmbPShow thys, const AjPFeattable feat);
void     embShowAddNote (EmbPShow thys, const AjPRange regions);
void     embShowPrint (AjPFile out, const EmbPShow thys);
void     embShowUpperRange (AjPStr *line,
			    const AjPRange upperrange, ajuint pos);
void     embShowColourRange (AjPStr *line,
			     const AjPRange colour, ajuint pos);

/*
** End of prototype definitions
*/

AJ_END_DECLS

#endif  /* !EMBSHOW_H */