home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 October / Chip_1997-10_cd.bin / tema / sybase / powerj / hpp.z / WNEW.HPP < prev    next >
C/C++ Source or Header  |  1996-12-13  |  3KB  |  65 lines

  1. /**********************************************************************
  2.  *
  3.  * wnew.hpp -- This file may be included multiple times to redefine the
  4.  *             new & delete operators as required.
  5.  *
  6.  **********************************************************************/
  7.  
  8. #ifndef _WMEMORY_HPP_INCLUDED
  9. #include "wmemory.hpp"
  10. #endif
  11.  
  12. #undef new
  13. #undef delete
  14. #undef WNew
  15. #undef WDelete
  16.  
  17. //
  18. // Make sure we declare all the new operators...
  19. //
  20.     
  21. extern void *operator new( size_t );
  22. extern void *operator new( size_t, const WChar *, const WChar *, WULong );
  23. extern void *operator new( size_t, void * );
  24. extern void *operator new []( size_t );
  25. extern void *operator new []( size_t, const WChar *, const WChar *, WULong );
  26. extern void *operator new []( size_t, void * );
  27. extern void operator delete( void * );
  28. extern void operator delete []( void * );
  29.  
  30. #undef NEW_OPERATOR
  31. #undef DELETE_OPERATOR
  32.  
  33. #if defined( __NO_NEW__ ) && defined( _DEBUG ) && !defined( _RELEASE_MEMORY )
  34. #define NEW_OPERATOR     new(NULL,NULL,0xFFFFFFFF)
  35.     #ifdef __BUILDING_WCM__
  36.     extern void __WFastLogNextDelete( void *ptr, const WChar *functionName,
  37.                                       const WChar *fileName, WULong line );
  38.     #define DELETE_OPERATOR  __WFastLogNextDelete(NULL,NULL,NULL,0xFFFFFFFF),delete
  39.     #define WDeleteScalar(x) __WFastLogNextDelete((void*)(x),NULL,NULL,0xFFFFFFFF),delete x
  40.     #define WDeleteArray(x)  __WFastLogNextDelete((void*)(x),NULL,NULL,0xFFFFFFFF),delete [] x
  41.     #else
  42.     #define DELETE_OPERATOR  WMemory::LogNextDelete(NULL,NULL,NULL,0xFFFFFFFF),delete
  43.     #define WDeleteScalar(x) WMemory::LogNextDelete((void*)(x),NULL,NULL,0xFFFFFFFF),delete x
  44.     #define WDeleteArray(x)  WMemory::LogNextDelete((void*)(x),NULL,NULL,0xFFFFFFFF),delete [] x
  45.     #endif
  46. #elif defined( _DEBUG ) && !defined( _RELEASE_MEMORY )
  47. #define NEW_OPERATOR     new(__WTEXT(__FUNCTION__),__WTEXT(__FILE__),__LINE__)
  48. #define DELETE_OPERATOR  WMemory::LogNextDelete(NULL,__WTEXT(__FUNCTION__),__WTEXT(__FILE__),__LINE__),delete
  49. #define WDeleteScalar(x) WMemory::LogNextDelete((void*)(x),__WTEXT(__FUNCTION__),__WTEXT(__FILE__),__LINE__),delete x
  50. #define WDeleteArray(x)  WMemory::LogNextDelete((void*)(x),__WTEXT(__FUNCTION__),__WTEXT(__FILE__),__LINE__),delete [] x
  51. #else
  52. #define NEW_OPERATOR     new
  53. #define DELETE_OPERATOR  delete
  54. #define WDeleteScalar(x) delete x
  55. #define WDeleteArray(x)  delete [] x
  56. #endif
  57.  
  58. #define WNew    new
  59. #define WDelete delete
  60. #define new     NEW_OPERATOR
  61. #define delete  DELETE_OPERATOR
  62.  
  63. #define _WNEW_OPERATOR          NEW_OPERATOR
  64. #define _WDELETE_OPERATOR       DELETE_OPERATOR
  65.