#pragma once #include "tl/detail/prologue.h" #include "detail/internal_assert.h" #include #include #include #include #if defined(TL_PLATFORM_WINDOWS_FAMILY) #include #endif namespace tl { inline bool is_aligned(void* ptr, size_t alignment) { size_t space = 1; return tl::align(alignment, space, ptr, space); } inline void aligned_free16(void* p) noexcept { #if defined(TL_PLATFORM_WINDOWS_FAMILY) ::_aligned_free(p); #else ::free(p); #endif } inline void* aligned_alloc16(size_t size) noexcept { #if defined(TL_PLATFORM_WINDOWS_FAMILY) return ::_aligned_malloc(size, 16); #else return malloc(size); #endif } inline void* aligned_realloc16(void* p, size_t new_size) noexcept { #if defined(TL_PLATFORM_WINDOWS_FAMILY) return ::_aligned_realloc(p, new_size, 16); #else return realloc(p, new_size); #endif } }