aboutsummaryrefslogtreecommitdiff
path: root/src/transformer_facade.cc
diff options
context:
space:
mode:
authorAdrian Kummerlaender2014-07-07 22:25:03 +0200
committerAdrian Kummerlaender2014-07-07 22:25:03 +0200
commit8f05c7de54336daefb214a754de35367098b6510 (patch)
treefc8d2b8309c88a1e57193784ad4f48bfa573952d /src/transformer_facade.cc
parentbe99b28838796ff5e1dc91685d6121a55d962a88 (diff)
downloadInputXSLT-8f05c7de54336daefb214a754de35367098b6510.tar
InputXSLT-8f05c7de54336daefb214a754de35367098b6510.tar.gz
InputXSLT-8f05c7de54336daefb214a754de35367098b6510.tar.bz2
InputXSLT-8f05c7de54336daefb214a754de35367098b6510.tar.lz
InputXSLT-8f05c7de54336daefb214a754de35367098b6510.tar.xz
InputXSLT-8f05c7de54336daefb214a754de35367098b6510.tar.zst
InputXSLT-8f05c7de54336daefb214a754de35367098b6510.zip
Implemented custom xercesc::DOMDocument deleter
* pointers to xercesc::DOMDocument were manually released ** this is now solved using a custom deleter for the appropriate std::unqiue_ptr template specialization * added matching factory method to DomDocumentCache * updated external function implementations accordingly ** "constructDocument" is now expected to return a DomDocumentCache::document_ptr instance * updated TransformerFacade accordingly * this change was implemented to get rid of the manual memory management required by xalan / xerces
Diffstat (limited to 'src/transformer_facade.cc')
-rw-r--r--src/transformer_facade.cc24
1 files changed, 7 insertions, 17 deletions
diff --git a/src/transformer_facade.cc b/src/transformer_facade.cc
index 10c8c7a..76b68d6 100644
--- a/src/transformer_facade.cc
+++ b/src/transformer_facade.cc
@@ -11,10 +11,8 @@
#include <xalanc/XercesParserLiaison/XercesDOMSupport.hpp>
#include <xalanc/XalanTransformer/XercesDOMWrapperParsedSource.hpp>
-#include <xercesc/dom/DOMDocument.hpp>
-#include <xercesc/dom/DOMImplementation.hpp>
-
#include "support/xerces_string_guard.h"
+#include "support/dom/document_cache.h"
namespace InputXSLT {
@@ -59,19 +57,15 @@ void TransformerFacade::generate(
) {
ErrorCapacitor errorCapacitor(&this->error_multiplexer_);
- xercesc::DOMDocument* const inputDocument(
- xercesc::DOMImplementation::getImplementation()->createDocument(
- nullptr,
- *XercesStringGuard<XMLCh>("dummy"),
- nullptr
- )
+ DomDocumentCache::document_ptr inputDocument(
+ DomDocumentCache::createDocument()
);
xalan::XercesParserLiaison parserLiaison;
xalan::XercesDOMSupport domSupport(parserLiaison);
xalan::XercesDOMWrapperParsedSource inputParsedSource(
- inputDocument,
+ inputDocument.get(),
parserLiaison,
domSupport
);
@@ -82,8 +76,6 @@ void TransformerFacade::generate(
target
);
- inputDocument->release();
-
errorCapacitor.discharge();
}
@@ -94,12 +86,12 @@ void TransformerFacade::generate(
) {
ErrorCapacitor errorCapacitor(&this->error_multiplexer_);
- xercesc::DOMDocument* const inputDocument(
- xercesc::DOMImplementation::getImplementation()->createDocument()
+ DomDocumentCache::document_ptr inputDocument(
+ DomDocumentCache::createDocument()
);
xalan::FormatterToXercesDOM inputFormatter(
- inputDocument,
+ inputDocument.get(),
inputDocument->getDocumentElement()
);
@@ -121,8 +113,6 @@ void TransformerFacade::generate(
target
);
- inputDocument->release();
-
errorCapacitor.discharge();
}