aboutsummaryrefslogtreecommitdiff
path: root/src/function
diff options
context:
space:
mode:
authorAdrian Kummerländer2014-04-26 15:17:07 +0200
committerAdrian Kummerländer2014-04-26 15:17:07 +0200
commit7e7b112e6c00bcce0b339652748079cf7c9f1430 (patch)
tree645cab42adbfa79f0a32ed85f00805f73263d9f6 /src/function
parent0b611b7bd28851fe8096b3d2c121c68e231ada11 (diff)
downloadInputXSLT-7e7b112e6c00bcce0b339652748079cf7c9f1430.tar
InputXSLT-7e7b112e6c00bcce0b339652748079cf7c9f1430.tar.gz
InputXSLT-7e7b112e6c00bcce0b339652748079cf7c9f1430.tar.bz2
InputXSLT-7e7b112e6c00bcce0b339652748079cf7c9f1430.tar.lz
InputXSLT-7e7b112e6c00bcce0b339652748079cf7c9f1430.tar.xz
InputXSLT-7e7b112e6c00bcce0b339652748079cf7c9f1430.tar.zst
InputXSLT-7e7b112e6c00bcce0b339652748079cf7c9f1430.zip
Moved DomDocumentCache instances back into external function class
* A global DomDocumentCache instance would require key prefixing * switched internal data structure to std::unordered_map for average constant time access
Diffstat (limited to 'src/function')
-rw-r--r--src/function/read_directory.cc7
-rw-r--r--src/function/read_directory.h6
2 files changed, 7 insertions, 6 deletions
diff --git a/src/function/read_directory.cc b/src/function/read_directory.cc
index 677aa1d..3f503b3 100644
--- a/src/function/read_directory.cc
+++ b/src/function/read_directory.cc
@@ -11,10 +11,9 @@
namespace InputXSLT {
-FunctionReadDirectory::FunctionReadDirectory(const FilesystemContext& context,
- DomDocumentCache& cache):
+FunctionReadDirectory::FunctionReadDirectory(const FilesystemContext& context):
fs_context_(context),
- document_cache_(cache) { }
+ document_cache_(std::make_shared<DomDocumentCache>()) { }
xalan::XObjectPtr FunctionReadDirectory::execute(
xalan::XPathExecutionContext& executionContext,
@@ -23,7 +22,7 @@ xalan::XObjectPtr FunctionReadDirectory::execute(
const xalan::Locator*
) const {
DomDocumentCache::item* const cachedDocument(
- this->document_cache_.get(xalanToString(argument->str()))
+ this->document_cache_->get(xalanToString(argument->str()))
);
if ( !cachedDocument->isFinalized() ) {
diff --git a/src/function/read_directory.h b/src/function/read_directory.h
index 3fcf389..f4f7ec8 100644
--- a/src/function/read_directory.h
+++ b/src/function/read_directory.h
@@ -6,6 +6,8 @@
#include <xalanc/XPath/Function.hpp>
#include <xalanc/XPath/XObject.hpp>
+#include <memory>
+
#include "common.h"
#include "support/filesystem_context.h"
#include "support/dom/document_cache.h"
@@ -14,7 +16,7 @@ namespace InputXSLT {
class FunctionReadDirectory : public xalan::Function {
public:
- FunctionReadDirectory(const FilesystemContext&, DomDocumentCache&);
+ FunctionReadDirectory(const FilesystemContext&);
virtual xalan::XObjectPtr execute(
xalan::XPathExecutionContext&,
@@ -30,7 +32,7 @@ class FunctionReadDirectory : public xalan::Function {
private:
const FilesystemContext& fs_context_;
- DomDocumentCache& document_cache_;
+ std::shared_ptr<DomDocumentCache> document_cache_;
const xalan::XalanDOMString& getError(xalan::XalanDOMString&) const;