amassari    2005/01/26 05:29:32

  Modified:    c/src/xercesc/util XMemory.cpp XMemory.hpp
  Log:
  - 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
  
  Revision  Changes    Path
  1.13      +10 -1     xml-xerces/c/src/xercesc/util/XMemory.cpp
  
  Index: XMemory.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMemory.cpp,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- XMemory.cpp       6 Jan 2005 21:39:44 -0000       1.12
  +++ XMemory.cpp       26 Jan 2005 13:29:32 -0000      1.13
  @@ -69,6 +69,11 @@
       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*/, void* /*ptr*/)
  +{
  +}
  +
   #endif
   
   XERCES_CPP_NAMESPACE_END
  
  
  
  1.8       +21 -13    xml-xerces/c/src/xercesc/util/XMemory.hpp
  
  Index: XMemory.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMemory.hpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- XMemory.hpp       8 Sep 2004 13:56:25 -0000       1.7
  +++ XMemory.hpp       26 Jan 2005 13:29:32 -0000      1.8
  @@ -73,7 +73,8 @@
   #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
  @@ -81,6 +82,14 @@
       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
         *
         * @param p The pointer to the allocated memory
  @@ -90,12 +99,20 @@
        //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 default constructor and copy constructor
  +      * Protected default constructor
         */
       XMemory()
       {
       }
  -
  -    XMemory(const XMemory&)
  -    {
  -    }
       //@}
   
   #if defined(XML_BORLAND)
  @@ -125,11 +138,6 @@
       }
   #endif
   
  -private:
  -    // 
-----------------------------------------------------------------------
  -    //  Unimplemented operators
  -    // 
-----------------------------------------------------------------------
  -    XMemory& operator=(const XMemory&);
   };
   
   XERCES_CPP_NAMESPACE_END
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to