OpenBarnyard
 
Loading...
Searching...
No Matches
T2Allocator.h
Go to the documentation of this file.
1#pragma once
2#include "Toshi/Typedefs.h"
3
5
7{
8public:
9 virtual void* Malloc( size_t size, size_t alignment ) = 0;
10 virtual void* Malloc( size_t size ) = 0;
11 virtual void Free( void* ptr ) = 0;
12 virtual TBOOL CanAllocate( size_t size ) const = 0;
13 virtual void* TryMalloc( size_t size, size_t alignment ) = 0;
14 virtual void* TryMalloc( size_t size ) = 0;
15 virtual size_t GetUsedSize() const = 0;
16 virtual size_t GetCapacity() const = 0;
17
18 template <class T, class... Args>
19 T* New( Args&&... args )
20 {
21 void* mem = Malloc( sizeof( T ) );
22 T* object = new ( mem ) T( std::forward<Args>( args )... );
23 return object;
24 }
25
26 template <class T>
27 void Delete( T* ptr )
28 {
29 ptr->~T();
30 Free( ptr );
31 }
32};
33
35{
36public:
37 virtual void* Malloc( size_t size, size_t alignment ) override;
38 virtual void* Malloc( size_t size ) override;
39 virtual void Free( void* ptr ) override;
40 virtual TBOOL CanAllocate( size_t size ) const override;
41 virtual void* TryMalloc( size_t size, size_t alignment ) override;
42 virtual void* TryMalloc( size_t size ) override;
43 virtual size_t GetUsedSize() const override;
44 virtual size_t GetCapacity() const override;
45};
46
48
53
#define TOSHI_API
Definition Defines.h:41
#define TOSHI_NAMESPACE_START
Definition Defines.h:47
#define TFORCEINLINE
Definition Defines.h:74
#define TOSHI_NAMESPACE_END
Definition Defines.h:50
T2GlobalAllocator ms_oGlobalAllocator
TFORCEINLINE T2Allocator * GetGlobalAllocator()
Definition T2Allocator.h:49
bool TBOOL
Definition Typedefs.h:6
virtual size_t GetUsedSize() const =0
virtual void Free(void *ptr)=0
virtual void * Malloc(size_t size)=0
virtual size_t GetCapacity() const =0
virtual void * TryMalloc(size_t size, size_t alignment)=0
virtual TBOOL CanAllocate(size_t size) const =0
virtual void * Malloc(size_t size, size_t alignment)=0
virtual void * TryMalloc(size_t size)=0
void Delete(T *ptr)
Definition T2Allocator.h:27
T * New(Args &&... args)
Definition T2Allocator.h:19
virtual size_t GetUsedSize() const override
virtual void * Malloc(size_t size, size_t alignment) override
virtual TBOOL CanAllocate(size_t size) const override
virtual void * TryMalloc(size_t size, size_t alignment) override
virtual size_t GetCapacity() const override
virtual void Free(void *ptr) override