Files
TL/include/tl/memory.h
jeanlemotan 8297b0b45f First
2024-07-02 18:06:33 +02:00

54 lines
904 B
C++

#pragma once
#include "tl/detail/prologue.h"
#include "detail/internal_assert.h"
#include <type_traits>
#include <cassert>
#include <cstddef>
#include <cstdlib>
#if defined(TL_PLATFORM_WINDOWS_FAMILY)
#include <malloc.h>
#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
}
}