CrossFramework Library
|
00001 00006 #if defined(XBASE_INCLUDED_IALLOCATOR_HPP) 00007 #else 00008 #define XBASE_INCLUDED_IALLOCATOR_HPP 00009 00010 //------------------------------------------------------------ 00011 #include <memory> 00012 #include <XBase/BuiltInTypes.hpp> 00013 00014 //------------------------------------------------------------ 00015 namespace XBase { 00017 00018 00019 class IAllocator 00020 { 00021 public: 00022 virtual ~IAllocator(); 00023 00025 00026 00031 static const pword_t DefaultAlignment = sizeof(pword_t); 00033 00035 00036 00040 static IAllocator& Default(); 00041 00048 static void SetDefault( IAllocator& aAllocator ); 00049 00053 static IAllocator& OperatorNewDelete(); 00055 00057 00058 00064 virtual ptr_t alloc( pword_t aSize , pword_t aAlignment = DefaultAlignment )=0; 00065 00070 virtual void free( ptr_t aPtr )=0; 00072 }; 00074 } 00076 00077 00078 00079 extern void* operator new(std::size_t,::XBase::IAllocator&); 00080 extern void* operator new[](std::size_t,::XBase::IAllocator&); 00081 extern void operator delete(void*, ::XBase::IAllocator&); 00082 extern void operator delete[](void*, ::XBase::IAllocator&); 00084 00085 //------------------------------------------------------------ 00086 #endif 00087 // EOF