diff options
Diffstat (limited to 'includes/Exceptions.h')
-rw-r--r-- | includes/Exceptions.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/includes/Exceptions.h b/includes/Exceptions.h index 39f3239..b6730c1 100644 --- a/includes/Exceptions.h +++ b/includes/Exceptions.h @@ -1,5 +1,6 @@ #pragma once +#include <cxxabi.h> #include <BString.h> namespace Balau { @@ -21,6 +22,21 @@ class GeneralException { static inline void AssertHelper(const String & msg) throw(GeneralException) { throw GeneralException(msg); } +class ClassName { + public: + template<typename T> ClassName(T * ptr); + ~ClassName() { free(m_demangled); } + const char * c_str() const { return m_demangled; } + private: + char * m_demangled; +}; + +template<typename T> +ClassName::ClassName(T * ptr) { + int status; + m_demangled = abi::__cxa_demangle(typeid(*ptr).name(), 0, 0, &status); +} + }; #define Assert(c) if (!(c)) { \ |