/usr/include/snacc/c/asn-list.h is in libsnacc-dev 1.3.1-5.
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 | /*
* asn_list.h
*
* ---------
* | AsnList |
* | last |-------------------------------------------|
* | curr |--------------------------| |
* | first|--------| | |
* --------- | | |
* V V V
* --------- --------- ---------
* |AsnListNode |AsnListNode |AsnListNode
* | next |---...->| next |--...-->| next |-----|i.
* .i|----| prev |<--...--| prev |<--...--| prev |
* | data | | data | | data |
* --------- --------- ---------
*
* Originally by Murray Goldberg
* Modified for ASN.1 use.
* MS 92
* Copyright (C) 1992 the University of British Columbia
*
* This library is free software; you can redistribute it and/or
* modify it provided that this copyright/license information is retained
* in original form.
*
* If you modify this file, you must clearly indicate your changes.
*
* This source code 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.
*
* $Header: /usr/app/odstb/CVS/snacc/c-lib/inc/asn-list.h,v 1.3 1995/07/24 21:01:14 rj Exp $
* $Log: asn-list.h,v $
* Revision 1.3 1995/07/24 21:01:14 rj
* changed `_' to `-' in file names.
*
* Revision 1.2 1994/10/08 01:40:22 rj
* it is unwise to #define unbalanced if()s! (fixed.)
* three declarations added.
*
* Revision 1.1 1994/08/28 09:21:30 rj
* first check-in. for a list of changes to the snacc-1.1 distribution please refer to the ChangeLog.
*
*/
#ifndef _asn_list_h_
#define _asn_list_h_
typedef struct AsnListNode
{
struct AsnListNode *prev;
struct AsnListNode *next;
void *data; /* this must be the last field of this structure */
} AsnListNode;
typedef struct AsnList
{
AsnListNode *first;
AsnListNode *last;
AsnListNode *curr;
int count; /* number of elements in list */
int dataSize; /* space required in each node for the data */
} AsnList;
#define FOR_EACH_LIST_ELMT( elmt, al)\
if (!(al))\
;\
else\
for ((al)->curr = (al)->first; (al)->curr && ((elmt) = (void *)(al)->curr->data); (al)->curr = (al)->curr->next)
#define FOR_EACH_LIST_ELMT_RVS( elmt, al)\
if (!(al))\
;\
else\
for ((al)->curr = (al)->last; (al)->curr && ((elmt) = (void *)(al)->curr->data); (al)->curr = (al)->curr->prev)
#define FOR_REST_LIST_ELMT( elmt, al)\
if (!(al))\
;\
else\
for (; (al)->curr && ((elmt) = (void *)(al)->curr->data); (al)->curr = (al)->curr->next)
#define FOR_REST_LIST_ELMT_RVS( elmt, al)\
if (!(al))\
;\
else\
for (; ((al)->curr && ((elmt) = (void *)(al)->curr->data); (al)->curr = (al)->curr->prev)
/*
* The following macros return the pointer stored in the
* data part of the listNode. The do not change the current
* list pointer.
*/
#define CURR_LIST_ELMT( al) ((al)->curr->data)
#define NEXT_LIST_ELMT( al) ((al)->curr->next->data)
#define PREV_LIST_ELMT( al) ((al)->curr->prev->data)
#define LAST_LIST_ELMT( al) ((al)->last->data)
#define FIRST_LIST_ELMT( al) ((al)->first->data)
#define LIST_EMPTY( al) ((al)->count == 0)
#define LIST_COUNT( al) ((al)->count)
/*
* list nodes are the parts of the list that contain ptrs/data
* to/of the list elmts.
*/
#define CURR_LIST_NODE( al) ((al)->curr)
#define FIRST_LIST_NODE( al) ((al)->first)
#define LAST_LIST_NODE( al) ((al)->last)
#define PREV_LIST_NODE( al) ((al)->curr->prev)
#define NEXT_LIST_NODE( al) ((al)->curr->next)
#define SET_CURR_LIST_NODE( al, listNode) ((al)->curr = (listNode))
void AsnListRemove PROTO ((AsnList *));
void *AsnListAdd PROTO ((AsnList *));
void *AsnListInsert PROTO ((AsnList *));
void AsnListInit PROTO ((AsnList *list, int dataSize));
AsnList *AsnListNew PROTO ((int));
void *AsnListPrev PROTO ((AsnList *));
void *AsnListNext PROTO ((AsnList *));
void *AsnListLast PROTO ((AsnList *));
void *AsnListFirst PROTO ((AsnList *));
void *AsnListPrepend PROTO ((AsnList *));
void *AsnListAppend PROTO ((AsnList *));
void *AsnListCurr PROTO ((AsnList *));
int AsnListCount PROTO ((AsnList *));
AsnList *AsnListConcat PROTO ((AsnList *, AsnList *));
long int GetAsnListElmtIndex PROTO ((void *elmt,AsnList *list));
void AsnListFree PROTO (( AsnList *));
void *GetAsnListElmt PROTO ((AsnList *list, unsigned int index));
#endif /* conditional include */
|