summaryrefslogtreecommitdiff
path: root/libcult/cult/eh
diff options
context:
space:
mode:
Diffstat (limited to 'libcult/cult/eh')
-rw-r--r--libcult/cult/eh/exception.cxx27
-rw-r--r--libcult/cult/eh/exception.hxx25
2 files changed, 52 insertions, 0 deletions
diff --git a/libcult/cult/eh/exception.cxx b/libcult/cult/eh/exception.cxx
new file mode 100644
index 0000000..21494cd
--- /dev/null
+++ b/libcult/cult/eh/exception.cxx
@@ -0,0 +1,27 @@
+// file : cult/eh/exception.cxx
+// author : Boris Kolpackov <boris@kolpackov.net>
+// copyright : Copyright (c) 2005-2010 Boris Kolpackov
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <cult/eh/exception.hxx>
+
+#include <typeinfo>
+
+namespace Cult
+{
+ namespace EH
+ {
+ Char const* Exception::
+ what () const throw ()
+ {
+ try
+ {
+ return typeid (*this).name ();
+ }
+ catch (...)
+ {
+ return "";
+ }
+ }
+ }
+}
diff --git a/libcult/cult/eh/exception.hxx b/libcult/cult/eh/exception.hxx
new file mode 100644
index 0000000..266c591
--- /dev/null
+++ b/libcult/cult/eh/exception.hxx
@@ -0,0 +1,25 @@
+// file : cult/eh/exception.hxx
+// author : Boris Kolpackov <boris@kolpackov.net>
+// copyright : Copyright (c) 2005-2010 Boris Kolpackov
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef CULT_EH_EXCEPTION_HXX
+#define CULT_EH_EXCEPTION_HXX
+
+#include <cult/types/fundamental.hxx>
+
+#include <exception> // std::exception
+
+namespace Cult
+{
+ namespace EH
+ {
+ struct Exception : std::exception
+ {
+ virtual Char const*
+ what () const throw ();
+ };
+ }
+}
+
+#endif // CULT_EH_EXCEPTION_HXX