From fcf83dbf9effab3bd98bad2b83b2468b7eb05cfd Mon Sep 17 00:00:00 2001 From: Tim Foley Date: Fri, 9 Jun 2017 11:34:21 -0700 Subject: Initial import of code. --- source/core/allocator.h | 62 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 source/core/allocator.h (limited to 'source/core/allocator.h') diff --git a/source/core/allocator.h b/source/core/allocator.h new file mode 100644 index 000000000..d4dfcf5a9 --- /dev/null +++ b/source/core/allocator.h @@ -0,0 +1,62 @@ +#ifndef CORE_LIB_ALLOCATOR_H +#define CORE_LIB_ALLOCATOR_H + +#include + +namespace CoreLib +{ + namespace Basic + { + inline void * AlignedAlloc(size_t size, size_t alignment) + { +#ifdef _MSC_VER + return _aligned_malloc(size, alignment); +#else + void * rs = 0; + int succ = posix_memalign(&rs, alignment, size); + if (succ!=0) + rs = 0; + return rs; +#endif + } + + inline void AlignedFree(void * ptr) + { +#ifdef _MSC_VER + _aligned_free(ptr); +#else + free(ptr); +#endif + } + + class StandardAllocator + { + public: + // not really called + void * Alloc(size_t size) + { + return malloc(size); + } + void Free(void * ptr) + { + return free(ptr); + } + }; + + template + class AlignedAllocator + { + public: + void * Alloc(size_t size) + { + return AlignedAlloc(size, alignment); + } + void Free(void * ptr) + { + return AlignedFree(ptr); + } + }; + } +} + +#endif \ No newline at end of file -- cgit v1.2.3