From ef9d9a1720573321434f36b5ad1fabfd9f4c519e Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Wed, 2 Nov 2011 21:12:09 +0000 Subject: [PATCH] Add new operator that takes an ObjectCache* and allocation flags and template function object_cache_delete() to be used to delete objects constructed with it. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43132 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/kernel/slab/Slab.h | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/headers/private/kernel/slab/Slab.h b/headers/private/kernel/slab/Slab.h index a3eb79506a..b91486699b 100644 --- a/headers/private/kernel/slab/Slab.h +++ b/headers/private/kernel/slab/Slab.h @@ -68,4 +68,30 @@ void object_cache_get_usage(object_cache* cache, size_t* _allocatedMemory); } #endif + +#ifdef __cplusplus + +#include + + +inline void* +operator new(size_t size, ObjectCache* objectCache, uint32 flags) throw() +{ + return object_cache_alloc(objectCache, flags); +} + + +template +inline void +object_cache_delete(ObjectCache* objectCache, Type* object, uint32 flags = 0) +{ + if (object != NULL) { + object->~Type(); + object_cache_free(objectCache, object, flags); + } +} + +#endif // __cplusplus + + #endif /* _SLAB_SLAB_H_ */