home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / new < prev    next >
Text File  |  1998-06-16  |  1KB  |  64 lines

  1. // new standard header
  2.  
  3. #if     _MSC_VER > 1000
  4. #pragma once
  5. #endif
  6.  
  7. #ifndef _NEW_
  8. #define _NEW_
  9. #include <exception>
  10.  
  11. #ifdef  _MSC_VER
  12. #pragma pack(push,8)
  13. #endif  /* _MSC_VER */
  14. _STD_BEGIN
  15.         // CLASS bad_alloc
  16. class _CRTIMP bad_alloc : public exception {
  17. public:
  18.     bad_alloc(const char *_S = "bad allocation") _THROW0()
  19.         : exception(_S) {}
  20.     virtual ~bad_alloc() _THROW0()
  21.         {}
  22. protected:
  23.     virtual void _Doraise() const
  24.         {_RAISE(*this); }
  25.     };
  26.         // SUPPORT TYPES
  27. struct nothrow_t {};
  28. extern _CRTIMP const nothrow_t nothrow;
  29. _STD_END
  30.  
  31. typedef void (__cdecl *new_handler)();
  32.  
  33.         // new AND delete DECLARATIONS
  34. void __cdecl operator delete(void *) _THROW0();
  35. void *__cdecl operator new(size_t) _THROW1(std::bad_alloc);
  36. void *__cdecl operator new(size_t, const std::nothrow_t&)
  37.     _THROW0();
  38.  
  39. #ifndef __PLACEMENT_NEW_INLINE
  40. #define __PLACEMENT_NEW_INLINE
  41. inline void *__cdecl operator new(size_t, void *_P)
  42.     {return (_P); }
  43. #if     _MSC_VER >= 1200
  44. inline void __cdecl operator delete(void *, void *)
  45.     {return; }
  46. #endif
  47. #endif
  48.  
  49. #ifdef _CRTIMP
  50. _CRTIMP
  51. #endif
  52.     new_handler __cdecl set_new_handler(new_handler) _THROW0();
  53.  
  54. #ifdef  _MSC_VER
  55. #pragma pack(pop)
  56. #endif  /* _MSC_VER */
  57.  
  58. #endif /* _NEW_ */
  59.  
  60. /*
  61.  * Copyright (c) 1994 by P.J. Plauger.  ALL RIGHTS RESERVED. 
  62.  * Consult your license regarding permissions and restrictions.
  63.  */
  64.