aboutsummaryrefslogtreecommitdiff
path: root/src/transformation_facade.h
diff options
context:
space:
mode:
authorAdrian Kummerländer2014-06-10 22:27:24 +0200
committerAdrian Kummerländer2014-06-10 22:27:24 +0200
commite805000b1841691cd58930e80bd896a4f7611fd0 (patch)
tree35e4ff32f4aa0856b657abe789e396cb8531ff50 /src/transformation_facade.h
parent516ff636f760458c33676458fc88892faab9d376 (diff)
downloadInputXSLT-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.h32
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_);