This file is indexed.

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

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
/* @include ajlist ************************************************************
**
** AJAX List functions
** These functions create and control linked lists.
**
** @author Copyright (C) 1998 Ian Longden
** @version $Revision: 1.48 $
** @modified 2001 Alan Bleasby
**              Changed lists to be double-linked, completely rewrote
**              iterator handling and added back-iteration functions.
**              Operation of ajListInsert made more intuitive.
** @modified $Date: 2012/07/02 15:47:30 $ 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 AJLIST_H
#define AJLIST_H

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

#include "ajdefine.h"
#include "ajstr.h"

AJ_BEGIN_DECLS




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




/* @enum AjEListType **********************************************************
**
** AJAX List Type enumeration
**
** @value ajEListTypeAny Any data
** @value ajEListTypeStr String data
** @@
******************************************************************************/

typedef enum AjOListType
{
    ajEListTypeAny,
    ajEListTypeStr
} AjEListType;




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




/* @data AjPListNode **********************************************************
**
** AJAX List Node
**
** @alias AjSListNode
** @alias AjOListNode
**
** @attr Next [struct AjSListNode*] Next AJAX List Node object
** @attr Prev [struct AjSListNode*] Previous AJAX List Node object
** @attr Item [void*] Data value
** @@
******************************************************************************/

typedef struct AjSListNode
{
    struct AjSListNode* Next;
    struct AjSListNode* Prev;
    void* Item;
} AjOListNode;

#define AjPListNode AjOListNode*




/* @data AjPList **************************************************************
**
** List data object. Lists are simple linked lists with performance optimised
** to allow rapid extension of the beginning or end of the list.
**
** Lists can hold any data type. Special functions are available for lists
** of AjPStr values. In general, these functions are the same. Many are
** provided for ease of use to save remembering which calls need special cases.
**
** @alias AjSList
** @alias AjOList
**
** @attr First [AjPListNode] first node
** @attr Last [AjPListNode] dummy last node
** @attr Fitemdel [void function] Item destructor, or NULL if not an object
** @attr Count [ajulong] Number of nodes
** @attr Use [ajuint] Reference count
** @attr Padding [AjBool] Padding to alignment boundary
** @@
******************************************************************************/

typedef struct AjSList
{
    AjPListNode First;
    AjPListNode Last;
    void (*Fitemdel)(void** Pitem);
    ajulong Count;
    ajuint Use;
    AjBool Padding;
} AjOList;

#define AjPList AjOList*




/* @data AjIList **************************************************************
**
** AJAX list iterator data structure
**
** @alias AjSIList
** @alias AjOIList
**
** @attr Head [AjPList] Head of modifiable list
** @attr ReadHead [const AjPList] Head of read-only list
** @attr Here [AjPListNode] Current list node
** @attr Back [AjBool] Direction of last iterative move, true if reading back
** @attr Modify [AjBool] Allows iterator to modify the sequence
**
** @@
******************************************************************************/

typedef struct AjSIList
{
    AjPList Head;
    const AjPList ReadHead;
    AjPListNode Here;
    AjBool Back;
    AjBool Modify;
} AjOIList;

#define AjIList AjOIList*




/*
** Prototype definitions
*/

AjPList     ajListNewRef(AjPList list);
AjPList     ajListNewListref(const AjPList list);
void        ajListExit(void);
AjBool      ajListPeekFirst(const AjPList thys, void** Pitem);
void        ajListFree(AjPList* Plist);
void        ajListFreeData(AjPList* Plist);
AjIList     ajListIterNew(AjPList list);
AjIList     ajListIterNewBack(AjPList list);
AjIList     ajListIterNewreadBack(const AjPList list);
AjIList     ajListIterNewread(const AjPList list);
AjBool      ajListIterDoneBack(const AjIList iter);
void        ajListIterDel(AjIList* iter);
void*       ajListIterGet(AjIList iter);
void*       ajListIterGetBack(AjIList iter);
void        ajListIterRewind(AjIList iter);
AjBool      ajListIterDone(const AjIList iter);
void        ajListIterTrace(const AjIList iter);
void*       ajListDrop(AjPList thys, void* item);
AjBool      ajListPeekLast(const AjPList thys, void** Pitem);
AjBool      ajListPeekNumber(const AjPList thys, ajulong n, void** Pitem);
ajulong     ajListGetLength(const AjPList list);
ajulong     ajListstrGetMemsize(const AjPList list);
void        ajListMap(AjPList list,
                      void (*apply)(void** Pitem, void* cl), void* cl);
void        ajListMapread(const AjPList list,
                          void (*apply)(void* item, void* cl), void* cl);
AjPList     ajListNew(void);
AjBool      ajListPeek(const AjPList list, void** Pitem);
AjBool      ajListPop(AjPList list, void** Pitem);
AjBool      ajListPopLast(AjPList thys, void** Pitem);
void        ajListProbe(AjPList const* list);
void        ajListProbeData(AjPList const* list);
void        ajListPurge(AjPList list,
                        AjBool (*test)(const void* item),
                        void (*itemdel)(void** Pitem));
void        ajListPush(AjPList list, void* item);
void        ajListPushAppend(AjPList list, void* item);
void        ajListReverse(AjPList list);

AjPList     ajListstrNewList(const AjPList list);
AjPList     ajListstrNewListref(const AjPList list);
void        ajListstrFree(AjPList* Plist);
void        ajListstrFreeData(AjPList* Plist);
AjPStr      ajListstrIterGet(AjIList iter);
AjPStr      ajListstrIterGetBack(AjIList iter);
void        ajListstrIterTrace(const AjIList iter);
ajulong     ajListstrGetLength(const AjPList list);
void        ajListstrMap(AjPList thys,
                         void (*apply)(AjPStr* str, void* cl), void* cl);
void        ajListstrMapread(const AjPList thys,
                             void (*apply)(AjPStr str, void* cl), void* cl);
AjPList     ajListstrNew(void);
AjBool      ajListstrPeek(const AjPList list, AjPStr* Pstr);
AjBool      ajListstrPop(AjPList list, AjPStr* Pstr);
AjBool      ajListstrPopLast(AjPList thys, AjPStr* Pstr);
void        ajListstrPush(AjPList list, AjPStr str);
void        ajListstrPushAppend(AjPList list, AjPStr str);
void        ajListstrReverse(AjPList list);
ajulong     ajListstrToarray(const AjPList list, AjPStr** array);
ajulong     ajListstrToarrayAppend(const AjPList list, AjPStr** array);
void        ajListstrTrace(const AjPList list);

ajulong     ajListToarray(const AjPList list, void*** array);
ajulong     ajListToindex(const AjPList list, ajuint* listindex,
                          int (*compar1)(const void* item1,
                                         const void* item2));
void        ajListTrace(const AjPList list);

AjBool      ajListMapfind(const AjPList listhead,
                          AjBool (*apply)(void** Pitem, void* cl),
                          void* cl);
AjBool      ajListstrMapfind(const AjPList listhead,
                             AjBool (*apply)(AjPStr* Pstr, void* cl),
                             void* cl);

void        ajListPushlist(AjPList list, AjPList* Plist);
void        ajListstrPushlist(AjPList list, AjPList* Plist);
void        ajListIterInsert(AjIList iter, void* item);
void        ajListIterRemove(AjIList iter);
void        ajListstrIterInsert(AjIList iter, AjPStr str);
void        ajListstrIterRemove(AjIList iter);
void        ajListSort(AjPList thys,
                       int (*compar1)(const void* item1,
                                      const void* item2));
void        ajListSortTwo(AjPList thys,
                          int (*compar1)(const void* item1,
                                         const void* item2),
                          int (*compar2)(const void* item1,
                                         const void* item2));
void        ajListSortTwoThree(AjPList thys,
                               int (*compar1)(const void* item1,
                                              const void* item2),
                               int (*compar2)(const void* item1,
                                              const void* item2),
                               int (*compar3)(const void* item1,
                                              const void* item2));

void        ajListSortUnique(AjPList thys,
                             int (*compar1)(const void* item1,
                                            const void* item2),
                             void (*itemdel)(void** Pitem,
                                             void* cl));
void        ajListSortTwoUnique(AjPList thys,
                                int (*compar1)(const void* item1,
                                               const void* item2),
                                int (*compar2)(const void* item1,
                                               const void* item2),
                                void (*itemdel)(void** Pitem,
                                                void* cl));
void        ajListUnused(void** array);

/*
** End of prototype definitions
*/




#ifdef AJ_COMPILE_DEPRECATED_BOOK
#endif /* AJ_COMPILE_DEPRECATED_BOOK */

#ifdef AJ_COMPILE_DEPRECATED

__deprecated void        ajListPushList(AjPList list, AjPList* Plist);
__deprecated void        ajListstrPushList(AjPList list, AjPList* Plist);
__deprecated ajuint      ajListstrClone(const AjPList thys, AjPList newlist);
__deprecated AjPList     ajListNewArgs(void* x, ...);

__deprecated AjPListNode ajListNodesNew(void *x, ...);
__deprecated AjPList  ajListstrNewArgs(AjPStr x, ...);

__deprecated AjPList  ajListCopy(const AjPList list);
__deprecated void     ajListPushApp(AjPList list, void* item);

__deprecated void     ajListAppend(AjPList list, AjPListNode* tail);
__deprecated ajuint   ajListLength(const AjPList list);

__deprecated AjBool   ajListFirst(const AjPList thys, void** Pitem);
__deprecated AjBool   ajListLast(const AjPList thys, void** Pitem);
__deprecated AjBool   ajListNth(const AjPList thys, ajuint n, void** Pitem);
__deprecated AjBool   ajListPopEnd(AjPList thys, void** Pitem);
__deprecated void     ajListstrPushApp(AjPList list, AjPStr str);
__deprecated void     ajListDel(AjPList* Plist);
__deprecated AjBool   ajListstrPopEnd(AjPList thys, AjPStr* Pstr);
__deprecated ajuint   ajListstrToArray(const AjPList list, AjPStr** array);
__deprecated ajuint   ajListstrToArrayApp(const AjPList list, AjPStr** array);
__deprecated ajuint   ajListToArray(const AjPList list, void*** array);
__deprecated ajuint   ajListstrLength(const AjPList list);
__deprecated AjBool   ajListFind(const AjPList listhead,
                                 AjBool (*apply)(void** Pitem, void* cl),
                                 void* cl);
__deprecated AjBool   ajListstrFind(const AjPList listhead,
                                    AjBool (*apply)(AjPStr* Pstr, void* cl),
                                    void* cl);

__deprecated void     ajListMapRead(const AjPList list,
                                    void apply(void* item, void* cl),
                                    void* cl);
__deprecated void     ajListstrMapRead(const AjPList thys,
                                       void (*apply)(AjPStr str, void* cl),
                                       void* cl);

__deprecated void     ajListstrDel(AjPList* Plist);
__deprecated AjPList  ajListstrCopy(const AjPList list);

__deprecated AjIList  ajListIter(AjPList list);
__deprecated AjIList  ajListIterBack(AjPList list);
__deprecated AjIList  ajListIterBackRead(const AjPList list);
__deprecated AjIList  ajListIterRead(const AjPList list);
__deprecated AjBool   ajListIterBackDone(const AjIList iter);
__deprecated AjBool   ajListIterBackMore(const AjIList iter);
__deprecated void*    ajListIterBackNext(AjIList iter);
__deprecated void     ajListIterFree(AjIList* iter);
__deprecated AjBool   ajListIterMoreBack(const AjIList iter);
__deprecated AjBool   ajListIterMore(const AjIList iter);
__deprecated void*    ajListIterNext(AjIList iter);

__deprecated void     ajListInsert(AjIList iter, void* item);
__deprecated void     ajListRemove(AjIList iter);

__deprecated void     ajListstrInsert(AjIList iter, AjPStr str);
__deprecated void     ajListstrRemove(AjIList iter);
__deprecated void     ajListSort2(AjPList thys,
                                  int (*compar1)(const void* item1,
                                                 const void* item2),
                                  int (*compar2)(const void* item1,
                                                 const void* item2));
__deprecated void     ajListSort3(AjPList thys,
                                  int (*compar1)(const void* item1,
                                                 const void* item2),
                                  int (*compar2)(const void* item1,
                                                 const void* item2),
                                  int (*compar3)(const void* item1,
                                                 const void* item2));

__deprecated void     ajListUnique(AjPList thys,
                                   int (*compar)(const void* item1,
                                                 const void* item2),
                                   void (*itemdel)(void** Pitem,
                                                   void* cl));
__deprecated void     ajListUnique2(AjPList thys,
                                    int (*compar1)(const void* item1,
                                                   const void* item2),
                                    int (*compar2)(const void* item1,
                                                   const void* item2),
                                    void (*itemdel)(void** Pitem,
                                                    void* cl));

__deprecated void     ajListGarbageCollect(AjPList list,
                                           void (*itemdel)(void** Pitem),
                                           AjBool (*test)(const void* item));

#endif /* AJ_COMPILE_DEPRECATED */




AJ_END_DECLS

#endif /* !AJLIST_H */