aboutsummaryrefslogtreecommitdiff
path: root/src/transformation_facade.h
diff options
context:
space:
mode:
authorAdrian Kummerländer2014-05-29 13:26:37 +0200
committerAdrian Kummerländer2014-05-29 13:26:37 +0200
commit3bc793d95293d40dbab62c593ce4ceaa86fae25b (patch)
tree07a0f99d72a074a75955a593318cc8bcd394f4c2 /src/transformation_facade.h
parent52b60c1a8c23f11ab18fad06e0957490c7436e0a (diff)
downloadInputXSLT-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.h24
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);