gwnavruntime/base/memory.h Source File
Go to the documentation of this file.
18 enum MemStatGroupStartEnum
20 MemStatGroupStart_NonGroup = 1 << 6,
21 MemStatGroupStart_World = 2 << 6,
22 MemStatGroupStart_Data = 3 << 6,
23 MemStatGroupStart_WorkingMem = 4 << 6,
24 MemStatGroupStart_VisualDebug = 5 << 6,
25 MemStatGroupStart_NavDataGen = 6 << 6,
26 MemStatGroupStart_GameKit = 7 << 6,
27 MemStatGroupStart_External = 8 << 6,
30 enum MemStatEnum_NonGroup
32 MemStat_BaseSystem = MemStatGroupStart_NonGroup
35 enum MemStatEnum_World
37 MemStatGroup_World = MemStatGroupStart_World,
41 MemStat_CylinderObstacle,
42 MemStat_PointOfInterest,
44 MemStat_PathFollowing,
51 MemStat_DynamicNavMesh,
52 MemStat_VisualDebugRegistry,
58 MemStatGroup_Data = MemStatGroupStart_Data,
64 MemStat_Spatialization,
66 MemStat_CollisionDataBlob,
67 MemStat_CollisionData,
72 enum MemStatEnum_WorkingMem
74 MemStatGroup_WorkingMem = MemStatGroupStart_WorkingMem,
75 MemStat_QueryWorkingMem,
79 enum MemStatEnum_VisualDebug
81 MemStatGroup_VisualDebug = MemStatGroupStart_VisualDebug,
84 MemStat_VisualDebugMessage,
87 MemStat_VisualDebug_Other,
90 enum MemStatEnum_NavDataGen
92 MemStatGroup_NavDataGen = MemStatGroupStart_NavDataGen,
96 enum MemStatEnum_GameKit
98 MemStatGroup_GameKit = MemStatGroupStart_GameKit,
102 enum MemStatEnum_External
104 MemStatGroup_External = MemStatGroupStart_External,
107 MemStat_NavigationLab,
118 #define KY_MALLOC(T, count, memStat) ( (T*)KY_ALLOC((sizeof(T) * (count)), memStat) )
119 #define KY_MALLOC_ALIGNED(T, count, alignment, memStat) ( (T*)KY_MEMALIGN((sizeof(T) * (count)), alignment, memStat) )
120 #define KY_HEAP_MALLOC(heap, T, n, memStat) ( (T*)KY_HEAP_ALLOC(heap, (sizeof(T) * (n)), memStat) )
126 #define KY_NEW_EXTERN(T, memStat) new(KY_ALLOC(sizeof(T), memStat)) T
127 #define KY_DELETE_EXTERN(T, p) if (p) { p->~T(); KY_FREE(p); }
132 #define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat) \
134 KY_MEMORY_REDEFINE_NEW(NavigationClass, MemStat) \
135 KY_MEMORY_DEFINE_PLACEMENT_NEW \
141 #define KY_REFCOUNT_MALLOC_FREE(ClassName) \
143 KY_INLINE void AddRef() { RefCount ++; } \
144 KY_INLINE void Release() \
146 if ((RefCount.fetch_add(-1) - 1) == 0) \
149 int GetRefCount() const { return RefCount; } \
152 static KY_INLINE ClassName* Create(char* memoryStart) \
154 ClassName* instance = (::new((ClassName*)memoryStart) ClassName()); \
155 if (instance) { instance->RefCount = 1; } \
159 mutable std::atomic<int> RefCount;
165 #ifdef KY_MEMORY_ENABLE_DEBUG_INFO
166 # define KY_NEW_ID(id) new(Kaim::Memory::GetGlobalHeap(), id, __FILE__,__LINE__)
168 # define KY_NEW_ID(id) new(Kaim::Memory::GetGlobalHeap(), id)
172 #define KY_DELETE_AND_SET_NULL(x) \
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17