From 3bc793d95293d40dbab62c593ce4ceaa86fae25b Mon Sep 17 00:00:00 2001 From: Adrian Kummerländer Date: Thu, 29 May 2014 13:26:37 +0200 Subject: Improved TransformationFacade error handling * ErrorHandler class created in 5859cb6 now caches all errors instead of pushing them to std::cerr ** cached errors are retrieved by TransformationFacade's "generate" member method * test frontend pushes all errors to std::cerr * FunctionTransform returns errors to the calling template as XML ** FunctionTransform test case demonstrates how one may test for successful transformation * "generate" member method returns std::string vector wrapped in a std::unique_ptr ** this is used as a kind of optional pointer, as the std::unique_ptr instance only wraps a vector if errors where actually generated --- src/transformation_facade.h | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'src/transformation_facade.h') diff --git a/src/transformation_facade.h b/src/transformation_facade.h index ab76cac..28d1895 100644 --- a/src/transformation_facade.h +++ b/src/transformation_facade.h @@ -14,17 +14,19 @@ namespace InputXSLT { class TransformationFacade { public: + typedef ErrorHandler::error_cache_ptr return_type; + TransformationFacade(const std::string&, IncludeEntityResolver*); ~TransformationFacade(); template - int generate(Target&); + return_type generate(Target&); template - int generate(Target&, const StylesheetParameterGuard::map&); + return_type generate(Target&, const StylesheetParameterGuard::map&); template - int generate(Target&, const xalan::XObjectPtr&); + return_type generate(Target&, const xalan::XObjectPtr&); private: const xalan::XalanCompiledStylesheet* transformation_; @@ -32,34 +34,34 @@ class TransformationFacade { xalan::XalanTransformer transformer_; ErrorHandler error_handler_; - int generate(const std::string&, StylesheetParameterGuard&); - int generate(std::basic_ostream&, StylesheetParameterGuard&); - int generate(xalan::XSLTResultTarget&&, StylesheetParameterGuard&); + return_type generate(const std::string&, StylesheetParameterGuard&); + return_type generate(std::basic_ostream&, StylesheetParameterGuard&); + return_type generate(xalan::XSLTResultTarget&&, StylesheetParameterGuard&); }; template -int TransformationFacade::generate(Target& target) { +auto TransformationFacade::generate(Target& target) -> return_type { StylesheetParameterGuard guard(this->transformer_); return this->generate(target, guard); } template -int TransformationFacade::generate( +auto TransformationFacade::generate( Target& target, const StylesheetParameterGuard::map& parameters -) { +) -> return_type { StylesheetParameterGuard guard(this->transformer_, parameters); return this->generate(target, guard); } template -int TransformationFacade::generate( +auto TransformationFacade::generate( Target& target, const xalan::XObjectPtr& parameter -) { +) -> return_type { StylesheetParameterGuard guard(this->transformer_); guard.set("parameters", parameter); -- cgit v1.2.3