This file is indexed.

/usr/lib/emboss/include/ajpat.h is in emboss-lib 6.6.0+dfsg-1.

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
/* @include ajpat *************************************************************
**
** AJAX PATTERN (ajax pattern and patternlist) functions
**
** These functions allow handling of patternlists.
**
** @author Copyright (C) 2004 Henrikki Almusa, Medicel Oy, Finland
** @version $Revision: 1.12 $
** @modified Aug 10 Beta version
** @modified 2004-2011 Peter Rice
** @modified $Date: 2011/10/18 14:23:40 $ 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 AJPAT_H
#define AJPAT_H

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

#include "ajdefine.h"
#include "ajstr.h"
#include "ajlist.h"
#include "ajreg.h"

AJ_BEGIN_DECLS




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




/*
**  Defines for string search algorithms
*/
#define AJALPHA  256                    /* Alphabet                     */
#define AJMOD256 0xff
#define AJALPHA2 128                    /* ASCII printable              */
#define AJWORD   32                     /* Size of a word               */
#define AJBPS    1                      /* Bits per state               */




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




/* @data AjPPatBYPNode ********************************************************
**
** AJAX data structure for nodes in Baeza-Yates & Perleberg algorithm
**
** @attr next [struct AjSPatBYPNode*] Pointer to next node
** @attr offset [ajint] Offset
** @attr Padding [char[4]] Padding to alignment boundary
** @@
******************************************************************************/

typedef struct AjSPatBYPNode
{
    struct AjSPatBYPNode *next;
    ajint offset;
    char  Padding[4];
} AjOPatBYPNode;

#define AjPPatBYPNode AjOPatBYPNode*




/* @data AjPPatComp ***********************************************************
**
** AJAX data structure that holds all needed data for compiling and
** searching. Not including mismatch number.
**
** @alias AjSPatComp
** @alias AjOPatComp
**
** @attr pattern [AjPStr] Prosite pattern string
** @attr type [ajuint] Prosite pattern compile type
** @attr plen [ajuint] Prosite pattern length
** @attr buf [ajint*] Buffer for BMH search (can be -1)
** @attr off [AjOPatBYPNode[AJALPHA]] Offset buffer for B-Y/P search
** @attr sotable [ajuint*] Buffer for SHIFT-OR
** @attr solimit [ajuint] Limit for BMH search
** @attr m [ajuint] Real length of pattern (from embPatGetType)
** @attr regex [AjPStr] PCRE regexp string
** @attr skipm [ajuint**] Skip buffer for Tarhio-Ukkonen
** @attr amino [AjBool] Must match left begin
** @attr carboxyl [AjBool] Must match right
**
** @@
******************************************************************************/

typedef struct AjSPatComp
{
    AjPStr pattern;
    ajuint type;
    ajuint plen;
    ajint* buf;
    AjOPatBYPNode off[AJALPHA];
    ajuint* sotable;
    ajuint solimit;
    ajuint m;
    AjPStr regex;
    ajuint** skipm;
    AjBool amino;
    AjBool carboxyl;
} AjOPatComp;

#define AjPPatComp AjOPatComp*




/* @data AjPPatternSeq ********************************************************
**
** Ajax sequence pattern object.
**
** Holds definition of feature pattern. Regular expression patterns ignore
** mismatch value.
**
** @alias AjSPatternSeq
** @alias AjOPatternSeq
**
** @attr Name [AjPStr] Name.
** @attr Pattern [AjPStr] Pattern in string format.
** @attr Compiled [void*] Compiled version of the pattern.
** @attr Protein [AjBool] True if protein pattern
** @attr Mismatch [ajuint] Mismatch value.
**
** @new ajPatternSeqNew Default constructor
** @delete ajPatternSeqDel Default destructor
** @use ajPatternSeqGetName Returns name.
** @use ajPatternSeqGetPattern Returns pattern in string format.
** @use ajPatternSeqGetCompiled Returns pointer to compiled pattern.
** @use ajPatternSeqGetType Returns type as integer value.
** @use ajPatternSeqGetMismatch Return mismatch value.
** @@
******************************************************************************/

typedef struct AjSPatternSeq
{
    AjPStr Name;
    AjPStr Pattern;
    void* Compiled;
    AjBool Protein;
    ajuint Mismatch;
} AjOPatternSeq;

#define AjPPatternSeq AjOPatternSeq*




/* @data AjPPatternRegex ******************************************************
**
** Ajax regular expression pattern object.
**
** Holds definition of feature pattern. Regular expression patterns ignore
** mismatch value.
**
** @alias AjSPatternRegex
** @alias AjOPatternRegex
**
** @attr Name [AjPStr] Name.
** @attr Pattern [AjPStr] Pattern in string format.
** @attr Compiled [AjPRegexp] Compiled version of the pattern.
** @attr Type [ajuint] Type.
** @attr Padding [char[4]] Padding to alignment boundary
**
** @new ajPatternRegexNew Default constructor
** @delete ajPatternRegexDel Default destructor
** @use ajPatternRegexGetName Returns name.
** @use ajPatternRegexGetPattern Returns pattern in string format.
** @use ajPatternRegexGetCompiled Returns pointer to compiled pattern.
** @use ajPatternRegexGetType Returns type as integer value.
** @@
******************************************************************************/

typedef struct AjSPatternRegex
{
    AjPStr    Name;
    AjPStr    Pattern;
    AjPRegexp Compiled;
    ajuint    Type;
    char      Padding[4];
} AjOPatternRegex;

#define AjPPatternRegex AjOPatternRegex*




/*
** type can be 0: string, 1: prosite (protein) 2: prosite like (nucleotide)
*/
#define AJ_PAT_TYPE_STRING 0
#define AJ_PAT_TYPE_PRO 1
#define AJ_PAT_TYPE_NUCL 2




/* @data AjPPatlistSeq ********************************************************
**
** Ajax Pattern List object.
**
** Holds list of feature patterns and general information of them.
**
** @alias AjSPatlistSeq
** @alias AjOPatlistSeq
**
** @attr Patlist [AjPList] List for patterns.
** @attr Iter [AjIList] List iterator.
** @attr Protein [AjBool] True if protein
** @attr Padding [char[4]] Padding to alignment boundary
**
** @new ajPatlistNew Default constructor.
** @delete ajPatlistDel Default destructor.
** @modify ajPatlistRegexRead Reads the pattern file and fills the list.
** @modify ajPatlistSeqRead Reads the pattern file and fills the list.
** @modify ajPatlistRewind Restarts the iteration loop.
** @modify ajPatlistAdd Adds new pattern into list.
** @use ajPatlistGetNext Gets the next pattern from file and returns true if
**      available and false if not.
** @@
******************************************************************************/

typedef struct AjSPatlistSeq
{
    AjPList Patlist;
    AjIList Iter;
    AjBool Protein;
    char   Padding[4];
} AjOPatlistSeq;

#define AjPPatlistSeq AjOPatlistSeq*




/* @data AjPPatlistRegex ******************************************************
**
** Ajax Pattern List object.
**
** Holds list of feature patterns and general information of them.
**
** @alias AjSPatlistRegex
** @alias AjOPatlistRegex
**
** @attr Patlist [AjPList] List for patterns.
** @attr Iter [AjIList] List iterator.
** @attr Type [ajuint] Type of expression
** @attr Padding [char[4]] Padding to alignment boundary
**
** @new ajPatlistNew Default constructor.
** @delete ajPatlistDel Default destructor.
** @modify ajPatlistRegexRead Reads the pattern file and fills the list.
** @modify ajPatlistSeqRead Reads the pattern file and fills the list.
** @modify ajPatlistRewind Restarts the iteration loop.
** @modify ajPatlistAdd Adds new pattern into list.
** @use ajPatlistGetNext Gets the next pattern from file and returns true if
**      available and false if not.
** @@
******************************************************************************/

typedef struct AjSPatlistRegex
{
    AjPList Patlist;
    AjIList Iter;
    ajuint Type;
    char Padding[4];
} AjOPatlistRegex;

#define AjPPatlistRegex AjOPatlistRegex*




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




/*
** Prototype definitions
*/

AjPPatternSeq ajPatternSeqNewList(AjPPatlistSeq plist, const AjPStr name,
                                  const AjPStr pat, ajuint mismatch);
void ajPatternSeqDel(AjPPatternSeq* pthys);
const AjPStr ajPatternSeqGetName(const AjPPatternSeq thys);
const AjPStr ajPatternSeqGetPattern(const AjPPatternSeq thys);
AjPPatComp ajPatternSeqGetCompiled(const AjPPatternSeq thys);
AjBool ajPatternSeqGetProtein(const AjPPatternSeq thys);
ajuint ajPatternSeqGetMismatch(const AjPPatternSeq thys);
void ajPatternSeqSetCompiled(AjPPatternSeq thys, void* pat);
void ajPatternSeqDebug(const AjPPatternSeq pat);

AjPPatternRegex ajPatternRegexNewList(AjPPatlistRegex plist,
                                      const AjPStr name,
                                      const AjPStr pat);
void ajPatternRegexDel(AjPPatternRegex* pthys);
const AjPStr ajPatternRegexGetName(const AjPPatternRegex thys);
const AjPStr ajPatternRegexGetPattern(const AjPPatternRegex thys);
AjPRegexp ajPatternRegexGetCompiled(const AjPPatternRegex thys);
ajuint ajPatternRegexGetType(const AjPPatternRegex thys);
void ajPatternRegexSetCompiled(AjPPatternRegex thys, AjPRegexp pat);
void ajPatternRegexDebug(const AjPPatternRegex pat);

/* Patlist handling functions */
AjPPatlistSeq ajPatlistSeqNewType(AjBool Protein);
AjPPatlistRegex ajPatlistRegexNewType(ajuint type);
AjPPatlistRegex ajPatlistRegexNew(void);
AjPPatlistSeq ajPatlistSeqNew(void);
void ajPatlistSeqDel(AjPPatlistSeq* pthys);
void ajPatlistRegexDel(AjPPatlistRegex* pthys);
AjPPatlistRegex ajPatlistRegexRead(const AjPStr patspec,
                                   const AjPStr patname,
                                   const AjPStr fmt,
                                   ajuint type, AjBool upper, AjBool lower);
AjPPatlistSeq ajPatlistSeqRead(const AjPStr patspec,
                               const AjPStr patname,
                               const AjPStr fmt,
                               AjBool protein, ajuint mismatches);
AjBool ajPatlistRegexGetNext(AjPPatlistRegex thys,
                             AjPPatternRegex* pattern);
AjBool ajPatlistSeqGetNext(AjPPatlistSeq thys,
                           AjPPatternSeq* pattern);
void ajPatlistSeqRewind(AjPPatlistSeq thys);
void ajPatlistRegexRewind(AjPPatlistRegex thys);
void ajPatlistSeqRemoveCurrent(AjPPatlistSeq thys);
void ajPatlistRegexRemoveCurrent(AjPPatlistRegex thys);
void ajPatlistAddRegex(AjPPatlistRegex thys, AjPPatternRegex pat);
void ajPatlistAddSeq(AjPPatlistSeq thys, AjPPatternSeq pat);
ajuint ajPatlistSeqGetSize(const AjPPatlistSeq plist);
ajuint ajPatlistRegexGetSize(const AjPPatlistRegex plist);
ajuint ajPatlistRegexDoc(AjPPatlistRegex thys, AjPStr* pdoc);
ajuint ajPatlistSeqDoc(AjPPatlistSeq thys, AjPStr* pdoc);

AjPPatComp      ajPatCompNew(void);
void            ajPatCompDel(AjPPatComp* pthys);
ajuint ajPatternRegexType(const AjPStr type);

/*
** End of prototype definitions
*/




AJ_END_DECLS

#endif /* !AJPAT_H */