aboutsummaryrefslogtreecommitdiff
path: root/src/transformation_facade.h
diff options
context:
space:
mode:
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_