diff options
author | Adrian Kummerländer | 2014-05-29 13:26:37 +0200 |
---|---|---|
committer | Adrian Kummerländer | 2014-05-29 13:26:37 +0200 |
commit | 3bc793d95293d40dbab62c593ce4ceaa86fae25b (patch) | |
tree | 07a0f99d72a074a75955a593318cc8bcd394f4c2 /src/transformation_facade.h | |
parent | 52b60c1a8c23f11ab18fad06e0957490c7436e0a (diff) | |
download | InputXSLT-3bc793d95293d40dbab62c593ce4ceaa86fae25b.tar InputXSLT-3bc793d95293d40dbab62c593ce4ceaa86fae25b.tar.gz InputXSLT-3bc793d95293d40dbab62c593ce4ceaa86fae25b.tar.bz2 InputXSLT-3bc793d95293d40dbab62c593ce4ceaa86fae25b.tar.lz InputXSLT-3bc793d95293d40dbab62c593ce4ceaa86fae25b.tar.xz InputXSLT-3bc793d95293d40dbab62c593ce4ceaa86fae25b.tar.zst InputXSLT-3bc793d95293d40dbab62c593ce4ceaa86fae25b.zip |
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
Diffstat (limited to 'src/transformation_facade.h')
-rw-r--r-- | src/transformation_facade.h | 24 |
1 files changed, 13 insertions, 11 deletions
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 <typename Target> - int generate(Target&); + return_type generate(Target&); template <typename Target> - int generate(Target&, const StylesheetParameterGuard::map&); + return_type generate(Target&, const StylesheetParameterGuard::map&); template <typename Target> - 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<char>&, StylesheetParameterGuard&); - int generate(xalan::XSLTResultTarget&&, StylesheetParameterGuard&); + return_type generate(const std::string&, StylesheetParameterGuard&); + return_type generate(std::basic_ostream<char>&, StylesheetParameterGuard&); + return_type generate(xalan::XSLTResultTarget&&, StylesheetParameterGuard&); }; template <typename Target> -int TransformationFacade::generate(Target& target) { +auto TransformationFacade::generate(Target& target) -> return_type { StylesheetParameterGuard guard(this->transformer_); return this->generate(target, guard); } template <typename Target> -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 <typename Target> -int TransformationFacade::generate( +auto TransformationFacade::generate( Target& target, const xalan::XObjectPtr& parameter -) { +) -> return_type { StylesheetParameterGuard guard(this->transformer_); guard.set("parameters", parameter); |