aboutsummaryrefslogtreecommitdiff
path: root/src/support/error/error_capacitor.cc
diff options
context:
space:
mode:
authorAdrian Kummerländer2014-06-06 22:00:39 +0200
committerAdrian Kummerländer2014-06-06 22:00:39 +0200
commit272b34c1a4639cd0f909bfb52d30339c93b0c42b (patch)
treed3bed13ddf28e86f8de319222daf535305082431 /src/support/error/error_capacitor.cc
parent78bb3387b15d15d766fb5d17a99612f0480f2bee (diff)
downloadInputXSLT-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.cc18
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());
}
}