Faro Engine 0.0.0.b519570 (main)
Loading...
Searching...
No Matches
MemoryManager.hpp
Go to the documentation of this file.
1#pragma once
2#include <cstdlib>
3#include <cstring>
4#include "Object.hpp"
5#include "../Primitives.hpp"
6
7namespace Faro
8{
10 {
11 public:
12 template<class T, typename... Args>
13 static T* New(Args... args)
14 {
15 T* obj = static_cast<T*>(Alloc(sizeof(T)));
16 return new (obj) T(args...);
17 }
18
19 template<class T>
20 static T* Alloc(uint32 amount)
21 {
22 return static_cast<T*>(Alloc(sizeof(T) * amount));
23 }
24
25 static void* Alloc(uint32 size);
26
27 static void Free(void* address);
28
29 template<class T>
30 static void Delete(T* address)
31 {
32 address->~T();
33 Free(address);
34 }
35
36 template<class T>
37 static void Set(T* address, uint8 value, uint32 amount)
38 {
39 std::memset((void*)address, value, sizeof(T) * amount);
40 }
41
42 template<class T>
43 static void Zero(T* address, uint32 amount = 1)
44 {
45 Set<T>(address, 0, amount);
46 }
47
48 template<class T>
49 static void SafeDelete(T*& objectPtr)
50 {
51 if (objectPtr != nullptr)
52 {
53 objectPtr->Destroy();
54 objectPtr = nullptr;
55 }
56 }
57
58 template<class T>
59 static void Copy(T* source, T* destination, uint32 elementCount = 1)
60 {
61 memcpy((void*)destination, (void*)source, sizeof(T) * elementCount);
62 }
63 };
64}
Definition MemoryManager.hpp:10
static void Copy(T *source, T *destination, uint32 elementCount=1)
Definition MemoryManager.hpp:59
static void Free(void *address)
Definition MemoryManager.cpp:8
static void Set(T *address, uint8 value, uint32 amount)
Definition MemoryManager.hpp:37
static T * Alloc(uint32 amount)
Definition MemoryManager.hpp:20
static void SafeDelete(T *&objectPtr)
Definition MemoryManager.hpp:49
static void Delete(T *address)
Definition MemoryManager.hpp:30
static void Zero(T *address, uint32 amount=1)
Definition MemoryManager.hpp:43
static T * New(Args... args)
Definition MemoryManager.hpp:13
Definition Array.hpp:8
uint32_t uint32
Definition Primitives.hpp:12
uint8_t uint8
Definition Primitives.hpp:6