10 #include <EABase/eabase.h>
11 #include <EASTL/type_traits.h>
12 #include <EASTL/string.h>
23 #if !defined(EASTL_LIBSTDCPP_DEMANGLE_AVAILABLE)
24 #if (defined(EA_PLATFORM_LINUX) || defined(EA_PLATFORM_APPLE)) && defined(EA_PLATFORM_DESKTOP)
25 #define EASTL_LIBSTDCPP_DEMANGLE_AVAILABLE 1
27 #define EASTL_LIBSTDCPP_DEMANGLE_AVAILABLE 0
32 #if EASTL_LIBSTDCPP_DEMANGLE_AVAILABLE
34 #elif EA_WINAPI_FAMILY_PARTITION(EA_WINAPI_PARTITION_DESKTOP)
35 EA_DISABLE_ALL_VC_WARNINGS();
38 #pragma comment(lib, "dbghelp.lib")
39 EA_RESTORE_ALL_VC_WARNINGS();
49 #if !defined(EASTLTEST_GETTYPENAME_AVAILABLE)
50 #if (EASTL_LIBSTDCPP_DEMANGLE_AVAILABLE || EA_WINAPI_FAMILY_PARTITION(EA_WINAPI_PARTITION_DESKTOP)) && (!defined(EA_COMPILER_NO_RTTI) || defined(_MSC_VER))
51 #define EASTLTEST_GETTYPENAME_AVAILABLE 1
53 #define EASTLTEST_GETTYPENAME_AVAILABLE 0
67 #if !defined(EA_COMPILER_NO_RTTI) || defined(_MSC_VER)
68 typedef typename eastl::remove_reference<T>::type TR;
70 const char* pName =
typeid(TR).name();
72 #if EASTL_LIBSTDCPP_DEMANGLE_AVAILABLE
73 const char* pDemangledName = abi::__cxa_demangle(pName, NULL, NULL, NULL);
75 #elif EA_WINAPI_FAMILY_PARTITION(EA_WINAPI_PARTITION_DESKTOP)
76 char pDemangledName[1024];
77 DWORD count = UnDecorateSymbolName(pName, pDemangledName, (DWORD)EAArrayCount(pDemangledName), UNDNAME_NO_THISTYPE | UNDNAME_NO_ACCESS_SPECIFIERS | UNDNAME_NO_MEMBER_TYPE);
79 pDemangledName[0] = 0;
81 const char* pDemangledName = NULL;
84 if(pDemangledName && pDemangledName[0])
85 result = pDemangledName;
93 result +=
" volatile";
102 #if EASTL_LIBSTDCPP_DEMANGLE_AVAILABLE
103 free((
void*)(pDemangledName));
Definition: type_traits.h:628
Definition: type_properties.h:328
Definition: type_properties.h:344
Definition: type_traits.h:650