44 #ifndef _DWMTYPENAME_HH_ 45 #define _DWMTYPENAME_HH_ 86 static const std::string rcsid =
"@(#) $DwmPath: dwm/libDwm/tags/libDwm-0.6.1/include/DwmTypeName.hh 9017 $";
89 int demangleStatus = -1;
91 abi::__cxa_demangle(
typeid(x).name(), 0, 0, &demangleStatus);
95 if (rc ==
"unsigned") {
103 if (demangleStatus == -2) {
104 rc = BuiltinTypeName<T>();
114 template <
typename T>
119 char *demangledName =
120 __cxa_demangle(
typeid(x).name(), 0, 0, &demangleStatus);
122 if (demangleStatus == 0) {
124 if (rc ==
"unsigned") {
132 if (demangleStatus == -2) {
133 rc = BuiltinTypeName<T>();
137 std::string::size_type idx = rc.find_last_of(
"::");
138 if (idx != rc.npos) {
139 rc = rc.substr(idx + 1);
148 template <
typename T>
153 char *demangledName =
154 __cxa_demangle(
typeid(T).name(), 0, 0, &demangleStatus);
156 if (demangleStatus == 0) {
163 if (demangleStatus == -2) {
164 rc = BuiltinTypeName<T>();
173 #endif // _DWMTYPENAME_HH_ std::string BuiltinTypeName(const std::type_info &typeInfo)
Returns a string holding the demangled name for the given typeInfo.
std::string TypeName(const T &x)
Returns the name of type T.
Definition: DwmTypeName.hh:84
Definition: DwmBZ2IO.hh:67
std::string TypeNameNoNamespace(const T &x)
Returns the name of type T, sans its namespace.
Definition: DwmTypeName.hh:115