LeviLamina
Loading...
Searching...
No Matches
EnumName.h
1#pragma once
2
3#include "ll/api/base/Concepts.h" // IWYU pragma: keep
4#include "ll/api/base/FixedString.h"
5#include "ll/api/command/SoftEnum.h"
6#include "ll/api/reflection/TypeName.h"
7
8namespace ll::command {
9template <class T>
11 static constexpr auto stored_name =
12 FixedString<ll::reflection::type_unprefix_name_v<T>.size()>{ll::reflection::type_unprefix_name_v<T>};
13};
14template <class T>
15struct enum_name;
16
17template <concepts::Require<std::is_enum> T>
18struct enum_name<T> {
19 static constexpr char const* value = unprefix_name_for_c<T>::stored_name.c_str();
20};
21template <class T>
22struct enum_name<SoftEnum<T>> {
23 static constexpr char const* value = unprefix_name_for_c<T>::stored_name.c_str();
24};
25template <class T>
26constexpr char const* enum_name_v = enum_name<T>::value;
27} // namespace ll::command
Definition SoftEnum.h:10
Definition FixedString.h:11
Definition EnumName.h:15
Definition EnumName.h:10