diff options
author | Adrian Kummerländer | 2014-06-10 22:27:24 +0200 |
---|---|---|
committer | Adrian Kummerländer | 2014-06-10 22:27:24 +0200 |
commit | e805000b1841691cd58930e80bd896a4f7611fd0 (patch) | |
tree | 35e4ff32f4aa0856b657abe789e396cb8531ff50 /src/transformation_facade.h | |
parent | 516ff636f760458c33676458fc88892faab9d376 (diff) | |
download | InputXSLT-e805000b1841691cd58930e80bd896a4f7611fd0.tar InputXSLT-e805000b1841691cd58930e80bd896a4f7611fd0.tar.gz InputXSLT-e805000b1841691cd58930e80bd896a4f7611fd0.tar.bz2 InputXSLT-e805000b1841691cd58930e80bd896a4f7611fd0.tar.lz InputXSLT-e805000b1841691cd58930e80bd896a4f7611fd0.tar.xz InputXSLT-e805000b1841691cd58930e80bd896a4f7611fd0.tar.zst InputXSLT-e805000b1841691cd58930e80bd896a4f7611fd0.zip |
Added input file support to ixslt
* a single file may be passed to the XSLT processor as input
** the file is read once and stored within a xalan::XalanParsedSource to be reused by all calls to "TransformationFacade::generate"
* added appropriate TranformationFacade constructor overload
** this new constructor overload which is taking a path to both the transformation and the input file is the main constructor
*** the old constructor is now only a alias for this new constructor
* adapted static "try_create" TransformationFacade factory method into variadic template factory method
* added optional "--input" argument to ixslt
** expanded option handling accordingly
Diffstat (limited to 'src/transformation_facade.h')
-rw-r--r-- | src/transformation_facade.h | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/src/transformation_facade.h b/src/transformation_facade.h index f69786a..fe711bc 100644 --- a/src/transformation_facade.h +++ b/src/transformation_facade.h @@ -20,13 +20,19 @@ class TransformationFacade { public: typedef std::unique_ptr<TransformationFacade> ptr; + template <typename... Arguments> static ptr try_create( - const std::string&, - IncludeEntityResolver*, - const std::function<void(const ErrorCapacitor::error_cache&)>& + const std::function<void(const ErrorCapacitor::error_cache&)>&, + Arguments&&... ); TransformationFacade(const std::string&, IncludeEntityResolver*); + TransformationFacade( + const std::string&, + const std::string&, + IncludeEntityResolver* + ); + ~TransformationFacade(); template <typename Target> @@ -41,6 +47,7 @@ class TransformationFacade { WarningCapacitor::warning_cache_ptr getCachedWarnings(); private: + const xalan::XalanParsedSource* input_; const xalan::XalanCompiledStylesheet* transformation_; xalan::XalanTransformer transformer_; @@ -53,6 +60,25 @@ class TransformationFacade { }; +template <typename... Arguments> +auto TransformationFacade::try_create( + const std::function<void(const ErrorCapacitor::error_cache&)>& handleErrors, + Arguments&&... arguments +) -> ptr { + try { + return ptr( + new InputXSLT::TransformationFacade( + std::forward<Arguments>(arguments)... + ) + ); + } + catch (const ErrorCapacitor::exception& exception) { + handleErrors(*exception); + + return ptr(); + } +} + template <typename Target> void TransformationFacade::generate(Target& target) { StylesheetParameterGuard guard(this->transformer_); |