summaryrefslogtreecommitdiff
path: root/libs/pbd
diff options
context:
space:
mode:
authorTim Mayberry <mojofunk@gmail.com>2015-10-29 22:41:38 +1000
committerTim Mayberry <mojofunk@gmail.com>2015-12-01 14:22:38 +1000
commite0254155162f202e259cd8c3d189fa4f8e1f8b75 (patch)
treebcc01daa6aa8e43817571f1fff61f2d21d0dc0de /libs/pbd
parent36fa6703095ec8d562a5ab87269486d82294b4ef (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.cc5
-rw-r--r--libs/pbd/pbd/demangle.h30
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__