1 #ifndef DEMANGLE_UTIL_H 2 #define DEMANGLE_UTIL_H 7 #if defined( __clang__ ) && defined( __has_include ) 8 # if __has_include(<cxxabi.h>) 11 #elif defined( __GLIBCXX__ ) || defined( __GLIBCPP__ ) 15 #if defined( HAS_CXXABI_H ) 43 char const *
get()
const noexcept
53 #if defined( HAS_CXXABI_H ) 59 return abi::__cxa_demangle( name, NULL, &size, &status );
64 std::free( const_cast< char* >( name ) );
78 inline std::string
demangle(
char const * name )
85 inline std::string
demangle(
const std::type_info* info)
91 if (info == &
typeid(std::string))
96 char const*
const p = demangled_name.
get();
107 inline std::string
demangle(
const std::type_info& info)
116 #endif // DEMANGLE_UTIL_H char const * get() const noexcept
scoped_demangled_name & operator=(scoped_demangled_name const &)=delete
scoped_demangled_name(char const *name) noexcept
std::string demangle(char const *name)
char const * demangle_alloc(char const *name) noexcept
~scoped_demangled_name() noexcept
void demangle_free(char const *name) noexcept