xref: /Universal-ctags/main/objpool.h (revision e013efc125e8f9eb50fe3e63e8c4146ef731f9b2)
188a360acSJiří Techet /*
288a360acSJiří Techet *   Copyright (c) 2016, Jiri Techet
388a360acSJiří Techet *
488a360acSJiří Techet *   This source code is released for free distribution under the terms of the
588a360acSJiří Techet *   GNU General Public License version 2 or (at your option) any later version.
688a360acSJiří Techet *
788a360acSJiří Techet *   Defines generic pool for object reuse reducing the amount of allocations
888a360acSJiří Techet *   and deallocations.
988a360acSJiří Techet */
1088a360acSJiří Techet #ifndef CTAGS_MAIN_OBJPOOL_H
1188a360acSJiří Techet #define CTAGS_MAIN_OBJPOOL_H
1288a360acSJiří Techet 
1388a360acSJiří Techet /*
1488a360acSJiří Techet *   INCLUDE FILES
1588a360acSJiří Techet */
1688a360acSJiří Techet #include "general.h"  /* must always come first */
1788a360acSJiří Techet 
1888a360acSJiří Techet #include "ptrarray.h"
1988a360acSJiří Techet 
2088a360acSJiří Techet /*
2188a360acSJiří Techet *   DATA DECLARATIONS
2288a360acSJiří Techet */
23*e013efc1SMasatake YAMATO typedef void * (*objPoolCreateFunc) (void *createArg);
2488a360acSJiří Techet typedef void (*objPoolDeleteFunc) (void *data);
2588a360acSJiří Techet typedef void (*objPoolClearFunc) (void *data);
2688a360acSJiří Techet 
2788a360acSJiří Techet struct sObjPool;
2888a360acSJiří Techet typedef struct sObjPool objPool;
2988a360acSJiří Techet 
3088a360acSJiří Techet /*
3188a360acSJiří Techet *   FUNCTION PROTOTYPES
3288a360acSJiří Techet */
3388a360acSJiří Techet extern objPool *objPoolNew (unsigned int size,
34*e013efc1SMasatake YAMATO 	objPoolCreateFunc createFunc, objPoolDeleteFunc deleteFunc, objPoolClearFunc clearFunc,
35*e013efc1SMasatake YAMATO 	void *createArg);
3688a360acSJiří Techet extern void objPoolDelete (objPool *pool);
3788a360acSJiří Techet extern void *objPoolGet (objPool *pool);
3888a360acSJiří Techet extern void objPoolPut (objPool *pool, void *obj);
3988a360acSJiří Techet 
4088a360acSJiří Techet #endif  /* CTAGS_MAIN_OBJPOOL_H */
41