Replace SENFSCons.InstallIncludeFiles with InstallSubdir builder calls
[senf.git] / Utils / Exception.cci
index 1b611a2..6f7e13d 100644 (file)
 ///////////////////////////////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
+{
+#ifdef SENF_DEBUG
+    return what_.substr(excLen_);
+#else
+    return what_;
+#endif
+}
+
+prefix_ std::string senf::ExceptionMixin::backtrace()
     const
 {
-    return message_;
+#ifdef SENF_DEBUG
+    return what_.substr(0,excLen_-4);
+#else
+    return "";
+#endif
 }
 
-prefix_ void senf::Exception::append(std::string text)
+prefix_ void senf::ExceptionMixin::append(std::string text)
 {
-    message_ += text;
+    what_ += text;
 }
 
 ///////////////////////////////////////////////////////////////////////////
+// senf::Exception
+
+prefix_ senf::Exception::Exception(std::string const & description)
+    : ExceptionMixin(description)
+{}
+
+///////////////////////////////////////////////////////////////////////////
 // senf::SystemException
 
 prefix_ senf::SystemException::SystemException(std::string const & descr _SENF_EXC_DEBUG_ARGS_ND)