aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Kummerlaender2014-07-08 14:06:47 +0200
committerAdrian Kummerlaender2014-07-08 14:06:47 +0200
commit716958c6acb77f4f63cc6f99d741fe0a901a25ba (patch)
tree00eab42295e3e719d59b3c29389931b95108d7e1
parent8f05c7de54336daefb214a754de35367098b6510 (diff)
downloadInputXSLT-716958c6acb77f4f63cc6f99d741fe0a901a25ba.tar
InputXSLT-716958c6acb77f4f63cc6f99d741fe0a901a25ba.tar.gz
InputXSLT-716958c6acb77f4f63cc6f99d741fe0a901a25ba.tar.bz2
InputXSLT-716958c6acb77f4f63cc6f99d741fe0a901a25ba.tar.lz
InputXSLT-716958c6acb77f4f63cc6f99d741fe0a901a25ba.tar.xz
InputXSLT-716958c6acb77f4f63cc6f99d741fe0a901a25ba.tar.zst
InputXSLT-716958c6acb77f4f63cc6f99d741fe0a901a25ba.zip
Added ResultNodeFacade constructor overload for root nodes
* the common use case of ResultNodeFacade inside external function implementations is managing the result root node ** this root node can be fetched through the xercesc::DOMDocument instance ** the new alias overload automatically fetches the root node pointer and as such doesn't require a root node parameter * changed external function implementations accordingly
-rw-r--r--src/function/external_text_formatter.cc6
-rw-r--r--src/function/read_directory.cc6
-rw-r--r--src/function/read_file.cc6
-rw-r--r--src/function/transform.cc6
-rw-r--r--src/function/write_file.cc6
-rw-r--r--src/support/dom/result_node_facade.cc14
-rw-r--r--src/support/dom/result_node_facade.h2
7 files changed, 19 insertions, 27 deletions
diff --git a/src/function/external_text_formatter.cc b/src/function/external_text_formatter.cc
index a86c71b..de8a296 100644
--- a/src/function/external_text_formatter.cc
+++ b/src/function/external_text_formatter.cc
@@ -47,10 +47,6 @@ DomDocumentCache::document_ptr FunctionExternalTextFormatter::constructDocument(
DomDocumentCache::createDocument()
);
- xercesc::DOMNode* const rootNode(
- domDocument->getDocumentElement()
- );
-
boost::process::context context;
context.stdout_behavior = boost::process::capture_stream();
context.stdin_behavior = boost::process::capture_stream();
@@ -71,7 +67,7 @@ DomDocumentCache::document_ptr FunctionExternalTextFormatter::constructDocument(
boost::process::status status = formatterProcess.wait();
- ResultNodeFacade result(domDocument.get(), rootNode, "output");
+ ResultNodeFacade result(domDocument.get(), "output");
result.setAttribute("formatter", formatterPath.filename().string());
result.setAttribute("code", std::to_string(status.exit_status()));
diff --git a/src/function/read_directory.cc b/src/function/read_directory.cc
index ad82217..cbc64e0 100644
--- a/src/function/read_directory.cc
+++ b/src/function/read_directory.cc
@@ -11,11 +11,7 @@ DomDocumentCache::document_ptr FunctionReadDirectory::constructDocument(
DomDocumentCache::createDocument()
);
- xercesc::DOMNode* const rootNode(
- domDocument->getDocumentElement()
- );
-
- ResultNodeFacade result(domDocument.get(), rootNode, "directory");
+ ResultNodeFacade result(domDocument.get(), "directory");
result.setAttribute("path", directoryPath.string());
if ( boost::filesystem::is_directory(directoryPath) ) {
diff --git a/src/function/read_file.cc b/src/function/read_file.cc
index cb1e57f..dcd32b7 100644
--- a/src/function/read_file.cc
+++ b/src/function/read_file.cc
@@ -65,11 +65,7 @@ DomDocumentCache::document_ptr FunctionReadFile::constructDocument(
DomDocumentCache::createDocument()
);
- xercesc::DOMNode* const rootNode(
- domDocument->getDocumentElement()
- );
-
- ResultNodeFacade result(domDocument.get(), rootNode, "file");
+ ResultNodeFacade result(domDocument.get(), "file");
result.setAttribute("path", filePath.string());
if ( boost::filesystem::is_regular_file(filePath) ) {
diff --git a/src/function/transform.cc b/src/function/transform.cc
index c97897e..d7aae94 100644
--- a/src/function/transform.cc
+++ b/src/function/transform.cc
@@ -34,11 +34,7 @@ DomDocumentCache::document_ptr FunctionTransform::constructDocument(
DomDocumentCache::createDocument()
);
- xercesc::DOMElement* const rootElement(
- domDocument->getDocumentElement()
- );
-
- ResultNodeFacade result(domDocument.get(), rootElement, "transformation");
+ ResultNodeFacade result(domDocument.get(), "transformation");
TransformerFacade transformer(this->include_resolver_);
try {
diff --git a/src/function/write_file.cc b/src/function/write_file.cc
index 872160b..0ad68bf 100644
--- a/src/function/write_file.cc
+++ b/src/function/write_file.cc
@@ -65,11 +65,7 @@ DomDocumentCache::document_ptr FunctionWriteFile::constructDocument(
DomDocumentCache::createDocument()
);
- xercesc::DOMNode* const rootNode(
- domDocument->getDocumentElement()
- );
-
- ResultNodeFacade result(domDocument.get(), rootNode, "file");
+ ResultNodeFacade result(domDocument.get(), "file");
result.setAttribute("path", filePath.string());
if ( contentNode != nullptr ) {
diff --git a/src/support/dom/result_node_facade.cc b/src/support/dom/result_node_facade.cc
index 570b4e1..c5829c5 100644
--- a/src/support/dom/result_node_facade.cc
+++ b/src/support/dom/result_node_facade.cc
@@ -9,8 +9,18 @@ namespace InputXSLT {
ResultNodeFacade::ResultNodeFacade(
xercesc::DOMDocument* document,
- xercesc::DOMNode* node,
- const std::string& name
+ const std::string& name
+):
+ ResultNodeFacade(
+ document,
+ document->getDocumentElement(),
+ name
+ ) { }
+
+ResultNodeFacade::ResultNodeFacade(
+ xercesc::DOMDocument* document,
+ xercesc::DOMNode* node,
+ const std::string& name
):
dom_document_(document),
result_node_(
diff --git a/src/support/dom/result_node_facade.h b/src/support/dom/result_node_facade.h
index c7e831e..c743f92 100644
--- a/src/support/dom/result_node_facade.h
+++ b/src/support/dom/result_node_facade.h
@@ -11,11 +11,13 @@ namespace InputXSLT {
class ResultNodeFacade {
public:
+ ResultNodeFacade(xercesc::DOMDocument*, const std::string&);
ResultNodeFacade(
xercesc::DOMDocument*,
xercesc::DOMNode*,
const std::string&
);
+
~ResultNodeFacade();
xercesc::DOMElement* getResultElement();