X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fpbd%2Fpbd%2Fdemangle.h;h=9e28abe60072ac6b9473af01bb9cd9d30c6e28d3;hb=7d880912291992392131b2928482d77d3505f126;hp=12dc58839c064977bd1e263482023a23b7706d94;hpb=8c9749e42faf7808034ed8b7afce4a2fe6dc6f33;p=ardour.git diff --git a/libs/pbd/pbd/demangle.h b/libs/pbd/pbd/demangle.h index 12dc58839c..9e28abe600 100644 --- a/libs/pbd/pbd/demangle.h +++ b/libs/pbd/pbd/demangle.h @@ -24,34 +24,30 @@ #include #include -#ifdef __GNUC__ -#include -#endif - #include "pbd/libpbd_visibility.h" namespace PBD { - template /*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 + * @return a demangled symbol/name + */ +LIBPBD_API std::string demangle_symbol(const std::string& symbol); + +/** + * @param str a string containing a mangled symbol/name + * @return a string with the mangled symbol/name replaced with a demangled + * name + */ +LIBPBD_API std::string demangle(const std::string& str); + +template +std::string demangled_name(T const& obj) +{ + return demangle_symbol(typeid(obj).name()); +} + } // namespace #endif // __libpbd_demangle_h__