psemek/libs/ecs/include/psemek/ecs/detail/describe.hpp

26 lines
464 B
C++

#pragma once
#include <psemek/util/type_name.hpp>
#include <string>
namespace psemek::ecs::detail
{
template <typename Component>
std::string describe(Component const & component)
{
if constexpr (requires {component.to_string();})
{
return component.to_string();
}
else
{
auto name = util::type_name<Component>();
if (auto pos = name.find_last_of(':'); pos != std::string::npos)
name = name.substr(pos + 1);
return name;
}
}
}