From bd24e3fe6335bc776400be6bcb44a0701ecc4133 Mon Sep 17 00:00:00 2001 From: Adrian Kummerländer Date: Sun, 4 May 2014 20:49:37 +0200 Subject: Moved DOM document construction logic into local functions * this change makes the underlying similarity between all currently implemented external functions obvious * they more or less only differ in their document construction logic ** i.e. there is a possibility for a second layer of abstraction between the classes derived from xalan::Function and the actual functionality * added boost::filesystem::path taking overload of the _iterate_ member method to FilesystemGuard ** this overload functions as the _master_ overload that is called by all other overloads which merely perform type conversion and path resolution ** this overload doesn't perform path resolution --- src/support/filesystem_context.cc | 11 ++++++++--- src/support/filesystem_context.h | 2 ++ 2 files changed, 10 insertions(+), 3 deletions(-) (limited to 'src/support') diff --git a/src/support/filesystem_context.cc b/src/support/filesystem_context.cc index 32646be..418d159 100644 --- a/src/support/filesystem_context.cc +++ b/src/support/filesystem_context.cc @@ -36,11 +36,9 @@ boost::filesystem::path FilesystemContext::resolve( } void FilesystemContext::iterate( - const std::string& path, + const boost::filesystem::path& directory, std::function func ) const { - const boost::filesystem::path directory(this->resolve(path)); - if ( boost::filesystem::is_directory(directory) ) { for ( boost::filesystem::directory_iterator iter(directory); iter != boost::filesystem::directory_iterator(); @@ -53,6 +51,13 @@ void FilesystemContext::iterate( } } +void FilesystemContext::iterate( + const std::string& path, + std::function func +) const { + this->iterate(this->resolve(path), func); +} + void FilesystemContext::iterate( const xalan::XalanDOMString& path, std::function func diff --git a/src/support/filesystem_context.h b/src/support/filesystem_context.h index f743c89..05d5862 100644 --- a/src/support/filesystem_context.h +++ b/src/support/filesystem_context.h @@ -20,6 +20,8 @@ class FilesystemContext { boost::filesystem::path resolve(const std::string&) const; boost::filesystem::path resolve(const xalan::XalanDOMString&) const; + void iterate(const boost::filesystem::path&, + std::function) const; void iterate(const std::string&, std::function) const; void iterate(const xalan::XalanDOMString&, -- cgit v1.2.3