1
#include <cppunit/Portability.h>
2
#include <cppunit/extensions/TypeInfoHelper.h>
8
#if CPPUNIT_HAVE_GCC_ABI_DEMANGLE
17
TypeInfoHelper::getClassName( const std::type_info &info )
19
#if defined(CPPUNIT_HAVE_GCC_ABI_DEMANGLE) && CPPUNIT_HAVE_GCC_ABI_DEMANGLE
24
c_name = abi::__cxa_demangle( info.name(), 0, 0, &status );
26
std::string name( c_name );
29
#else // CPPUNIT_HAVE_GCC_ABI_DEMANGLE
31
static std::string classPrefix( "class " );
32
std::string name( info.name() );
34
// Work around gcc 3.0 bug: strip number before type name.
35
unsigned int firstNotDigitIndex = 0;
36
while ( firstNotDigitIndex < name.length() &&
37
name[firstNotDigitIndex] >= '0' &&
38
name[firstNotDigitIndex] <= '9' )
40
name = name.substr( firstNotDigitIndex );
42
if ( name.substr( 0, classPrefix.length() ) == classPrefix )
43
return name.substr( classPrefix.length() );
45
#endif // CPPUNIT_HAVE_GCC_ABI_DEMANGLE
53
#endif // CPPUNIT_HAVE_RTTI