33 #ifndef TEAMCENTER_BASE_NEWOPERATOR_HXX
34 #define TEAMCENTER_BASE_NEWOPERATOR_HXX
40 #include <mach_datatypes.h>
42 #include <base_utils/libbase_utils_exports.h>
45 #define TC_SM_MEMORY_CLASS_NEW_DELETE_OPERATOR_DECLARATIONS \
46 static void * operator new( std::size_t size ); \
47 static void * operator new[]( std::size_t size ); \
48 static void operator delete( void * p, std::size_t size ); \
49 static void operator delete[]( void * p, std::size_t size ); \
50 static void operator delete( void * p ); \
51 static void operator delete[]( void * p ); \
53 static void * operator new( std::size_t, void * p ); \
54 static void * operator new[]( std::size_t, void * p ); \
55 static void operator delete( void *, void * ); \
56 static void operator delete[]( void *, void * );
59 #define TC_SM_MEMORY_CLASS_NEW_DELETE_OPERATOR_IMPLEMENTATIONS(CLASSNAME) \
60 void * CLASSNAME::operator new( std::size_t size ) { return Teamcenter::NewOperator::alloc( size ); } \
61 void * CLASSNAME::operator new[]( std::size_t size ) { return Teamcenter::NewOperator::arrayalloc( size ); } \
62 void CLASSNAME::operator delete( void * p, std::size_t size ) { Teamcenter::NewOperator::dealloc( p, size ); } \
63 void CLASSNAME::operator delete[]( void * p, std::size_t size ) { Teamcenter::NewOperator::arraydealloc( p, size ); } \
64 void CLASSNAME::operator delete( void * p ) { Teamcenter::NewOperator::dealloc( p, 0 ); } \
65 void CLASSNAME::operator delete[]( void * p ) { Teamcenter::NewOperator::arraydealloc( p, 0 ); } \
67 void * CLASSNAME::operator new( std::size_t, void * p ) { return p; } \
68 void * CLASSNAME::operator new[]( std::size_t, void * p ) { return p; } \
69 void CLASSNAME::operator delete( void *, void * ) {} \
70 void CLASSNAME::operator delete[]( void *, void * ) {}
76 #define TC_SM_MEMORY_CLASS_NEW_DELETE_OPERATORS_INLINED \
77 static void * operator new( std::size_t size ) { return Teamcenter::NewOperator::alloc( size ); } \
78 static void * operator new[]( std::size_t size ) { return Teamcenter::NewOperator::arrayalloc( size ); } \
79 static void operator delete( void * p, std::size_t size ) { Teamcenter::NewOperator::dealloc( p, size ); } \
80 static void operator delete[]( void * p, std::size_t size ) { Teamcenter::NewOperator::arraydealloc( p, size ); } \
81 static void operator delete( void * p ) { Teamcenter::NewOperator::dealloc( p, 0 ); } \
82 static void operator delete[]( void * p ) { Teamcenter::NewOperator::arraydealloc( p, 0 ); } \
84 static void * operator new( std::size_t, void * p ) { return p; } \
85 static void * operator new[]( std::size_t, void * p ) { return p; } \
86 static void operator delete( void *, void * ) {} \
87 static void operator delete[]( void *, void * ) {}
96 BASE_UTILS_API
void *
alloc( std::size_t size );
97 BASE_UTILS_API
void dealloc(
void * p, std::size_t size );
98 BASE_UTILS_API
void *
arrayalloc( std::size_t size );
99 BASE_UTILS_API
void arraydealloc(
void * p, std::size_t size );
104 BASE_UTILS_API
void init();
112 #include <base_utils/libbase_utils_undef.h>
114 #endif // TEAMCENTER_BASE_UTILS_SCOPEDSTATE_HXX