diff options
author | Tim Mayberry <mojofunk@gmail.com> | 2015-10-29 22:41:38 +1000 |
---|---|---|
committer | Tim Mayberry <mojofunk@gmail.com> | 2015-12-01 14:22:38 +1000 |
commit | e0254155162f202e259cd8c3d189fa4f8e1f8b75 (patch) | |
tree | bcc01daa6aa8e43817571f1fff61f2d21d0dc0de /libs/pbd | |
parent | 36fa6703095ec8d562a5ab87269486d82294b4ef (diff) |
Use PBD::demangle_symbol in PBD::demangled_name<T> to reduce code duplication
Diffstat (limited to 'libs/pbd')
-rw-r--r-- | libs/pbd/demangle.cc | 5 | ||||
-rw-r--r-- | libs/pbd/pbd/demangle.h | 30 |
2 files changed, 11 insertions, 24 deletions
diff --git a/libs/pbd/demangle.cc b/libs/pbd/demangle.cc index cd084ec3c9..97d4e11926 100644 --- a/libs/pbd/demangle.cc +++ b/libs/pbd/demangle.cc @@ -40,6 +40,11 @@ PBD::demangle_symbol (const std::string& mangled_symbol) } #endif + /* Note: on win32, you can use UnDecorateSymbolName. + See http://msdn.microsoft.com/en-us/library/ms681400%28VS.85%29.aspx + See also: http://msdn.microsoft.com/en-us/library/ms680344%28VS.85%29.aspx + */ + return mangled_symbol; } diff --git a/libs/pbd/pbd/demangle.h b/libs/pbd/pbd/demangle.h index 98b8bf787c..71eca16583 100644 --- a/libs/pbd/pbd/demangle.h +++ b/libs/pbd/pbd/demangle.h @@ -24,34 +24,10 @@ #include <cstdlib> #include <typeinfo> -#ifdef __GNUC__ -#include <cxxabi.h> -#endif - #include "pbd/libpbd_visibility.h" namespace PBD { - template<typename T> /*LIBPBD_API*/ - std::string demangled_name (T const & obj) - { -#ifdef __GNUC__ - int status; - char * res = abi::__cxa_demangle (typeid(obj).name(), 0, 0, &status); - if (status == 0) { - std::string s(res); - free (res); - return s; - } -#endif - - /* Note: on win32, you can use UnDecorateSymbolName. - See http://msdn.microsoft.com/en-us/library/ms681400%28VS.85%29.aspx - See also: http://msdn.microsoft.com/en-us/library/ms680344%28VS.85%29.aspx - */ - - return typeid(obj).name(); - } /** * @param symbol a mangled symbol/name @@ -66,6 +42,12 @@ namespace PBD */ LIBPBD_API std::string demangle(const std::string& str); + template<typename T> + std::string demangled_name (T const & obj) + { + return demangle_symbol(typeid(obj).name()); + } + } // namespace #endif // __libpbd_demangle_h__ |