diff options
author | Adrian Kummerländer | 2014-06-06 22:00:39 +0200 |
---|---|---|
committer | Adrian Kummerländer | 2014-06-06 22:00:39 +0200 |
commit | 272b34c1a4639cd0f909bfb52d30339c93b0c42b (patch) | |
tree | d3bed13ddf28e86f8de319222daf535305082431 /src/support/error/error_capacitor.cc | |
parent | 78bb3387b15d15d766fb5d17a99612f0480f2bee (diff) | |
download | InputXSLT-272b34c1a4639cd0f909bfb52d30339c93b0c42b.tar InputXSLT-272b34c1a4639cd0f909bfb52d30339c93b0c42b.tar.gz InputXSLT-272b34c1a4639cd0f909bfb52d30339c93b0c42b.tar.bz2 InputXSLT-272b34c1a4639cd0f909bfb52d30339c93b0c42b.tar.lz InputXSLT-272b34c1a4639cd0f909bfb52d30339c93b0c42b.tar.xz InputXSLT-272b34c1a4639cd0f909bfb52d30339c93b0c42b.tar.zst InputXSLT-272b34c1a4639cd0f909bfb52d30339c93b0c42b.zip |
Implemented WarningCapacitor as a counterpart to ErrorCapacitor
* in difference to ErrorCapacitor this class doesn't throw an exception on "discharge" but returns the gathered warnings
* adapted FunctionTransform and frontend error handling to include warnings
* added static "try_create" method to TransformationFacade
** wraps construction error handling
** custom logic may be embedded using the std::function argument
*** this was implemented to prevent unneccessary code duplication for handling both construction and generation errors
* adapted FunctionTransform to return warning as "warning" nodes in the result tree
** added functional lambda expression factory method "handleErrors"
*** returns a error handling lambda expression for a given ResultNodeFacade
* implemented WarningGuard class in frontend executable
** guarantees warnings to be printed to std::cerr independent of any exceptions
Diffstat (limited to 'src/support/error/error_capacitor.cc')
-rw-r--r-- | src/support/error/error_capacitor.cc | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/src/support/error/error_capacitor.cc b/src/support/error/error_capacitor.cc index 58cfb81..cc7dd01 100644 --- a/src/support/error/error_capacitor.cc +++ b/src/support/error/error_capacitor.cc @@ -3,14 +3,8 @@ namespace InputXSLT { ErrorCapacitor::ErrorCapacitor(ErrorMultiplexer* multiplexer): - multiplexer_(multiplexer), - error_cache_(new error_cache()) { - this->multiplexer_->connectReceiver(this); -} - -ErrorCapacitor::~ErrorCapacitor() { - this->multiplexer_->disconnectReceiver(this); -} + ErrorMultiplexer::receiver(multiplexer), + error_cache_(new error_cache()) { } void ErrorCapacitor::discharge() { if ( !this->error_cache_->empty() ) { @@ -19,10 +13,10 @@ void ErrorCapacitor::discharge() { } void ErrorCapacitor::receive( - const ErrorMultiplexer::ErrorType type, + const ErrorMultiplexer::error_type type, const std::string& message ) { - if ( type == ErrorMultiplexer::ErrorType::Error ) { + if ( type == ErrorMultiplexer::error_type::error ) { this->error_cache_->emplace_back(message); } } @@ -30,8 +24,8 @@ void ErrorCapacitor::receive( ErrorCapacitor::exception::exception(error_cache_ptr ptr): error_cache_(std::move(ptr)) { } -auto ErrorCapacitor::exception::getCachedErrors() const -> const error_cache* { - return this->error_cache_.get(); +auto ErrorCapacitor::exception::operator*() const -> const error_cache& { + return *(this->error_cache_.get()); } } |