diff options
author | Chris Robinson <[email protected]> | 2018-11-18 00:38:31 -0800 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2018-11-18 00:38:31 -0800 |
commit | d7cc9b912b71b17d6cd1bb9726673b79a4c0173a (patch) | |
tree | 591ba44cad8cf3d7d6ec2303c8fab49e954f5168 /common/almalloc.h | |
parent | 38d6df9c1d10ac74af3454c67147dd21bb0a7bb8 (diff) |
Use new/delete for ALCcontext objects
Diffstat (limited to 'common/almalloc.h')
-rw-r--r-- | common/almalloc.h | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/common/almalloc.h b/common/almalloc.h index a4297cf5..ad48db8b 100644 --- a/common/almalloc.h +++ b/common/almalloc.h @@ -3,28 +3,29 @@ #include <stddef.h> -#ifdef __cplusplus -extern "C" { -#endif - /* Minimum alignment required by posix_memalign. */ #define DEF_ALIGN sizeof(void*) void *al_malloc(size_t alignment, size_t size); void *al_calloc(size_t alignment, size_t size); -void al_free(void *ptr); +void al_free(void *ptr) noexcept; -size_t al_get_page_size(void); +size_t al_get_page_size(void) noexcept; /** * Returns non-0 if the allocation function has direct alignment handling. * Otherwise, the standard malloc is used with an over-allocation and pointer * offset strategy. */ -int al_is_sane_alignment_allocator(void); - -#ifdef __cplusplus -} -#endif +int al_is_sane_alignment_allocator(void) noexcept; + +#define DEF_NEWDEL(T) \ + void *operator new(size_t size) \ + { \ + void *ret = al_malloc(alignof(T), size); \ + if(!ret) throw std::bad_alloc(); \ + return ret; \ + } \ + void operator delete(void *block) noexcept { al_free(block); } #endif /* AL_MALLOC_H */ |