diff --git a/Utility/CMakeLists.txt b/Utility/CMakeLists.txt index e69de29..68244fa 100644 --- a/Utility/CMakeLists.txt +++ b/Utility/CMakeLists.txt @@ -0,0 +1,4 @@ +target_sources( alepha PRIVATE + fancyTypeName.cc +) + diff --git a/Utility/fancyTypeName.cc b/Utility/fancyTypeName.cc new file mode 100644 index 0000000..a45279d --- /dev/null +++ b/Utility/fancyTypeName.cc @@ -0,0 +1,14 @@ +static_assert( __cplusplus > 2020'99 ); + +#include "fancyTypeName.h" + +#include + +namespace Alepha::Hydrogen::Utility::detail::fancyTypeName_m +{ + std::string + fancyTypeName( const std::type_index idx ) + { + return boost::core::demangle( idx.name() ); + } +} diff --git a/Utility/fancyTypeName.h b/Utility/fancyTypeName.h new file mode 100644 index 0000000..9820709 --- /dev/null +++ b/Utility/fancyTypeName.h @@ -0,0 +1,23 @@ +static_assert( __cplusplus > 2020'99 ); + +#pragma once + +#include + +#include +#include + +namespace Alepha::Hydrogen::Utility ::detail:: fancyTypeName_m +{ + inline namespace exports + { + std::string fancyTypeName( std::type_index ); + + template< typename T > std::string fancyTypeName() { return fancyTypeName( typeid( T ) ); } + } +} + +namespace Alepha::Hydrogen::Utility::inline exports::inline fancyTypeName_m +{ + using namespace detail::fancyTypeName_m::exports; +}