*** ../pwlib/src/ptlib/common/object.cxx.orig Tue Oct 29 00:21:28 2002 --- ../pwlib/src/ptlib/common/object.cxx Tue Oct 29 00:22:07 2002 *************** *** 27,32 **** --- 27,38 ---- * Contributor(s): ______________________________________. * * $Log: object.cxx,v $ + * Revision 1.62 2002/10/21 12:52:27 rogerh + * Add throw()s to new and delete. Error reported by FreeBSD 5.0 and GCC 3.2.1 + * + * Revision 1.61 2002/10/10 04:43:44 robertj + * VxWorks port, thanks Martijn Roest + * * Revision 1.60 2002/09/06 05:29:42 craigs * Reversed order of memory block check on delete to improve performance in * Linux debug mode *************** void PAssertFunc(const char * file, int *** 308,332 **** --- 314,354 ---- #undef free + #if __GNUC__ >= 3 + void * operator new(size_t nSize) throw (std::bad_alloc) + #else void * operator new(size_t nSize) + #endif { return PMemoryHeap::Allocate(nSize, (const char *)NULL, 0, NULL); } + #if __GNUC__ >= 3 + void * operator new[](size_t nSize) throw (std::bad_alloc) + #else void * operator new[](size_t nSize) + #endif { return PMemoryHeap::Allocate(nSize, (const char *)NULL, 0, NULL); } + #if __GNUC__ >= 3 + void operator delete(void * ptr) throw() + #else void operator delete(void * ptr) + #endif { PMemoryHeap::Deallocate(ptr, NULL); } + #if __GNUC__ >= 3 + void operator delete[](void * ptr) throw() + #else void operator delete[](void * ptr) + #endif { PMemoryHeap::Deallocate(ptr, NULL); } *************** void PMemoryHeap::InternalDumpObjectsSin *** 814,829 **** --- 836,863 ---- #else // PMEMORY_CHECK + #ifndef P_VXWORKS + + #if __GNUC__ >= 3 + void * operator new[](size_t nSize) throw (std::bad_alloc) + #else void * operator new[](size_t nSize) + #endif { return malloc(nSize); } + #if __GNUC__ >= 3 + void operator delete[](void * ptr) throw () + #else void operator delete[](void * ptr) + #endif { free(ptr); } + #endif // !P_VXWORKS + #endif // PMEMORY_CHECK *************** istream & operator>>(istream & stream, P *** 1505,1510 **** --- 1539,1574 ---- #endif + + + #ifdef P_TORNADO + + // the library provided with Tornado 2.0 does not contain implementation + // for the functions defined below, therefor the own implementation + + ostream & ostream::operator<<(PInt64 v) + { + return *this << (long)(v >> 32) << (long)(v & 0xFFFFFFFF); + } + + + ostream & ostream::operator<<(PUInt64 v) + { + return *this << (long)(v >> 32) << (long)(v & 0xFFFFFFFF); + } + + istream & istream::operator>>(PInt64 & v) + { + return *this >> (long)(v >> 32) >> (long)(v & 0xFFFFFFFF); + } + + + istream & istream::operator>>(PUInt64 & v) + { + return *this >> (long)(v >> 32) >> (long)(v & 0xFFFFFFFF); + } + + #endif // P_TORNADO // End Of File ///////////////////////////////////////////////////////////////