Packets: Fix VariantParser invalid parser access bug
[senf.git] / Utils / Exception.cci
index f6d5a0a..189c2f1 100644 (file)
 ///////////////////////////////cci.p///////////////////////////////////////
 
 ///////////////////////////////////////////////////////////////////////////
+// senf::ExceptionMixin
+
+prefix_ senf::ExceptionMixin::ExceptionMixin(std::string const & description)
+    : message_(description)
+{
+#ifdef SENF_DEBUG
+    addBacktrace();
+#endif
+}
+
+prefix_ std::string const & senf::ExceptionMixin::message()
+    const
+{
+    return message_;
+}
+
+prefix_ void senf::ExceptionMixin::append(std::string text)
+{
+    message_ += text;
+}
+
+///////////////////////////////////////////////////////////////////////////
 // senf::Exception
+
 prefix_ senf::Exception::Exception(std::string const & description)
-    : message_(description)
+    : ExceptionMixin(description)
 {}
 
 ///////////////////////////////////////////////////////////////////////////
+// senf::SystemException
 
-prefix_ senf::SystemException::SystemException(std::string const & descr)
+prefix_ senf::SystemException::SystemException(std::string const & descr _SENF_EXC_DEBUG_ARGS_ND)
 {
-    init(descr, errno);
+    init(descr, errno _SENF_EXC_DEBUG_ARGS_P);
 }
 
-prefix_ senf::SystemException::SystemException(int code)
+prefix_ senf::SystemException::SystemException(int code _SENF_EXC_DEBUG_ARGS_ND)
 {
-    init("", code);
+    init("", code _SENF_EXC_DEBUG_ARGS_P);
 }
 
-prefix_ senf::SystemException::SystemException(std::string const & descr, int code)
+prefix_ senf::SystemException::SystemException(std::string const & descr, int code 
+                                               _SENF_EXC_DEBUG_ARGS_ND)
 {
-    init(descr, code);
+    init(descr, code _SENF_EXC_DEBUG_ARGS_P);
 }
 
 prefix_ int senf::SystemException::errorNumber()