#ifndef INPUTXSLT_SRC_TRANSFORMATION_FACADE_H_ #define INPUTXSLT_SRC_TRANSFORMATION_FACADE_H_ #include #include #include "common.h" #include "support/error_handler.h" #include "support/include_entity_resolver.h" #include "support/stylesheet_parameter_guard.h" namespace InputXSLT { class TransformationFacade { public: typedef ErrorHandler::error_cache_ptr return_type; TransformationFacade(const std::string&, IncludeEntityResolver*); ~TransformationFacade(); template return_type generate(Target&); template return_type generate(Target&, const StylesheetParameterGuard::map&); template return_type generate(Target&, const xalan::XObjectPtr&); private: const xalan::XalanCompiledStylesheet* transformation_; xalan::XalanTransformer transformer_; ErrorHandler error_handler_; return_type generate(const std::string&, StylesheetParameterGuard&); return_type generate(std::basic_ostream&, StylesheetParameterGuard&); return_type generate(xalan::XSLTResultTarget&&, StylesheetParameterGuard&); }; template auto TransformationFacade::generate(Target& target) -> return_type { StylesheetParameterGuard guard(this->transformer_); return this->generate(target, guard); } template auto TransformationFacade::generate( Target& target, const StylesheetParameterGuard::map& parameters ) -> return_type { StylesheetParameterGuard guard(this->transformer_, parameters); return this->generate(target, guard); } template auto TransformationFacade::generate( Target& target, const xalan::XObjectPtr& parameter ) -> return_type { StylesheetParameterGuard guard(this->transformer_); guard.set("parameters", parameter); return this->generate(target, guard); } } #endif // INPUTXSLT_SRC_TRANSFORMATION_FACADE_H_