ALib C++ Framework
by
Library Version: 2605 R0
Documentation generated by doxygen
Loading...
Searching...
No Matches
dbgtypedemangler.cpp
1
2//##################################################################################################
3// Type De-mangling
4//##################################################################################################
5#if ALIB_DEBUG && !DOXYGEN
6namespace alib::lang {
7
8 #if defined(__GNUC__) || defined(__clang__)
9DbgTypeDemangler::DbgTypeDemangler( const std::type_info& typeInfo ) {
10 int status;
11 name= abi::__cxa_demangle( typeInfo.name(), nullptr, nullptr, &status);
12 assert( status==0 || !name );
13 if ((failed= (name==nullptr)))
14 name= "<DbgTypeDemangler Error>";
15}
16
18{ if (!failed) std::free(static_cast<void*>( const_cast<char*>(name) ) ); }
19
20 #else
21 lang::DbgTypeDemangler::DbgTypeDemangler( const type_info& typeInfo )
22 {
23 name= typeInfo.name();
24 if (std::strncmp( name, "class ", 6) == 0)
25 name+= 6;
26 }
27 #endif
28
29const char* DbgTypeDemangler::Get() { return name; }
30
31} // namespace [alib::lang}
32
33#endif // ALIB_DEBUG && !DOXYGEN
DbgTypeDemangler(const std::type_info &typeInfo)
bool failed
If true, demangling failed.
const char * name
The translated name.
void typeInfo(AString &target, const detail::VTable *vtable, const String &indent, bool srcIsPointer, bool srcIsStringType, bool srcIsUnboxableStringType, bool isValueTypeCustomized, bool isPointerTypeCustomized, bool fitsToPlaceholder, bool copyConstructible, bool triviallyDestructible, bool isUnboxable)