/usr/include/osp/osplist.h is in libosptk3-dev 3.4.2-1.2.
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 | /**************************************************************************
*** COPYRIGHT (c) 2002 by TransNexus, Inc. ***
*** ***
*** This software is property of TransNexus, Inc. ***
*** This software is freely available under license from TransNexus. ***
*** The license terms and conditions for free use of this software by ***
*** third parties are defined in the OSP Toolkit Software License ***
*** Agreement (LICENSE.txt). Any use of this software by third ***
*** parties, which does not comply with the terms and conditions of the ***
*** OSP Toolkit Software License Agreement is prohibited without ***
*** the prior, express, written consent of TransNexus, Inc. ***
*** ***
*** Thank you for using the OSP ToolKit(TM). Please report any bugs, ***
*** suggestions or feedback to support@transnexus.com ***
*** ***
**************************************************************************/
/*
* osplist.h - Structures and prototypes for linked lists.
*/
#ifndef osplist_h
#define osplist_h
#include "osp/osp.h"
/*
* This module provides simple, linked list utility functions
* used through the OSP library. This file defines the two
* structures used to manipulate lists. The ListLink structure
* contains the information needed to maintain the linked
* list. IT MUST BE THE FIRST FIELD OF ANY STRUCTURE THAT
* IS TO MAINTAINED IN A LIST. The second structure is the
* List structure, which holds the pointers to the elements
* that make up the list. Note that, a la Knuth, the List
* structure actually points to the last item on the list,
* which is then circularly linked to the first item. This
* approach minimizes the time needed to find either the
* front (2 memory references) or back (1 memory reference)
* of the list.
*/
typedef struct OSPSListLink
{
struct OSPSListLink *ospmLinkNext;
}
OSPTLISTLINK;
typedef OSPTLISTLINK *OSPTLIST;
/**/
/*-----------------------------------------------------------------------*/
/* true macros */
/*-----------------------------------------------------------------------*/
#define OSPPListItemInList(List,InItem,ItemFld,ItemSize,PtrType,Found) { \
PtrType *item = OSPC_OSNULL; \
int result = 0; \
for (item = (PtrType *)OSPPListFirst(List); item != OSPC_OSNULL; \
item = (PtrType *)OSPPListNext(List, item)) \
{ \
result = OSPM_MEMCMP(InItem->ItemFld, item->ItemFld, ItemSize); \
if (result == 0) \
{ \
Found = OSPC_TRUE; \
break; \
} \
} \
}
/**/
/*-----------------------------------------------------------------------*/
/* function prototypes */
/*-----------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C"
{
#endif
void OSPPListAppend (OSPTLIST *, void *);
void *OSPPListRemove (OSPTLIST *);
void *OSPPListRemoveSpecificItem (OSPTLIST *, void *);
unsigned OSPPListCount(OSPTLIST *);
void *OSPPListNextToLast(OSPTLIST *);
void OSPPListLinkNew (OSPTLISTLINK *);
void OSPPListNew (OSPTLIST *);
void OSPPListDelete (OSPTLIST *);
unsigned OSPPListEmpty (OSPTLIST *);
void *OSPPListLast (OSPTLIST *);
void *OSPPListFirst (OSPTLIST *);
void *OSPPListNext (OSPTLIST *, void *);
void OSPPListMove (OSPTLIST *, OSPTLIST *);
#ifdef __cplusplus
}
#endif
#endif /* osplist_h */
|