2023-08-28 20:46:50 -07:00
|
|
|
#ifdef GEN_INTELLISENSE_DIRECTIVES
|
2024-12-06 21:21:09 -08:00
|
|
|
#pragma once
|
|
|
|
#include "components/types.hpp"
|
2023-08-28 20:46:50 -07:00
|
|
|
#endif
|
2023-08-21 20:28:39 -07:00
|
|
|
|
2023-08-22 21:05:58 -07:00
|
|
|
// This file was generated automatially by gencpp's bootstrap.cpp (See: https://github.com/Ed94/gencpp)
|
2023-08-21 22:51:59 -07:00
|
|
|
|
2024-12-06 21:21:09 -08:00
|
|
|
enum Specifier : u32
|
|
|
|
{
|
|
|
|
Spec_Invalid,Spec_Consteval,Spec_Constexpr,Spec_Constinit,Spec_Explicit,Spec_External_Linkage,Spec_ForceInline,Spec_Global,Spec_Inline,Spec_Internal_Linkage,Spec_Local_Persist,Spec_Mutable,Spec_NeverInline,Spec_Ptr,Spec_Ref,Spec_Register,Spec_RValue,Spec_Static,Spec_Thread_Local,Spec_Virtual,Spec_Const,Spec_Final,Spec_NoExceptions,Spec_Override,Spec_Pure,Spec_Volatile,Spec_NumSpecifiers
|
|
|
|
};
|
|
|
|
typedef enum Specifier Specifier;
|
|
|
|
inline
|
|
|
|
bool spec_is_trailing( Specifier specifier)
|
2024-12-03 10:14:14 -08:00
|
|
|
{
|
2024-12-06 21:21:09 -08:00
|
|
|
return specifier > Spec_Virtual;
|
2024-12-03 10:14:14 -08:00
|
|
|
}
|
2024-12-06 21:21:09 -08:00
|
|
|
inline
|
|
|
|
StrC spec_to_str( Specifier type)
|
2024-12-03 10:14:14 -08:00
|
|
|
{
|
2024-12-06 21:21:09 -08:00
|
|
|
local_persist StrC lookup[26] = { { sizeof("INVALID"), "INVALID" },
|
|
|
|
{ sizeof("consteval"), "consteval" },
|
|
|
|
{ sizeof("constexpr"), "constexpr" },
|
|
|
|
{ sizeof("constinit"), "constinit" },
|
|
|
|
{ sizeof("explicit"), "explicit" },
|
|
|
|
{ sizeof("extern"), "extern" },
|
|
|
|
{ sizeof("forceinline"), "forceinline" },
|
|
|
|
{ sizeof("global"), "global" },
|
|
|
|
{ sizeof("inline"), "inline" },
|
|
|
|
{ sizeof("internal"), "internal" },
|
|
|
|
{ sizeof("local_persist"), "local_persist" },
|
|
|
|
{ sizeof("mutable"), "mutable" },
|
|
|
|
{ sizeof("neverinline"), "neverinline" },
|
|
|
|
{ sizeof("*"), "*" },
|
|
|
|
{ sizeof("&"), "&" },
|
|
|
|
{ sizeof("register"), "register" },
|
|
|
|
{ sizeof("&&"), "&&" },
|
|
|
|
{ sizeof("static"), "static" },
|
|
|
|
{ sizeof("thread_local"), "thread_local" },
|
|
|
|
{ sizeof("virtual"), "virtual" },
|
|
|
|
{ sizeof("const"), "const" },
|
|
|
|
{ sizeof("final"), "final" },
|
|
|
|
{ sizeof("noexcept"), "noexcept" },
|
|
|
|
{ sizeof("override"), "override" },
|
|
|
|
{ sizeof("= 0"), "= 0" },
|
|
|
|
{ sizeof("volatile"), "volatile" },
|
|
|
|
}; return lookup[ type ];
|
2024-12-03 10:14:14 -08:00
|
|
|
}
|
2024-12-06 21:21:09 -08:00
|
|
|
inline
|
|
|
|
Specifier strc_to_specifier( StrC str)
|
2024-12-03 10:14:14 -08:00
|
|
|
{
|
2024-12-06 21:21:09 -08:00
|
|
|
local_persist u32 keymap[ Spec_NumSpecifiers ]; do_once_start for ( u32 index = 0; index < Spec_NumSpecifiers; index++ ) { StrC enum_str = spec_to_str( (Specifier)index ); keymap[index] = crc32( enum_str.Ptr, enum_str.Len - 1); } do_once_end u32 hash = crc32( str.Ptr, str.Len ); for ( u32 index = 0; index < Spec_NumSpecifiers; index++ ) { if ( keymap[index] == hash ) return (Specifier)index; } return Spec_Invalid;
|
2024-12-03 10:14:14 -08:00
|
|
|
}
|
2024-12-06 21:21:09 -08:00
|
|
|
|