1d6067f18SJiří Techet /* 2d6067f18SJiří Techet * Copyright (c) 1999-2002, Darren Hiebert 3d6067f18SJiří Techet * 4d6067f18SJiří Techet * This source code is released for free distribution under the terms of the 5d6067f18SJiří Techet * GNU General Public License version 2 or (at your option) any later version. 6d6067f18SJiří Techet * 7d6067f18SJiří Techet * Defines external interface to resizable pointer arrays. 8d6067f18SJiří Techet */ 9d6067f18SJiří Techet #ifndef CTAGS_MAIN_PTRARRAY_H 10d6067f18SJiří Techet #define CTAGS_MAIN_PTRARRAY_H 11d6067f18SJiří Techet 12d6067f18SJiří Techet /* 13d6067f18SJiří Techet * INCLUDE FILES 14d6067f18SJiří Techet */ 15d6067f18SJiří Techet #include "general.h" /* must always come first */ 16f60f4e0bSMasatake YAMATO #include "types.h" 17d6067f18SJiří Techet 18d6067f18SJiří Techet /* 19d6067f18SJiří Techet * DATA DECLARATIONS 20d6067f18SJiří Techet */ 213b6b66a2SMasatake YAMATO struct sPtrArray; 223b6b66a2SMasatake YAMATO typedef struct sPtrArray ptrArray; 23d6067f18SJiří Techet 24d6067f18SJiří Techet typedef void (*ptrArrayDeleteFunc) (void *data); 25d6067f18SJiří Techet 26d6067f18SJiří Techet 27d6067f18SJiří Techet /* 28d6067f18SJiří Techet * FUNCTION PROTOTYPES 29d6067f18SJiří Techet */ 30d6067f18SJiří Techet 31d6067f18SJiří Techet extern ptrArray *ptrArrayNew (ptrArrayDeleteFunc deleteFunc); 32b47ea137SMasatake YAMATO extern unsigned int ptrArrayAdd (ptrArray *const current, void *ptr); 33*e460488fSMasatake YAMATO extern bool ptrArrayUpdate (ptrArray *const current, unsigned int indx, void *ptr, void *padding); 3483463ee4SMasatake YAMATO extern void *ptrArrayRemoveLast (ptrArray *const current); 3569043684SMasatake YAMATO #define ptrArrayDeleteLast(A) ptrArrayDeleteLastInBatch(A, 1) 3669043684SMasatake YAMATO extern void ptrArrayDeleteLastInBatch (ptrArray *const current, unsigned int count); 37d6067f18SJiří Techet extern void ptrArrayCombine (ptrArray *const current, ptrArray *const from); 38d6067f18SJiří Techet extern void ptrArrayClear (ptrArray *const current); 39d6067f18SJiří Techet extern unsigned int ptrArrayCount (const ptrArray *const current); 40379eab4eSMasatake YAMATO #define ptrArrayIsEmpty(A) (ptrArrayCount(A) == 0) 41d6067f18SJiří Techet extern void* ptrArrayItem (const ptrArray *const current, const unsigned int indx); 42f3291056SMasatake YAMATO extern void* ptrArrayItemFromLast (const ptrArray *const current, const unsigned int indx); 43f3291056SMasatake YAMATO #define ptrArrayLast(A) ptrArrayItemFromLast(A, 0) 44d6067f18SJiří Techet extern void ptrArrayDelete (ptrArray *const current); 45d6067f18SJiří Techet extern bool ptrArrayHasTest (const ptrArray *const current, 46d6067f18SJiří Techet bool (*test)(const void *ptr, void *userData), 47d6067f18SJiří Techet void *userData); 48bb751a13SMasatake YAMATO extern bool ptrArrayHas (const ptrArray *const current, void *ptr); 49d6067f18SJiří Techet extern void ptrArrayReverse (const ptrArray *const current); 50d6067f18SJiří Techet extern void ptrArrayDeleteItem (ptrArray* const current, unsigned int indx); 519150e789SMasatake YAMATO extern void*ptrArrayRemoveItem (ptrArray* const current, unsigned int indx); 529150e789SMasatake YAMATO extern void ptrArrayInsertItem (ptrArray* const current, unsigned int indx, void *ptr); 53d6067f18SJiří Techet 54ad9b42bfSMasatake YAMATO extern void ptrArraySort (ptrArray *const current, int (*compare)(const void *, const void *)); 55ad9b42bfSMasatake YAMATO 56d6067f18SJiří Techet #endif /* CTAGS_MAIN_PTRARRAY_H */ 57