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
8
namespace
ll::command {
9
template
<
class
T>
10
struct
unprefix_name_for_c
{
11
static
constexpr
auto
stored_name =
12
FixedString<ll::reflection::type_unprefix_name_v<T>
.size()>{ll::reflection::type_unprefix_name_v<T>};
13
};
14
template
<
class
T>
15
struct
enum_name
;
16
17
template
<concepts::Require<std::is_enum> T>
18
struct
enum_name
<T> {
19
static
constexpr
char
const
* value =
unprefix_name_for_c<T>::stored_name
.c_str();
20
};
21
template
<
class
T>
22
struct
enum_name
<
SoftEnum
<T>> {
23
static
constexpr
char
const
* value =
unprefix_name_for_c<T>::stored_name
.c_str();
24
};
25
template
<
class
T>
26
constexpr
char
const
* enum_name_v =
enum_name<T>::value
;
27
}
// namespace ll::command
ll::command::SoftEnum
Definition
SoftEnum.h:10
ll::FixedString
Definition
FixedString.h:11
ll::command::enum_name
Definition
EnumName.h:15
ll::command::unprefix_name_for_c
Definition
EnumName.h:10
src
ll
api
command
EnumName.h
Generated on Sat Apr 26 2025 05:55:20 for LeviLamina by
1.12.0