///////////////////////////////cci.p///////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
-// senf::Exception
+// senf::ExceptionMixin
-prefix_ senf::Exception::Exception(std::string const & description)
- : message_(description)
-{}
+prefix_ senf::ExceptionMixin::ExceptionMixin(std::string const & description)
+ : what_(description)
+{
+#ifdef SENF_DEBUG
+ addBacktrace();
+#endif
+}
-prefix_ std::string const & senf::Exception::message()
+prefix_ std::string senf::ExceptionMixin::message()
const
{
- return message_;
+#ifdef SENF_DEBUG
+ return what_.substr(excLen_);
+#else
+ return what_;
+#endif
}
-prefix_ void senf::Exception::append(std::string text)
+prefix_ std::string senf::ExceptionMixin::backtrace()
+ const
{
- message_ += text;
+#ifdef SENF_DEBUG
+ return what_.substr(0,excLen_-4);
+#else
+ return "";
+#endif
}
+prefix_ void senf::ExceptionMixin::append(std::string text)
+{
+ what_ += text;
+}
+
+///////////////////////////////////////////////////////////////////////////
+// senf::Exception
+
+prefix_ senf::Exception::Exception(std::string const & description)
+ : ExceptionMixin(description)
+{}
+
///////////////////////////////////////////////////////////////////////////
// senf::SystemException