iLab Neuromorphic Robotics Toolkit  0.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Demangle.H
Go to the documentation of this file.
1 /*! @file
2  @author Laurent Itti
3  @copyright GNU Public License (GPL v3)
4  @section License
5  @verbatim
6  // ////////////////////////////////////////////////////////////////////////
7  // The iLab Neuromorphic Robotics Toolkit (NRT) //
8  // Copyright 2010-2012 by the University of Southern California (USC) //
9  // and the iLab at USC. //
10  // //
11  // iLab - University of Southern California //
12  // Hedco Neurociences Building, Room HNB-10 //
13  // Los Angeles, Ca 90089-2520 - USA //
14  // //
15  // See http://ilab.usc.edu for information about this project. //
16  // ////////////////////////////////////////////////////////////////////////
17  // This file is part of The iLab Neuromorphic Robotics Toolkit. //
18  // //
19  // The iLab Neuromorphic Robotics Toolkit is free software: you can //
20  // redistribute it and/or modify it under the terms of the GNU General //
21  // Public License as published by the Free Software Foundation, either //
22  // version 3 of the License, or (at your option) any later version. //
23  // //
24  // The iLab Neuromorphic Robotics Toolkit is distributed in the hope //
25  // that it will be useful, but WITHOUT ANY WARRANTY; without even the //
26  // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR //
27  // PURPOSE. See the GNU General Public License for more details. //
28  // //
29  // You should have received a copy of the GNU General Public License //
30  // along with The iLab Neuromorphic Robotics Toolkit. If not, see //
31  // <http://www.gnu.org/licenses/>. //
32  // ////////////////////////////////////////////////////////////////////////
33  @endverbatim */
34 
35 
36 #ifndef INCLUDE_NRT_CORE_TYPING_DEMANGLE_H
37 #define INCLUDE_NRT_CORE_TYPING_DEMANGLE_H
38 #include <string>
39 #include <typeinfo>
40 
41 namespace nrt
42 {
43  /*! \defgroup demangling Name demangling functions
44 
45  Name demangling functions return the original name of a type as written in the source code, as opposed to the name
46  used internally by the compiler, which is mangled to avoid name conflicts and confusions across different
47  namespaces, overloads, and such.
48 
49  See http://en.wikipedia.org/wiki/Name_mangling for more information.
50 
51  \ingroup typing */
52 
53  /*! @{ */ // **********************************************************************
54 
55  //! Demangle a mangled name
56  std::string demangle(std::string mangledName);
57 
58  //! Get the demangled type name of type T
59  template <class T>
60  std::string demangledName();
61 
62  //! Get the demangled type name of variable t
63  template <class T>
64  std::string demangledName(T const & t);
65 
66  /*! @} */ // **********************************************************************
67 
68 } // namespace nrt
69 
70 // Include implementation details of no interest to end users
72 
73 #endif // INCLUDE_NRT_CORE_TYPING_DEMANGLE_H
74