From 981057eec3115952def685e02c1d01653bcb1aac Mon Sep 17 00:00:00 2001 From: Alberto Massari <amassari@apache.org> Date: Mon, 16 Oct 2006 06:29:51 +0000 Subject: [PATCH] Allow the user to specify the memory manager used by LSSerializer::writeToString git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@464394 13f79535-47bb-0310-9956-ffa450edef68 --- doc/html/ApacheDOMC++BindingL3.html | 2 +- src/xercesc/dom/DOMLSSerializer.hpp | 5 ++++- src/xercesc/dom/impl/DOMLSSerializerImpl.cpp | 10 ++++++---- src/xercesc/dom/impl/DOMLSSerializerImpl.hpp | 2 +- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/doc/html/ApacheDOMC++BindingL3.html b/doc/html/ApacheDOMC++BindingL3.html index 9db96d5fa..72dda713c 100644 --- a/doc/html/ApacheDOMC++BindingL3.html +++ b/doc/html/ApacheDOMC++BindingL3.html @@ -4631,7 +4631,7 @@ DOMLSSerializer <td><font face="Courier New,Courier"><font size=-1>XMLCh*</font></font></td> -<td><font face="Courier New,Courier"><font size=-1>writeToString(const DOMNode* nodeToWrite) = 0;</font></font></td> +<td><font face="Courier New,Courier"><font size=-1>writeToString(const DOMNode* nodeToWrite, MemoryManager* manager = NULL) = 0;</font></font></td> </tr> <tr ALIGN=LEFT VALIGN=TOP> diff --git a/src/xercesc/dom/DOMLSSerializer.hpp b/src/xercesc/dom/DOMLSSerializer.hpp index 4b1041038..a763d4e94 100644 --- a/src/xercesc/dom/DOMLSSerializer.hpp +++ b/src/xercesc/dom/DOMLSSerializer.hpp @@ -506,13 +506,16 @@ public: * diagnostic purposes. * * @param nodeToWrite The node to be written. + * @param manager The memory manager to be used to allocate the result string. + * If NULL is used, the memory manager used to construct the serializer will + * be used. * @return Returns the serialized data, or <code>null</code> in case a * failure occured and the failure wasn't canceled by the error * handler. The returned string is always in UTF-16. * The encoding information available in DOMLSSerializer is ignored in writeToString(). * @since DOM Level 3 */ - virtual XMLCh* writeToString(const DOMNode* nodeToWrite) = 0; + virtual XMLCh* writeToString(const DOMNode* nodeToWrite, MemoryManager* manager = NULL) = 0; //@} diff --git a/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp b/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp index 8e17c728d..d762084c7 100644 --- a/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp +++ b/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp @@ -561,16 +561,18 @@ bool DOMLSSerializerImpl::writeToURI(const DOMNode* nodeToWrite, const XMLCh* ur // We don't throw DOMSTRING_SIZE_ERR since we are no longer // using DOMString. // -XMLCh* DOMLSSerializerImpl::writeToString(const DOMNode* nodeToWrite) +XMLCh* DOMLSSerializerImpl::writeToString(const DOMNode* nodeToWrite, MemoryManager* manager /*= NULL*/) { - MemBufFormatTarget destination(1023, fMemoryManager); + if(manager==NULL) + manager = fMemoryManager; + MemBufFormatTarget destination(1023, manager); bool retVal; bool bBOMFlag=getFeature(BYTE_ORDER_MARK_ID); setFeature(BYTE_ORDER_MARK_ID, false); try { - DOMLSOutputImpl output(fMemoryManager); + DOMLSOutputImpl output(manager); output.setByteStream(&destination); output.setEncoding(XMLUni::fgUTF16EncodingString); retVal = write(nodeToWrite, &output); @@ -590,7 +592,7 @@ XMLCh* DOMLSSerializerImpl::writeToString(const DOMNode* nodeToWrite) } setFeature(BYTE_ORDER_MARK_ID, bBOMFlag); - return (retVal ? XMLString::replicate((XMLCh*) destination.getRawBuffer(), fMemoryManager) : 0); + return (retVal ? XMLString::replicate((XMLCh*) destination.getRawBuffer(), manager) : 0); } // diff --git a/src/xercesc/dom/impl/DOMLSSerializerImpl.hpp b/src/xercesc/dom/impl/DOMLSSerializerImpl.hpp index 77c55e245..ed110e2d1 100644 --- a/src/xercesc/dom/impl/DOMLSSerializerImpl.hpp +++ b/src/xercesc/dom/impl/DOMLSSerializerImpl.hpp @@ -72,7 +72,7 @@ public: /** * The caller is responsible for the release of the returned string */ - virtual XMLCh* writeToString(const DOMNode* nodeToWrite); + virtual XMLCh* writeToString(const DOMNode* nodeToWrite, MemoryManager* manager = NULL); virtual void release(); //@} -- GitLab