3#include <Core/CoreMacros.hpp>
4#include <Core/Utils/StringUtils.hpp>
26std::
string demangleType( const T& ) noexcept;
29std::
string demangleType( const
std::type_index& typeIndex ) noexcept;
33auto simplifiedDemangledType() noexcept ->
std::
string;
37auto simplifiedDemangledType( const T& ) noexcept ->
std::
string;
49namespace TypeInternal {
54auto simplifiedDemangledType() noexcept ->
std::
string {
55 static auto demangled_name = []() {
57 TypeInternal::makeTypeReadable( Ra::Core::Utils::demangleType<T>() );
60 return demangled_name;
64auto simplifiedDemangledType(
const T& )
noexcept ->
std::string {
65 return simplifiedDemangledType<T>();
69 return TypeInternal::makeTypeReadable( Ra::Core::Utils::demangleType( typeName ) );
80auto is_container_impl(
int )
96using is_container =
decltype( detail::is_container_impl<T>( 0 ) );
103template <
typename... Ts>
106namespace TypeListInternal {
112template <
typename ListT,
typename... Ts>
119template <
typename... Ts,
typename... OtherTs>
121 using type = TypeList<Ts..., OtherTs...>;
128template <
typename... Ts,
typename... OtherTs>
130 using type = TypeList<Ts..., OtherTs...>;
135template <
typename... Ts>
138 using Self = TypeList;
140 static constexpr size_t Size =
sizeof...( Ts );
157 template <
typename... TypesToAppend>
166 removeAllInString( retval,
"class " );
167 removeAllInString( retval,
"struct " );
168 removeAllInString( retval,
"__cdecl" );
169 replaceAllInString( retval,
"& __ptr64",
"&" );
170 replaceAllInString( retval,
",",
", " );
171 replaceAllInString( retval,
" >",
">" );
172 replaceAllInString( retval,
"__int64",
"long" );
173 replaceAllInString( retval,
"const &",
"const&" );
181 char* name = abi::__cxa_demangle( typeIndex.name(), 0, 0, &error );
182 if ( error == 0 ) { retval = name; }
190 removeAllInString( retval,
"__1::" );
191 replaceAllInString( retval,
" >",
">" );
198 static auto demangled_name = demangleType(
std::type_index(
typeid( T ) ) );
199 return demangled_name;
205 return demangleType<T>();
hepler function to manage enum as underlying types in VariableSet
Append any number of types to a TypeList.