Add page support to object pool

This commit is contained in:
2023-12-13 09:31:08 +01:00
parent 72b32b1a26
commit a2c19cf65d
5 changed files with 129 additions and 48 deletions

View File

@@ -5,18 +5,22 @@
typedef struct BzObjectPool BzObjectPool;
typedef void (*BzObjectPoolFunc)(void *object);
typedef struct BzObjectPoolDesc {
size_t objectSize;
size_t numObjects;
size_t objectsPerPage;
BzObjectPoolFunc constructor;
BzObjectPoolFunc destructor;
} BzObjectPoolDesc;
BzObjectPool *bzObjectPoolCreate(const BzObjectPoolDesc *desc);
void bzObjectPoolDestroy(BzObjectPool *pool);
size_t bzObjectPoolCalcNumFree(BzObjectPool *pool);
size_t bzObjectPoolGetNumFree(BzObjectPool *pool);
void *bzObjectPool(BzObjectPool *pool);
void *bzObjectPoolGetObject(BzObjectPool *pool, i32 idx);
i32 bzObjectPoolGetIdx(BzObjectPool *pool, void *object);
void *bzObjectPoolGetObject(BzObjectPool *pool, u32 idx);
u32 bzObjectPoolGetIdx(BzObjectPool *pool, void *object);
void bzObjectPoolRelease(BzObjectPool *pool, void *object);
#endif //BREEZE_OBJECT_POOL_H