home *** CD-ROM | disk | FTP | other *** search
- /**********************************************************************
- *
- * wnew.hpp -- This file may be included multiple times to redefine the
- * new & delete operators as required.
- *
- **********************************************************************/
-
- #ifndef _WMEMORY_HPP_INCLUDED
- #include "wmemory.hpp"
- #endif
-
- #undef new
- #undef delete
- #undef WNew
- #undef WDelete
-
- //
- // Make sure we declare all the new operators...
- //
-
- extern void *operator new( size_t );
- extern void *operator new( size_t, const WChar *, const WChar *, WULong );
- extern void *operator new( size_t, void * );
- extern void *operator new []( size_t );
- extern void *operator new []( size_t, const WChar *, const WChar *, WULong );
- extern void *operator new []( size_t, void * );
- extern void operator delete( void * );
- extern void operator delete []( void * );
-
- #undef NEW_OPERATOR
- #undef DELETE_OPERATOR
-
- #if defined( __NO_NEW__ ) && defined( _DEBUG ) && !defined( _RELEASE_MEMORY )
- #define NEW_OPERATOR new(NULL,NULL,0xFFFFFFFF)
- #ifdef __BUILDING_WCM__
- extern void __WFastLogNextDelete( void *ptr, const WChar *functionName,
- const WChar *fileName, WULong line );
- #define DELETE_OPERATOR __WFastLogNextDelete(NULL,NULL,NULL,0xFFFFFFFF),delete
- #define WDeleteScalar(x) __WFastLogNextDelete((void*)(x),NULL,NULL,0xFFFFFFFF),delete x
- #define WDeleteArray(x) __WFastLogNextDelete((void*)(x),NULL,NULL,0xFFFFFFFF),delete [] x
- #else
- #define DELETE_OPERATOR WMemory::LogNextDelete(NULL,NULL,NULL,0xFFFFFFFF),delete
- #define WDeleteScalar(x) WMemory::LogNextDelete((void*)(x),NULL,NULL,0xFFFFFFFF),delete x
- #define WDeleteArray(x) WMemory::LogNextDelete((void*)(x),NULL,NULL,0xFFFFFFFF),delete [] x
- #endif
- #elif defined( _DEBUG ) && !defined( _RELEASE_MEMORY )
- #define NEW_OPERATOR new(__WTEXT(__FUNCTION__),__WTEXT(__FILE__),__LINE__)
- #define DELETE_OPERATOR WMemory::LogNextDelete(NULL,__WTEXT(__FUNCTION__),__WTEXT(__FILE__),__LINE__),delete
- #define WDeleteScalar(x) WMemory::LogNextDelete((void*)(x),__WTEXT(__FUNCTION__),__WTEXT(__FILE__),__LINE__),delete x
- #define WDeleteArray(x) WMemory::LogNextDelete((void*)(x),__WTEXT(__FUNCTION__),__WTEXT(__FILE__),__LINE__),delete [] x
- #else
- #define NEW_OPERATOR new
- #define DELETE_OPERATOR delete
- #define WDeleteScalar(x) delete x
- #define WDeleteArray(x) delete [] x
- #endif
-
- #define WNew new
- #define WDelete delete
- #define new NEW_OPERATOR
- #define delete DELETE_OPERATOR
-
- #define _WNEW_OPERATOR NEW_OPERATOR
- #define _WDELETE_OPERATOR DELETE_OPERATOR
-