aboutsummaryrefslogtreecommitdiff
path: root/src/transformation_facade.h
diff options
context:
space:
mode:
authorAdrian Kummerländer2014-05-18 20:07:45 +0200
committerAdrian Kummerländer2014-05-18 20:07:45 +0200
commitd19a195985b96701b2ab302538fe24e87e76decf (patch)
treec6cd7fe10322c62463e93f82de2c9894b05add0b /src/transformation_facade.h
parent246a8e020d97cfc3b4409996f99450fa95b730b1 (diff)
downloadInputXSLT-d19a195985b96701b2ab302538fe24e87e76decf.tar
InputXSLT-d19a195985b96701b2ab302538fe24e87e76decf.tar.gz
InputXSLT-d19a195985b96701b2ab302538fe24e87e76decf.tar.bz2
InputXSLT-d19a195985b96701b2ab302538fe24e87e76decf.tar.lz
InputXSLT-d19a195985b96701b2ab302538fe24e87e76decf.tar.xz
InputXSLT-d19a195985b96701b2ab302538fe24e87e76decf.tar.zst
InputXSLT-d19a195985b96701b2ab302538fe24e87e76decf.zip
Added possibility for streaming TransformationFacade output
* added "std::basic_ostream<char>" taking "generate" member method overloads * marked cli parameter "target" as optional ** output is streamed to std::cout if target file is not provided
Diffstat (limited to 'src/transformation_facade.h')
-rw-r--r--src/transformation_facade.h41
1 files changed, 38 insertions, 3 deletions
diff --git a/src/transformation_facade.h b/src/transformation_facade.h
index be06d07..7fb0926 100644
--- a/src/transformation_facade.h
+++ b/src/transformation_facade.h
@@ -15,9 +15,14 @@ class TransformationFacade {
explicit TransformationFacade(const std::string&);
~TransformationFacade();
- int generate(const std::string&);
- int generate(const std::string&, const StylesheetParameterGuard::map&);
- int generate(const std::string&, const xalan::XObjectPtr&);
+ template <typename Target>
+ int generate(Target&);
+
+ template <typename Target>
+ int generate(Target&, const StylesheetParameterGuard::map&);
+
+ template <typename Target>
+ int generate(Target&, const xalan::XObjectPtr&);
private:
const xalan::XalanCompiledStylesheet* transformation_;
@@ -25,9 +30,39 @@ class TransformationFacade {
xalan::XalanTransformer transformer_;
int generate(const std::string&, StylesheetParameterGuard&);
+ int generate(std::basic_ostream<char>&, StylesheetParameterGuard&);
+ int generate(xalan::XSLTResultTarget&&, StylesheetParameterGuard&);
};
+template <typename Target>
+int TransformationFacade::generate(Target& target) {
+ StylesheetParameterGuard guard(this->transformer_);
+
+ return this->generate(target, guard);
+}
+
+template <typename Target>
+int TransformationFacade::generate(
+ Target& target,
+ const StylesheetParameterGuard::map& parameters
+) {
+ StylesheetParameterGuard guard(this->transformer_, parameters);
+
+ return this->generate(target, guard);
+}
+
+template <typename Target>
+int TransformationFacade::generate(
+ Target& target,
+ const xalan::XObjectPtr& parameter
+) {
+ StylesheetParameterGuard guard(this->transformer_);
+ guard.set("parameters", parameter);
+
+ return this->generate(target, guard);
+}
+
}
#endif // INPUTXSLT_SRC_TRANSFORMATION_FACADE_H_