prime/include/rstl/rmemory_allocator.hpp

41 lines
937 B
C++

#ifndef _RSTL_RMEMORY_ALLOCATOR
#define _RSTL_RMEMORY_ALLOCATOR
#include "types.h"
#include "Kyoto/Alloc/CMemory.hpp"
namespace rstl {
struct rmemory_allocator {
rmemory_allocator() {}
rmemory_allocator(const rmemory_allocator&) {}
template < typename T >
static void allocate(T*& out, int count) {
int size = count * sizeof(T);
if (size == 0) {
out = nullptr;
} else {
out = reinterpret_cast< T* >(rs_new uchar[size]);
}
}
// TODO: this fixes a regswap in vector::reserve
template < typename T >
static T* allocate2(int count) {
int size = count * sizeof(T);
if (size == 0) {
return nullptr;
} else {
return reinterpret_cast< T* >(rs_new uchar[size]);
}
}
template < typename T >
static void deallocate(T* ptr) {
if (ptr != nullptr) {
delete[] reinterpret_cast< uchar* >(ptr);
}
}
};
} // namespace rstl
#endif // _RSTL_RMEMORY_ALLOCATOR