xref: /Universal-ctags/main/numarray.h (revision 090f0bb7b7842ff401067c62955c3c2701c816cd)
14ecf7bb9SMasatake YAMATO /*
24ecf7bb9SMasatake YAMATO *   Copyright (c) 1999-2002, Darren Hiebert
34ecf7bb9SMasatake YAMATO *
44ecf7bb9SMasatake YAMATO *   This source code is released for free distribution under the terms of the
54ecf7bb9SMasatake YAMATO *   GNU General Public License version 2 or (at your option) any later version.
64ecf7bb9SMasatake YAMATO *
74ecf7bb9SMasatake YAMATO *   Defines external interface to resizable pointer arrays.
84ecf7bb9SMasatake YAMATO */
94ecf7bb9SMasatake YAMATO #ifndef CTAGS_MAIN_NUMARRAY_H
104ecf7bb9SMasatake YAMATO #define CTAGS_MAIN_NUMARRAY_H
114ecf7bb9SMasatake YAMATO 
124ecf7bb9SMasatake YAMATO /*
134ecf7bb9SMasatake YAMATO *   INCLUDE FILES
144ecf7bb9SMasatake YAMATO */
154ecf7bb9SMasatake YAMATO #include "general.h"  /* must always come first */
164ecf7bb9SMasatake YAMATO 
174ecf7bb9SMasatake YAMATO 
184ecf7bb9SMasatake YAMATO #define declNumArray(prefix,Prefix,type)								\
194ecf7bb9SMasatake YAMATO 																		\
204ecf7bb9SMasatake YAMATO 	struct s##Prefix##Array;											\
214ecf7bb9SMasatake YAMATO 	typedef struct s##Prefix##Array prefix##Array;						\
224ecf7bb9SMasatake YAMATO 																		\
234ecf7bb9SMasatake YAMATO 	extern prefix##Array *prefix##ArrayNew (void);						\
24b47ea137SMasatake YAMATO 	extern unsigned int prefix##ArrayAdd (prefix##Array *const current, type num); \
254ecf7bb9SMasatake YAMATO 	extern void prefix##ArrayRemoveLast (prefix##Array *const current);	\
264ecf7bb9SMasatake YAMATO 	extern void prefix##ArrayCombine (prefix##Array *const current, prefix##Array *const from);	\
274ecf7bb9SMasatake YAMATO 	extern void prefix##ArrayClear (prefix##Array *const current);		\
284ecf7bb9SMasatake YAMATO 	extern unsigned int prefix##ArrayCount (const prefix##Array *const current); \
29*090f0bb7SMasatake YAMATO 	extern bool prefix##ArrayIsEmpty(const prefix##Array *const current); \
304ecf7bb9SMasatake YAMATO 	extern type prefix##ArrayItem (const prefix##Array *const current, const unsigned int indx); \
314ecf7bb9SMasatake YAMATO 	extern type prefix##ArrayLast (const prefix##Array *const current); \
324ecf7bb9SMasatake YAMATO 	extern void prefix##ArrayDelete (prefix##Array *const current);		\
334ecf7bb9SMasatake YAMATO 	extern bool prefix##ArrayHasTest (const prefix##Array *const current, \
344ecf7bb9SMasatake YAMATO 									  bool (*test)(const type num, void *userData), \
354ecf7bb9SMasatake YAMATO 									  void *userData);					\
364ecf7bb9SMasatake YAMATO 	extern bool prefix##ArrayHas (const prefix##Array *const current, type num); \
374ecf7bb9SMasatake YAMATO 	extern void prefix##ArrayReverse (const prefix##Array *const current); \
384ecf7bb9SMasatake YAMATO 	extern void prefix##ArrayDeleteItem (prefix##Array* const current, unsigned int indx); \
394ecf7bb9SMasatake YAMATO 	\
404ecf7bb9SMasatake YAMATO 	extern void prefix##ArraySort (prefix##Array *const current, bool descendingOrder);
414ecf7bb9SMasatake YAMATO 
42e4f99c14SColomban Wendling declNumArray(char, Char, char)
43e4f99c14SColomban Wendling declNumArray(uchar, Uchar, unsigned char)
44e4f99c14SColomban Wendling declNumArray(int, Int, int)
45e4f99c14SColomban Wendling declNumArray(uint, Uint, unsigned int)
46e4f99c14SColomban Wendling declNumArray(long, Long, long)
47e4f99c14SColomban Wendling declNumArray(ulong, Ulong, unsigned long)
484ecf7bb9SMasatake YAMATO 
494ecf7bb9SMasatake YAMATO #endif  /* CTAGS_MAIN_NUMARRAY_H */
50