gwnavruntime/base/memory.h Source File
Go to the documentation of this file.
10 #ifndef Navigation_Memory_H
11 #define Navigation_Memory_H
21 enum MemStatGroupStartEnum
23 MemStatGroupStart_NonGroup = 1 << 6,
24 MemStatGroupStart_World = 2 << 6,
25 MemStatGroupStart_Data = 3 << 6,
26 MemStatGroupStart_WorkingMem = 4 << 6,
27 MemStatGroupStart_VisualDebug = 5 << 6,
28 MemStatGroupStart_NavDataGen = 6 << 6,
29 MemStatGroupStart_GameKit = 7 << 6,
30 MemStatGroupStart_External = 8 << 6,
33 enum MemStatEnum_NonGroup
35 MemStat_BaseSystem = MemStatGroupStart_NonGroup
38 enum MemStatEnum_World
40 MemStatGroup_World = MemStatGroupStart_World,
44 MemStat_CylinderObstacle,
45 MemStat_PointOfInterest,
47 MemStat_PathFollowing,
54 MemStat_DynamicNavMesh,
55 MemStat_VisualDebugRegistry,
61 MemStatGroup_Data = MemStatGroupStart_Data,
67 MemStat_Spatialization,
69 MemStat_CollisionDataBlob,
70 MemStat_CollisionData,
75 enum MemStatEnum_WorkingMem
77 MemStatGroup_WorkingMem = MemStatGroupStart_WorkingMem,
78 MemStat_QueryWorkingMem,
82 enum MemStatEnum_VisualDebug
84 MemStatGroup_VisualDebug = MemStatGroupStart_VisualDebug,
87 MemStat_VisualDebugMessage,
90 MemStat_VisualDebug_Other,
93 enum MemStatEnum_NavDataGen
95 MemStatGroup_NavDataGen = MemStatGroupStart_NavDataGen,
99 enum MemStatEnum_GameKit
101 MemStatGroup_GameKit = MemStatGroupStart_GameKit,
105 enum MemStatEnum_External
107 MemStatGroup_External = MemStatGroupStart_External,
110 MemStat_NavigationLab,
116 void LinkMemoryStats();
123 #define KY_MALLOC(T, count, memStat) ( (T*)KY_ALLOC((sizeof(T) * (count)), memStat) )
124 #define KY_MALLOC_ALIGNED(T, count, alignment, memStat) ( (T*)KY_MEMALIGN((sizeof(T) * (count)), alignment, memStat) )
125 #define KY_HEAP_MALLOC(heap, T, n, memStat) ( (T*)KY_HEAP_ALLOC(heap, (sizeof(T) * (n)), memStat) )
131 #define KY_NEW_EXTERN(T, memStat) new(KY_ALLOC(sizeof(T), memStat)) T
132 #define KY_DELETE_EXTERN(T, p) if (p) { p->~T(); KY_FREE(p); }
137 #define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat) \
139 KY_MEMORY_REDEFINE_NEW(NavigationClass, MemStat) \
140 KY_MEMORY_DEFINE_PLACEMENT_NEW \
145 #define KY_REFCOUNT_MALLOC_FREE(ClassName) \
147 KY_INLINE void AddRef() { RefCount ++; } \
148 KY_INLINE void Release() \
150 if ((RefCount.ExchangeAdd_NoSync(-1) - 1) == 0) \
153 int GetRefCount() const { return RefCount; } \
156 static KY_INLINE ClassName* Create(char* memoryStart) \
158 ClassName* instance = (::new((ClassName*)memoryStart) ClassName()); \
159 if (instance) instance->RefCount = 1; \
163 mutable AtomicInt<int> RefCount;
169 #ifdef KY_MEMORY_ENABLE_DEBUG_INFO
170 # define KY_NEW_ID(id) new(Kaim::Memory::GetGlobalHeap(), id, __FILE__,__LINE__)
172 # define KY_NEW_ID(id) new(Kaim::Memory::GetGlobalHeap(), id)
176 #define KY_DELETE_AND_SET_NULL(x) \
Definition: gamekitcrowddispersion.h:20