xref: /aosp_15_r20/external/pytorch/c10/util/Type.h (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1 #ifndef C10_UTIL_TYPE_H_
2 #define C10_UTIL_TYPE_H_
3 
4 #include <cstddef>
5 #include <string>
6 #ifdef __GXX_RTTI
7 #include <typeinfo>
8 #endif // __GXX_RTTI
9 
10 #include <c10/macros/Macros.h>
11 
12 namespace c10 {
13 
14 /// Utility to demangle a C++ symbol name.
15 C10_API std::string demangle(const char* name);
16 
17 /// Returns the printable name of the type.
18 template <typename T>
demangle_type()19 inline const char* demangle_type() {
20 #ifdef __GXX_RTTI
21   static const auto& name = *(new std::string(demangle(typeid(T).name())));
22   return name.c_str();
23 #else // __GXX_RTTI
24   return "(RTTI disabled, cannot show name)";
25 #endif // __GXX_RTTI
26 }
27 
28 } // namespace c10
29 
30 #endif // C10_UTIL_TYPE_H_
31