ardour
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
libs
pbd
pbd
demangle.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2009 Paul Davis
3
Author: Sakari Bergen
4
5
This program is free software; you can redistribute it and/or modify
6
it under the terms of the GNU General Public License as published by
7
the Free Software Foundation; either version 2 of the License, or
8
(at your option) any later version.
9
10
This program is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
GNU General Public License for more details.
14
15
You should have received a copy of the GNU General Public License
16
along with this program; if not, write to the Free Software
17
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18
*/
19
20
#ifndef __libpbd_demangle_h__
21
#define __libpbd_demangle_h__
22
23
#include <string>
24
#include <cstdlib>
25
#include <typeinfo>
26
27
#ifdef __GNUC__
28
#include <cxxabi.h>
29
#endif
30
31
#include "
pbd/libpbd_visibility.h
"
32
33
namespace
PBD
34
{
35
template
<
typename
T>
/*LIBPBD_API*/
36
std::string
demangled_name
(T
const
& obj)
37
{
38
#ifdef __GNUC__
39
int
status;
40
char
* res = abi::__cxa_demangle (
typeid
(obj).
name
(), 0, 0, &status);
41
if
(status == 0) {
42
std::string s(res);
43
free (res);
44
return
s;
45
}
46
#endif
47
48
/* Note: on win32, you can use UnDecorateSymbolName.
49
See http://msdn.microsoft.com/en-us/library/ms681400%28VS.85%29.aspx
50
See also: http://msdn.microsoft.com/en-us/library/ms680344%28VS.85%29.aspx
51
*/
52
53
return
typeid
(obj).
name
();
54
}
55
}
// namespace
56
57
#endif // __libpbd_demangle_h__
PBD::demangled_name
std::string demangled_name(T const &obj)
Definition:
demangle.h:36
name
const char * name
Definition:
rc_option_editor.cc:257
PBD
Definition:
debug.h:30
libpbd_visibility.h
Generated on Sun May 24 2015 12:15:08 for ardour by
1.8.8