SimpleAI
 All Classes Namespaces Files Functions Variables Typedefs Macros Groups Pages
MemoryAllocator.h
Go to the documentation of this file.
1 
4 #pragma once
5 
6 #include <memory>
7 
8 namespace ai {
9 
11 private:
13  }
14 public:
15  static inline void* allocate(size_t count) {
16  void* ptr = new unsigned char[count];
17  return ptr;
18  }
19 
20  static inline void deallocate(void* ptr) {
21  delete[] ((unsigned char*) ptr);
22  }
23 };
24 
25 template<class AllocatorClass>
26 class _MemObject {
27 public:
28  explicit _MemObject() {
29  }
30 
31  virtual ~_MemObject() {
32  }
33 
34  inline void* operator new(size_t size) {
35  return AllocatorClass::allocate(size);
36  }
37 
38  inline void* operator new(size_t, void* ptr) {
39  return ptr;
40  }
41 
42  inline void* operator new[](size_t size) {
43  return AllocatorClass::allocate(size);
44  }
45 
46  inline void operator delete(void* ptr) {
47  AllocatorClass::deallocate(ptr);
48  }
49 
50  inline void operator delete(void* ptr, void*) {
51  AllocatorClass::deallocate(ptr);
52  }
53 
54  inline void operator delete[](void* ptr) {
55  AllocatorClass::deallocate(ptr);
56  }
57 };
58 
63 #ifndef AI_ALLOCATOR_CLASS
64 #define AI_ALLOCATOR_CLASS _DefaultAllocator
65 #endif
66 
69 typedef _MemObject<AI_ALLOCATOR_CLASS> MemObject;
70 
71 }
Definition: MemoryAllocator.h:26
Definition: MemoryAllocator.h:10