29 #ifndef __MemoryAllocatorConfig_H__
30 #define __MemoryAllocatorConfig_H__
189 #if OGRE_MEMORY_ALLOCATOR == OGRE_MEMORY_ALLOCATOR_NEDPOOLING
204 #elif OGRE_MEMORY_ALLOCATOR == OGRE_MEMORY_ALLOCATOR_NED
215 template <MemoryCategory Cat>
class CategorisedAllocPolicy :
public NedAllocPolicy{};
216 template <MemoryCategory Cat,
size_t align = 0>
class CategorisedAlignAllocPolicy :
public NedAlignedAllocPolicy<align>{};
219 #elif OGRE_MEMORY_ALLOCATOR == OGRE_MEMORY_ALLOCATOR_STD
230 template <MemoryCategory Cat>
class CategorisedAllocPolicy :
public StdAllocPolicy{};
231 template <MemoryCategory Cat,
size_t align = 0>
class CategorisedAlignAllocPolicy :
public StdAlignedAllocPolicy<align>{};
346 for (
size_t i = 0; i < count; ++i)
348 new ((
void*)(basePtr+i)) T();
368 # define OGRE_MALLOC(bytes, category) ::Ogre::CategorisedAllocPolicy<category>::allocateBytes(bytes, __FILE__, __LINE__, __FUNCTION__)
369 # define OGRE_ALLOC_T(T, count, category) static_cast<T*>(::Ogre::CategorisedAllocPolicy<category>::allocateBytes(sizeof(T)*(count), __FILE__, __LINE__, __FUNCTION__))
371 # define OGRE_FREE(ptr, category) ::Ogre::CategorisedAllocPolicy<category>::deallocateBytes((void*)ptr)
375 # define OGRE_NEW_T(T, category) new (::Ogre::CategorisedAllocPolicy<category>::allocateBytes(sizeof(T), __FILE__, __LINE__, __FUNCTION__)) T
376 # define OGRE_NEW_ARRAY_T(T, count, category) ::Ogre::constructN(static_cast<T*>(::Ogre::CategorisedAllocPolicy<category>::allocateBytes(sizeof(T)*(count), __FILE__, __LINE__, __FUNCTION__)), count)
378 # define OGRE_DELETE_T(ptr, T, category) if(ptr){(ptr)->~T(); ::Ogre::CategorisedAllocPolicy<category>::deallocateBytes((void*)ptr);}
380 # define OGRE_DELETE_ARRAY_T(ptr, T, count, category) if(ptr){for (size_t b = 0; b < count; ++b) { (ptr)[b].~T();} ::Ogre::CategorisedAllocPolicy<category>::deallocateBytes((void*)ptr);}
385 # define OGRE_MALLOC_SIMD(bytes, category) ::Ogre::CategorisedAlignAllocPolicy<category>::allocateBytes(bytes, __FILE__, __LINE__, __FUNCTION__)
386 # define OGRE_MALLOC_ALIGN(bytes, category, align) ::Ogre::CategorisedAlignAllocPolicy<category, align>::allocateBytes(bytes, __FILE__, __LINE__, __FUNCTION__)
388 # define OGRE_ALLOC_T_SIMD(T, count, category) static_cast<T*>(::Ogre::CategorisedAlignAllocPolicy<category>::allocateBytes(sizeof(T)*(count), __FILE__, __LINE__, __FUNCTION__))
390 # define OGRE_ALLOC_T_ALIGN(T, count, category, align) static_cast<T*>(::Ogre::CategorisedAlignAllocPolicy<category, align>::allocateBytes(sizeof(T)*(count), __FILE__, __LINE__, __FUNCTION__))
392 # define OGRE_FREE_SIMD(ptr, category) ::Ogre::CategorisedAlignAllocPolicy<category>::deallocateBytes(ptr)
394 # define OGRE_FREE_ALIGN(ptr, category, align) ::Ogre::CategorisedAlignAllocPolicy<category, align>::deallocateBytes(ptr)
398 # define OGRE_NEW_T_SIMD(T, category) new (::Ogre::CategorisedAlignAllocPolicy<category>::allocateBytes(sizeof(T), __FILE__, __LINE__, __FUNCTION__)) T
399 # define OGRE_NEW_ARRAY_T_SIMD(T, count, category) ::Ogre::constructN(static_cast<T*>(::Ogre::CategorisedAlignAllocPolicy<category>::allocateBytes(sizeof(T)*(count), __FILE__, __LINE__, __FUNCTION__)), count)
401 # define OGRE_DELETE_T_SIMD(ptr, T, category) if(ptr){(ptr)->~T(); ::Ogre::CategorisedAlignAllocPolicy<category>::deallocateBytes(ptr);}
403 # define OGRE_DELETE_ARRAY_T_SIMD(ptr, T, count, category) if(ptr){for (size_t b = 0; b < count; ++b) { (ptr)[b].~T();} ::Ogre::CategorisedAlignAllocPolicy<category>::deallocateBytes(ptr);}
405 # define OGRE_NEW_T_ALIGN(T, category, align) new (::Ogre::CategorisedAlignAllocPolicy<category, align>::allocateBytes(sizeof(T), __FILE__, __LINE__, __FUNCTION__)) T
407 # define OGRE_NEW_ARRAY_T_ALIGN(T, count, category, align) ::Ogre::constructN(static_cast<T*>(::Ogre::CategorisedAlignAllocPolicy<category, align>::allocateBytes(sizeof(T)*(count), __FILE__, __LINE__, __FUNCTION__)), count)
409 # define OGRE_DELETE_T_ALIGN(ptr, T, category, align) if(ptr){(ptr)->~T(); ::Ogre::CategorisedAlignAllocPolicy<category, align>::deallocateBytes(ptr);}
411 # define OGRE_DELETE_ARRAY_T_ALIGN(ptr, T, count, category, align) if(ptr){for (size_t _b = 0; _b < count; ++_b) { (ptr)[_b].~T();} ::Ogre::CategorisedAlignAllocPolicy<category, align>::deallocateBytes(ptr);}
417 # define OGRE_NEW new (__FILE__, __LINE__, __FUNCTION__)
418 # define OGRE_DELETE delete
421 #else // !OGRE_DEBUG_MODE
424 # define OGRE_MALLOC(bytes, category) ::Ogre::CategorisedAllocPolicy<category>::allocateBytes(bytes)
425 # define OGRE_ALLOC_T(T, count, category) static_cast<T*>(::Ogre::CategorisedAllocPolicy<category>::allocateBytes(sizeof(T)*(count)))
427 # define OGRE_FREE(ptr, category) ::Ogre::CategorisedAllocPolicy<category>::deallocateBytes((void*)ptr)
431 # define OGRE_NEW_T(T, category) new (::Ogre::CategorisedAllocPolicy<category>::allocateBytes(sizeof(T))) T
432 # define OGRE_NEW_ARRAY_T(T, count, category) ::Ogre::constructN(static_cast<T*>(::Ogre::CategorisedAllocPolicy<category>::allocateBytes(sizeof(T)*(count))), count)
434 # define OGRE_DELETE_T(ptr, T, category) if(ptr){(ptr)->~T(); ::Ogre::CategorisedAllocPolicy<category>::deallocateBytes((void*)ptr);}
436 # define OGRE_DELETE_ARRAY_T(ptr, T, count, category) if(ptr){for (size_t b = 0; b < count; ++b) { (ptr)[b].~T();} ::Ogre::CategorisedAllocPolicy<category>::deallocateBytes((void*)ptr);}
441 # define OGRE_MALLOC_SIMD(bytes, category) ::Ogre::CategorisedAlignAllocPolicy<category>::allocateBytes(bytes)
442 # define OGRE_MALLOC_ALIGN(bytes, category, align) ::Ogre::CategorisedAlignAllocPolicy<category, align>::allocateBytes(bytes)
444 # define OGRE_ALLOC_T_SIMD(T, count, category) static_cast<T*>(::Ogre::CategorisedAlignAllocPolicy<category>::allocateBytes(sizeof(T)*(count)))
446 # define OGRE_ALLOC_T_ALIGN(T, count, category, align) static_cast<T*>(::Ogre::CategorisedAlignAllocPolicy<category, align>::allocateBytes(sizeof(T)*(count)))
448 # define OGRE_FREE_SIMD(ptr, category) ::Ogre::CategorisedAlignAllocPolicy<category>::deallocateBytes((void*)ptr)
450 # define OGRE_FREE_ALIGN(ptr, category, align) ::Ogre::CategorisedAlignAllocPolicy<category, align>::deallocateBytes((void*)ptr)
454 # define OGRE_NEW_T_SIMD(T, category) new (::Ogre::CategorisedAlignAllocPolicy<category>::allocateBytes(sizeof(T))) T
455 # define OGRE_NEW_ARRAY_T_SIMD(T, count, category) ::Ogre::constructN(static_cast<T*>(::Ogre::CategorisedAlignAllocPolicy<category>::allocateBytes(sizeof(T)*(count))), count)
457 # define OGRE_DELETE_T_SIMD(ptr, T, category) if(ptr){(ptr)->~T(); ::Ogre::CategorisedAlignAllocPolicy<category>::deallocateBytes((void*)ptr);}
459 # define OGRE_DELETE_ARRAY_T_SIMD(ptr, T, count, category) if(ptr){for (size_t b = 0; b < count; ++b) { (ptr)[b].~T();} ::Ogre::CategorisedAlignAllocPolicy<category>::deallocateBytes((void*)ptr);}
461 # define OGRE_NEW_T_ALIGN(T, category, align) new (::Ogre::CategorisedAlignAllocPolicy<category, align>::allocateBytes(sizeof(T))) T
463 # define OGRE_NEW_ARRAY_T_ALIGN(T, count, category, align) ::Ogre::constructN(static_cast<T*>(::Ogre::CategorisedAlignAllocPolicy<category, align>::allocateBytes(sizeof(T)*(count))), count)
465 # define OGRE_DELETE_T_ALIGN(ptr, T, category, align) if(ptr){(ptr)->~T(); ::Ogre::CategorisedAlignAllocPolicy<category, align>::deallocateBytes((void*)ptr);}
467 # define OGRE_DELETE_ARRAY_T_ALIGN(ptr, T, count, category, align) if(ptr){for (size_t _b = 0; _b < count; ++_b) { (ptr)[_b].~T();} ::Ogre::CategorisedAlignAllocPolicy<category, align>::deallocateBytes((void*)ptr);}
471 # define OGRE_NEW new
472 # define OGRE_DELETE delete
474 #endif // OGRE_DEBUG_MODE
GeneralAllocatedObject DynLibAlloc
ScriptingAllocatedObject AbstractNodeAlloc
ScriptingAllocatedObject ScriptTranslatorAlloc
GeneralAllocatedObject LogAlloc
SceneCtlAllocatedObject ShadowDataAlloc
ResourceAllocatedObject ResourceAlloc
AnimationAllocatedObject AnimableAlloc
GeneralAllocatedObject UtilityAlloc
CategorisedAllocPolicy< Ogre::MEMCATEGORY_GEOMETRY > GeometryAllocPolicy
GeometryAllocatedObject ProgMeshAlloc
AllocatedObject< SceneObjAllocPolicy > SceneObjAllocatedObject
RenderSysAllocatedObject ViewportAlloc
CategorisedAllocPolicy< Ogre::MEMCATEGORY_SCENE_OBJECTS > SceneObjAllocPolicy
Animation data like tracks, bone matrices.
AllocatedObject< AnimationAllocPolicy > AnimationAllocatedObject
SceneObjAllocatedObject SubEntityAlloc
SceneCtlAllocatedObject LodAlloc
ResourceAllocatedObject TechniqueAlloc
ResourceAllocatedObject CompositorInstAlloc
SceneObjAllocatedObject OverlayAlloc
GeneralAllocatedObject PluginAlloc
GeneralAllocatedObject ConfigAlloc
ResourceAllocatedObject TextureUnitStateAlloc
RenderSysAllocatedObject RenderSysAlloc
GeneralAllocatedObject ProfilerAlloc
ResourceAllocatedObject PassAlloc
MemoryCategory
A set of categories that indicate the purpose of a chunk of memory being allocated.
RenderSysAllocatedObject GpuParamsAlloc
GeneralAllocatedObject CodecAlloc
GeometryAllocatedObject BatchedGeometryAlloc
CategorisedAllocPolicy< Ogre::MEMCATEGORY_GENERAL > GeneralAllocPolicy
CategorisedAllocPolicy< Ogre::MEMCATEGORY_SCENE_CONTROL > SceneCtlAllocPolicy
CategorisedAllocPolicy< Ogre::MEMCATEGORY_RESOURCE > ResourceAllocPolicy
SceneObjAllocatedObject MovableAlloc
An allocation policy for use with AllocatedObject and STLAllocator.
T * constructN(T *basePtr, size_t count)
Utility function for constructing an array of objects with placement new, without using new[] (which ...
GeneralAllocatedObject TimerAlloc
AllocatedObject< ResourceAllocPolicy > ResourceAllocatedObject
Superclass for all objects that wish to use custom memory allocators when their new / delete operator...
ScriptingAllocatedObject ScriptCompilerAlloc
CategorisedAllocPolicy< Ogre::MEMCATEGORY_ANIMATION > AnimationAllocPolicy
GeneralAllocatedObject RootAlloc
GeometryAllocatedObject VertexDataAlloc
SceneCtlAllocatedObject NodeAlloc
ResourceAllocatedObject SubMeshAlloc
AllocatedObject< GeneralAllocPolicy > GeneralAllocatedObject
GeneralAllocatedObject SerializerAlloc
GeometryAllocatedObject IndexDataAlloc
GeometryAllocatedObject DebugGeomAlloc
AnimationAllocatedObject AnimationAlloc
AllocatedObject< GeometryAllocPolicy > GeometryAllocatedObject
RenderSysAllocatedObject BufferAlloc
SceneCtlAllocatedObject SceneMgtAlloc
Geometry held in main memory.
AllocatedObject< SceneCtlAllocPolicy > SceneCtlAllocatedObject
GeneralAllocatedObject StreamAlloc
GeometryAllocatedObject PatchAlloc
SceneCtlAllocatedObject RenderQueueAlloc
GeneralAllocatedObject ImageAlloc
GeometryAllocatedObject EdgeDataAlloc
An allocation policy for use with AllocatedObject and STLAllocator, which aligns memory at a given bo...
CategorisedAllocPolicy< Ogre::MEMCATEGORY_SCRIPTING > ScriptingAllocPolicy
void deletePtr(T *ptr)
Function which invokes OGRE_DELETE on a given pointer.
SceneObjAllocatedObject FXAlloc
GeneralAllocatedObject FactoryAlloc
AllocatedObject< RenderSysAllocPolicy > RenderSysAllocatedObject
AllocatedObject< ScriptingAllocPolicy > ScriptingAllocatedObject
GeneralAllocatedObject ArchiveAlloc
GeneralAllocatedObject ControllerAlloc
CategorisedAllocPolicy< Ogre::MEMCATEGORY_RENDERSYS > RenderSysAllocPolicy