// XXX taken from /boot/develop/tools/gnupro/lib/gcc-lib/i586-beos/2.9-beos-991026/include // XXX From GCC, exact license unknown. Must be LGPL or better :) // XXX Doesn't belong into posix, should be replaced as soon as possible /* CYGNUS LOCAL Embedded C++ whole file */ // The -*- C++ -*- dynamic memory management header. // Copyright (C) 1994, 96-97, 1998 Free Software Foundation #ifndef __NEW__ #define __NEW__ #pragma interface "new" #include #ifndef __EMBEDDED_CXX__ // Exception Handling is forbidden in Embedded C++. #include #define __THROW(what) throw (what) #define __nothing #else #define __THROW(what) #endif extern "C++" { namespace std { #ifndef __EMBEDDED_CXX__ class bad_alloc : public exception { public: virtual const char* what() const throw() { return "bad_alloc"; } }; #endif struct nothrow_t {}; extern const nothrow_t nothrow; typedef void (*new_handler)(); new_handler set_new_handler (new_handler); } // namespace std // replaceable signatures void *operator new (size_t) __THROW (std::bad_alloc); void *operator new[] (size_t) __THROW (std::bad_alloc); void operator delete (void *) __THROW(__nothing); void operator delete[] (void *) __THROW(__nothing); void *operator new (size_t, const std::nothrow_t&) __THROW(__nothing); void *operator new[] (size_t, const std::nothrow_t&) __THROW(__nothing); void operator delete (void *, const std::nothrow_t&) __THROW(__nothing); void operator delete[] (void *, const std::nothrow_t&) __THROW(__nothing); // default placement versions of operator new #ifndef _BUILDING_NEW_CPP_ // make sure the call gets emitted out of line in libroot for // compatibility with old binaries - this is done by including // the same two calls, only without the inline directive // // keep it inline everywhere else inline void *operator new(size_t, void *place) __THROW(__nothing) { return place; } inline void *operator new[](size_t, void *place) __THROW(__nothing) { return place; } #endif } // extern "C++" #endif /* END CYGNUS LOCAL */