From 50cc5b2857783983506b46fca9e48b72ff9354f1 Mon Sep 17 00:00:00 2001 From: ADAM David Alan Martin Date: Sat, 11 Nov 2023 23:58:11 -0500 Subject: [PATCH] Fancy type name facility. --- Utility/CMakeLists.txt | 4 ++++ Utility/fancyTypeName.cc | 14 ++++++++++++++ Utility/fancyTypeName.h | 23 +++++++++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 Utility/fancyTypeName.cc create mode 100644 Utility/fancyTypeName.h 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; +}