From 95e7ce4bd28faed42ac90dda69c08e06b28aa34d Mon Sep 17 00:00:00 2001 From: Alberto Massari <amassari@apache.org> Date: Wed, 26 Jan 2005 13:29:32 +0000 Subject: [PATCH] - Removed warning about exception classes having a base class with a protected copy constructor (jira# 1323) - Added placement new and delete to allow XMemory-derived classes to be hosted in STL containers git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@176295 13f79535-47bb-0310-9956-ffa450edef68 --- src/xercesc/util/XMemory.cpp | 9 +++++++++ src/xercesc/util/XMemory.hpp | 32 ++++++++++++++++++++------------ 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/xercesc/util/XMemory.cpp b/src/xercesc/util/XMemory.cpp index 08a47c7c8..e4261885b 100644 --- a/src/xercesc/util/XMemory.cpp +++ b/src/xercesc/util/XMemory.cpp @@ -69,6 +69,11 @@ void* XMemory::operator new(size_t size, MemoryManager* manager) return (char*)block + headerSize; } +void* XMemory::operator new(size_t /*size*/, void* ptr) +{ + return ptr; +} + void XMemory::operator delete(void* p) { if (p != 0) @@ -107,6 +112,10 @@ void XMemory::operator delete(void* p, MemoryManager* manager) } } +void XMemory::operator delete(void* /*p*/, void* /*ptr*/) +{ +} + #endif XERCES_CPP_NAMESPACE_END diff --git a/src/xercesc/util/XMemory.hpp b/src/xercesc/util/XMemory.hpp index 1058b3f4f..9fbbe13af 100644 --- a/src/xercesc/util/XMemory.hpp +++ b/src/xercesc/util/XMemory.hpp @@ -73,13 +73,22 @@ public : #endif /** - * This method overrides placement operator new + * This method defines a custom operator new, that will use the provided + * memory manager to perform the allocation * * @param size The requested memory size * @param memMgr An application's memory manager */ void* operator new(size_t size, MemoryManager* memMgr); + /** + * This method overrides placement operator new + * + * @param size The requested memory size + * @param ptr The memory location where the object should be allocated + */ + void* operator new(size_t size, void* ptr); + /** * This method overrides operator delete * @@ -90,12 +99,20 @@ public : //The Borland compiler is complaining about duplicate overloading of delete #if !defined(XML_BORLAND) /** - * This method provides a matching delete for the placement new + * This method provides a matching delete for the custom operator new * * @param p The pointer to the allocated memory * @param memMgr An application's memory manager */ void operator delete(void* p, MemoryManager* memMgr); + + /** + * This method provides a matching delete for the placement new + * + * @param p The pointer to the allocated memory + * @param ptr The memory location where the object had to be allocated + */ + void operator delete(void* p, void* ptr); #endif //@} @@ -108,15 +125,11 @@ protected : //@{ /** - * Protected default constructor and copy constructor + * Protected default constructor */ XMemory() { } - - XMemory(const XMemory&) - { - } //@} #if defined(XML_BORLAND) @@ -125,11 +138,6 @@ protected : } #endif -private: - // ----------------------------------------------------------------------- - // Unimplemented operators - // ----------------------------------------------------------------------- - XMemory& operator=(const XMemory&); }; XERCES_CPP_NAMESPACE_END -- GitLab