ALib C++ Library
Library Version:
1912 R0
Documentation generated by
src
alib
lib
fs_debug
typedemangler.cpp
1
// #################################################################################################
2
// ALib C++ Library
3
//
4
// Copyright 2013-2019 A-Worx GmbH, Germany
5
// Published under 'Boost Software License' (a free software license, see LICENSE.txt)
6
// #################################################################################################
7
#include "
alib/alib_precompile.hpp
"
8
9
#if !defined(ALIB_DOX)
10
#if !defined(HPP_ALIB_COMPILERS)
11
# include "
alib/lib/compilers.hpp
"
12
#endif
13
#endif // !defined(ALIB_DOX)
14
15
#if ALIB_DEBUG
16
17
#if !defined(ALIB_DOX)
18
#if !defined (HPP_ALIB_FS_DEBUG_TYPEDEMANGLER)
19
# include "
alib/lib/fs_debug/typedemangler.hpp
"
20
#endif
21
22
#if defined(__GNUC__) || defined(__clang__)
23
# include <cxxabi.h>
24
# include <cassert>
25
#endif
26
27
#if !defined(_GLIBCXX_CSTDLIB) && !defined(_CSTDLIB_)
28
# include <cstdlib>
29
#endif
30
31
#if defined(_WIN32) && !defined(_CSTRING_)
32
# include <cstring>
33
#endif
34
#endif // !defined(ALIB_DOX)
35
36
namespace
aworx
{
namespace
lib {
37
38
#if defined(__GNUC__) || defined(__clang__)
39
40
DbgTypeDemangler::DbgTypeDemangler
(
const
std::type_info& typeInfo )
41
{
42
int
status;
43
name
= abi::__cxa_demangle( typeInfo.name(),
nullptr
,
nullptr
, &status);
44
assert( status==0 );
45
}
46
47
DbgTypeDemangler::~DbgTypeDemangler
()
48
{
49
if
(
name
)
50
std::free(static_cast<void*>( const_cast<char*>(
name
) ) );
51
}
52
53
const
char
*
DbgTypeDemangler::Get
()
54
{
55
return
name
;
56
}
57
58
#else
59
DbgTypeDemangler::DbgTypeDemangler
(
const
type_info& typeInfo )
60
{
61
name
= typeInfo.name();
62
if
(std::strncmp(
name
,
"class "
, 6) == 0)
63
name
+= 6;
64
}
65
66
DbgTypeDemangler::~DbgTypeDemangler
()
67
{
68
}
69
70
const
char
*
DbgTypeDemangler::Get
()
71
{
72
return
name
;
73
}
74
#endif
75
76
}}
// namespace [aworx::lib}
77
#endif
78
aworx::lib::DbgTypeDemangler::name
const char * name
Definition:
typedemangler.hpp:35
alib_precompile.hpp
compilers.hpp
aworx::lib::DbgTypeDemangler::Get
const ALIB_API char * Get()
Definition:
typedemangler.cpp:53
aworx
Definition:
alox/alox.hpp:40
aworx::lib::DbgTypeDemangler::~DbgTypeDemangler
ALIB_API ~DbgTypeDemangler()
Definition:
typedemangler.cpp:47
typedemangler.hpp
aworx::lib::DbgTypeDemangler::DbgTypeDemangler
ALIB_API DbgTypeDemangler(const std::type_info &typeInfo)
Definition:
typedemangler.cpp:40