dune-common
2.2.1
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
dune
common
classname.hh
Go to the documentation of this file.
1
#ifndef DUNE_CLASSNAME_HH
2
#define DUNE_CLASSNAME_HH
3
9
#include <cstdlib>
10
#include <string>
11
#include <typeinfo>
12
13
#if defined(__GNUC__) && ! defined(__clang__)
14
#include <cxxabi.h>
15
#endif // #ifdef __GNUC__
16
17
namespace
Dune {
18
20
template
<
class
T>
21
std::string
className
( T &
t
)
22
{
23
std::string
className
=
typeid
(
t
).name();
24
#if defined(__GNUC__) && ! defined(__clang__)
25
int
status;
26
char
*demangled = abi::__cxa_demangle( className.c_str(), 0, 0, &status );
27
if
( demangled )
28
{
29
className = demangled;
30
std::free( demangled );
31
}
32
#endif // #ifdef __GNUC__
33
return
className
;
34
}
35
37
template
<
class
T>
38
std::string
className
()
39
{
40
std::string
className
=
typeid
( T ).name();
41
#if defined(__GNUC__) && ! defined(__clang__)
42
int
status;
43
char
*demangled = abi::__cxa_demangle( className.c_str(), 0, 0, &status );
44
if
( demangled )
45
{
46
className = demangled;
47
std::free( demangled );
48
}
49
#endif // #ifdef __GNUC__
50
return
className
;
51
}
52
53
}
// namespace Dune
54
55
#endif // DUNE_CLASSNAME_HH
Generated on Sun May 12 2013 23:19:48 for dune-common by
1.8.3.1