Corrected order of Str to how the slice type is defined in Odin and RAD Debugger (my reference on slice types)

This commit is contained in:
2024-12-13 13:20:16 -05:00
parent 6ffdca8595
commit 012fcb6bd5
18 changed files with 582 additions and 341 deletions

View File

@ -75,67 +75,67 @@ enum CodeType : u32
inline Str codetype_to_str( CodeType type )
{
local_persist Str lookup[61] = {
{ sizeof( "Invalid" ), "Invalid" },
{ sizeof( "Untyped" ), "Untyped" },
{ sizeof( "NewLine" ), "NewLine" },
{ sizeof( "Comment" ), "Comment" },
{ sizeof( "Access_Private" ), "Access_Private" },
{ sizeof( "Access_Protected" ), "Access_Protected" },
{ sizeof( "Access_Public" ), "Access_Public" },
{ sizeof( "PlatformAttributes" ), "PlatformAttributes" },
{ sizeof( "Class" ), "Class" },
{ sizeof( "Class_Fwd" ), "Class_Fwd" },
{ sizeof( "Class_Body" ), "Class_Body" },
{ sizeof( "Constructor" ), "Constructor" },
{ sizeof( "Constructor_Fwd" ), "Constructor_Fwd" },
{ sizeof( "Destructor" ), "Destructor" },
{ sizeof( "Destructor_Fwd" ), "Destructor_Fwd" },
{ sizeof( "Enum" ), "Enum" },
{ sizeof( "Enum_Fwd" ), "Enum_Fwd" },
{ sizeof( "Enum_Body" ), "Enum_Body" },
{ sizeof( "Enum_Class" ), "Enum_Class" },
{ sizeof( "Enum_Class_Fwd" ), "Enum_Class_Fwd" },
{ sizeof( "Execution" ), "Execution" },
{ sizeof( "Export_Body" ), "Export_Body" },
{ sizeof( "Extern_Linkage" ), "Extern_Linkage" },
{ sizeof( "Extern_Linkage_Body" ), "Extern_Linkage_Body" },
{ sizeof( "Friend" ), "Friend" },
{ sizeof( "Function" ), "Function" },
{ sizeof( "Function_Fwd" ), "Function_Fwd" },
{ sizeof( "Function_Body" ), "Function_Body" },
{ sizeof( "Global_Body" ), "Global_Body" },
{ sizeof( "Module" ), "Module" },
{ sizeof( "Namespace" ), "Namespace" },
{ sizeof( "Namespace_Body" ), "Namespace_Body" },
{ sizeof( "Operator" ), "Operator" },
{ sizeof( "Operator_Fwd" ), "Operator_Fwd" },
{ sizeof( "Operator_Member" ), "Operator_Member" },
{ sizeof( "Operator_Member_Fwd" ), "Operator_Member_Fwd" },
{ sizeof( "Operator_Cast" ), "Operator_Cast" },
{ sizeof( "Operator_Cast_Fwd" ), "Operator_Cast_Fwd" },
{ sizeof( "Parameters" ), "Parameters" },
{ sizeof( "Preprocess_Define" ), "Preprocess_Define" },
{ sizeof( "Preprocess_Include" ), "Preprocess_Include" },
{ sizeof( "Preprocess_If" ), "Preprocess_If" },
{ sizeof( "Preprocess_IfDef" ), "Preprocess_IfDef" },
{ sizeof( "Preprocess_IfNotDef" ), "Preprocess_IfNotDef" },
{ sizeof( "Preprocess_ElIf" ), "Preprocess_ElIf" },
{ sizeof( "Preprocess_Else" ), "Preprocess_Else" },
{ sizeof( "Preprocess_EndIf" ), "Preprocess_EndIf" },
{ sizeof( "Preprocess_Pragma" ), "Preprocess_Pragma" },
{ sizeof( "Specifiers" ), "Specifiers" },
{ sizeof( "Struct" ), "Struct" },
{ sizeof( "Struct_Fwd" ), "Struct_Fwd" },
{ sizeof( "Struct_Body" ), "Struct_Body" },
{ sizeof( "Template" ), "Template" },
{ sizeof( "Typedef" ), "Typedef" },
{ sizeof( "Typename" ), "Typename" },
{ sizeof( "Union" ), "Union" },
{ sizeof( "Union_Fwd" ), "Union_Fwd" },
{ sizeof( "Union_Body" ), "Union_Body" },
{ sizeof( "Using" ), "Using" },
{ sizeof( "Using_Namespace" ), "Using_Namespace" },
{ sizeof( "Variable" ), "Variable" },
{ "Invalid", sizeof( "Invalid" ) },
{ "Untyped", sizeof( "Untyped" ) },
{ "NewLine", sizeof( "NewLine" ) },
{ "Comment", sizeof( "Comment" ) },
{ "Access_Private", sizeof( "Access_Private" ) },
{ "Access_Protected", sizeof( "Access_Protected" ) },
{ "Access_Public", sizeof( "Access_Public" ) },
{ "PlatformAttributes", sizeof( "PlatformAttributes" ) },
{ "Class", sizeof( "Class" ) },
{ "Class_Fwd", sizeof( "Class_Fwd" ) },
{ "Class_Body", sizeof( "Class_Body" ) },
{ "Constructor", sizeof( "Constructor" ) },
{ "Constructor_Fwd", sizeof( "Constructor_Fwd" ) },
{ "Destructor", sizeof( "Destructor" ) },
{ "Destructor_Fwd", sizeof( "Destructor_Fwd" ) },
{ "Enum", sizeof( "Enum" ) },
{ "Enum_Fwd", sizeof( "Enum_Fwd" ) },
{ "Enum_Body", sizeof( "Enum_Body" ) },
{ "Enum_Class", sizeof( "Enum_Class" ) },
{ "Enum_Class_Fwd", sizeof( "Enum_Class_Fwd" ) },
{ "Execution", sizeof( "Execution" ) },
{ "Export_Body", sizeof( "Export_Body" ) },
{ "Extern_Linkage", sizeof( "Extern_Linkage" ) },
{ "Extern_Linkage_Body", sizeof( "Extern_Linkage_Body" ) },
{ "Friend", sizeof( "Friend" ) },
{ "Function", sizeof( "Function" ) },
{ "Function_Fwd", sizeof( "Function_Fwd" ) },
{ "Function_Body", sizeof( "Function_Body" ) },
{ "Global_Body", sizeof( "Global_Body" ) },
{ "Module", sizeof( "Module" ) },
{ "Namespace", sizeof( "Namespace" ) },
{ "Namespace_Body", sizeof( "Namespace_Body" ) },
{ "Operator", sizeof( "Operator" ) },
{ "Operator_Fwd", sizeof( "Operator_Fwd" ) },
{ "Operator_Member", sizeof( "Operator_Member" ) },
{ "Operator_Member_Fwd", sizeof( "Operator_Member_Fwd" ) },
{ "Operator_Cast", sizeof( "Operator_Cast" ) },
{ "Operator_Cast_Fwd", sizeof( "Operator_Cast_Fwd" ) },
{ "Parameters", sizeof( "Parameters" ) },
{ "Preprocess_Define", sizeof( "Preprocess_Define" ) },
{ "Preprocess_Include", sizeof( "Preprocess_Include" ) },
{ "Preprocess_If", sizeof( "Preprocess_If" ) },
{ "Preprocess_IfDef", sizeof( "Preprocess_IfDef" ) },
{ "Preprocess_IfNotDef", sizeof( "Preprocess_IfNotDef" ) },
{ "Preprocess_ElIf", sizeof( "Preprocess_ElIf" ) },
{ "Preprocess_Else", sizeof( "Preprocess_Else" ) },
{ "Preprocess_EndIf", sizeof( "Preprocess_EndIf" ) },
{ "Preprocess_Pragma", sizeof( "Preprocess_Pragma" ) },
{ "Specifiers", sizeof( "Specifiers" ) },
{ "Struct", sizeof( "Struct" ) },
{ "Struct_Fwd", sizeof( "Struct_Fwd" ) },
{ "Struct_Body", sizeof( "Struct_Body" ) },
{ "Template", sizeof( "Template" ) },
{ "Typedef", sizeof( "Typedef" ) },
{ "Typename", sizeof( "Typename" ) },
{ "Union", sizeof( "Union" ) },
{ "Union_Fwd", sizeof( "Union_Fwd" ) },
{ "Union_Body", sizeof( "Union_Body" ) },
{ "Using", sizeof( "Using" ) },
{ "Using_Namespace", sizeof( "Using_Namespace" ) },
{ "Variable", sizeof( "Variable" ) },
};
return lookup[type];
}
@ -143,67 +143,67 @@ inline Str codetype_to_str( CodeType type )
inline Str codetype_to_keyword_str( CodeType type )
{
local_persist Str lookup[61] = {
{ sizeof( "__NA__" ) - 1, "__NA__" },
{ sizeof( "__NA__" ) - 1, "__NA__" },
{ sizeof( "__NA__" ) - 1, "__NA__" },
{ sizeof( "//" ) - 1, "//" },
{ sizeof( "private" ) - 1, "private" },
{ sizeof( "protected" ) - 1, "protected" },
{ sizeof( "public" ) - 1, "public" },
{ sizeof( "__NA__" ) - 1, "__NA__" },
{ sizeof( "class" ) - 1, "class" },
{ sizeof( "clsss" ) - 1, "clsss" },
{ sizeof( "__NA__" ) - 1, "__NA__" },
{ sizeof( "__NA__" ) - 1, "__NA__" },
{ sizeof( "__NA__" ) - 1, "__NA__" },
{ sizeof( "__NA__" ) - 1, "__NA__" },
{ sizeof( "__NA__" ) - 1, "__NA__" },
{ sizeof( "enum" ) - 1, "enum" },
{ sizeof( "enum" ) - 1, "enum" },
{ sizeof( "__NA__" ) - 1, "__NA__" },
{ sizeof( "enum class" ) - 1, "enum class" },
{ sizeof( "enum class" ) - 1, "enum class" },
{ sizeof( "__NA__" ) - 1, "__NA__" },
{ sizeof( "__NA__" ) - 1, "__NA__" },
{ sizeof( "extern" ) - 1, "extern" },
{ sizeof( "extern" ) - 1, "extern" },
{ sizeof( "friend" ) - 1, "friend" },
{ sizeof( "__NA__" ) - 1, "__NA__" },
{ sizeof( "__NA__" ) - 1, "__NA__" },
{ sizeof( "__NA__" ) - 1, "__NA__" },
{ sizeof( "__NA__" ) - 1, "__NA__" },
{ sizeof( "module" ) - 1, "module" },
{ sizeof( "namespace" ) - 1, "namespace" },
{ sizeof( "__NA__" ) - 1, "__NA__" },
{ sizeof( "operator" ) - 1, "operator" },
{ sizeof( "operator" ) - 1, "operator" },
{ sizeof( "operator" ) - 1, "operator" },
{ sizeof( "operator" ) - 1, "operator" },
{ sizeof( "operator" ) - 1, "operator" },
{ sizeof( "operator" ) - 1, "operator" },
{ sizeof( "__NA__" ) - 1, "__NA__" },
{ sizeof( "define" ) - 1, "define" },
{ sizeof( "include" ) - 1, "include" },
{ sizeof( "if" ) - 1, "if" },
{ sizeof( "ifdef" ) - 1, "ifdef" },
{ sizeof( "ifndef" ) - 1, "ifndef" },
{ sizeof( "elif" ) - 1, "elif" },
{ sizeof( "else" ) - 1, "else" },
{ sizeof( "endif" ) - 1, "endif" },
{ sizeof( "pragma" ) - 1, "pragma" },
{ sizeof( "__NA__" ) - 1, "__NA__" },
{ sizeof( "struct" ) - 1, "struct" },
{ sizeof( "struct" ) - 1, "struct" },
{ sizeof( "__NA__" ) - 1, "__NA__" },
{ sizeof( "template" ) - 1, "template" },
{ sizeof( "typedef" ) - 1, "typedef" },
{ sizeof( "__NA__" ) - 1, "__NA__" },
{ sizeof( "union" ) - 1, "union" },
{ sizeof( "union" ) - 1, "union" },
{ sizeof( "__NA__" ) - 1, "__NA__" },
{ sizeof( "using" ) - 1, "using" },
{ sizeof( "using namespace" ) - 1, "using namespace" },
{ sizeof( "__NA__" ) - 1, "__NA__" },
{ "__NA__", sizeof( "__NA__" ) - 1 },
{ "__NA__", sizeof( "__NA__" ) - 1 },
{ "__NA__", sizeof( "__NA__" ) - 1 },
{ "//", sizeof( "//" ) - 1 },
{ "private", sizeof( "private" ) - 1 },
{ "protected", sizeof( "protected" ) - 1 },
{ "public", sizeof( "public" ) - 1 },
{ "__NA__", sizeof( "__NA__" ) - 1 },
{ "class", sizeof( "class" ) - 1 },
{ "clsss", sizeof( "clsss" ) - 1 },
{ "__NA__", sizeof( "__NA__" ) - 1 },
{ "__NA__", sizeof( "__NA__" ) - 1 },
{ "__NA__", sizeof( "__NA__" ) - 1 },
{ "__NA__", sizeof( "__NA__" ) - 1 },
{ "__NA__", sizeof( "__NA__" ) - 1 },
{ "enum", sizeof( "enum" ) - 1 },
{ "enum", sizeof( "enum" ) - 1 },
{ "__NA__", sizeof( "__NA__" ) - 1 },
{ "enum class", sizeof( "enum class" ) - 1 },
{ "enum class", sizeof( "enum class" ) - 1 },
{ "__NA__", sizeof( "__NA__" ) - 1 },
{ "__NA__", sizeof( "__NA__" ) - 1 },
{ "extern", sizeof( "extern" ) - 1 },
{ "extern", sizeof( "extern" ) - 1 },
{ "friend", sizeof( "friend" ) - 1 },
{ "__NA__", sizeof( "__NA__" ) - 1 },
{ "__NA__", sizeof( "__NA__" ) - 1 },
{ "__NA__", sizeof( "__NA__" ) - 1 },
{ "__NA__", sizeof( "__NA__" ) - 1 },
{ "module", sizeof( "module" ) - 1 },
{ "namespace", sizeof( "namespace" ) - 1 },
{ "__NA__", sizeof( "__NA__" ) - 1 },
{ "operator", sizeof( "operator" ) - 1 },
{ "operator", sizeof( "operator" ) - 1 },
{ "operator", sizeof( "operator" ) - 1 },
{ "operator", sizeof( "operator" ) - 1 },
{ "operator", sizeof( "operator" ) - 1 },
{ "operator", sizeof( "operator" ) - 1 },
{ "__NA__", sizeof( "__NA__" ) - 1 },
{ "define", sizeof( "define" ) - 1 },
{ "include", sizeof( "include" ) - 1 },
{ "if", sizeof( "if" ) - 1 },
{ "ifdef", sizeof( "ifdef" ) - 1 },
{ "ifndef", sizeof( "ifndef" ) - 1 },
{ "elif", sizeof( "elif" ) - 1 },
{ "else", sizeof( "else" ) - 1 },
{ "endif", sizeof( "endif" ) - 1 },
{ "pragma", sizeof( "pragma" ) - 1 },
{ "__NA__", sizeof( "__NA__" ) - 1 },
{ "struct", sizeof( "struct" ) - 1 },
{ "struct", sizeof( "struct" ) - 1 },
{ "__NA__", sizeof( "__NA__" ) - 1 },
{ "template", sizeof( "template" ) - 1 },
{ "typedef", sizeof( "typedef" ) - 1 },
{ "__NA__", sizeof( "__NA__" ) - 1 },
{ "union", sizeof( "union" ) - 1 },
{ "union", sizeof( "union" ) - 1 },
{ "__NA__", sizeof( "__NA__" ) - 1 },
{ "using", sizeof( "using" ) - 1 },
{ "using namespace", sizeof( "using namespace" ) - 1 },
{ "__NA__", sizeof( "__NA__" ) - 1 },
};
return lookup[type];
}

View File

@ -61,53 +61,53 @@ enum Operator : u32
inline Str operator_to_str( Operator op )
{
local_persist Str lookup[47] = {
{ sizeof( "INVALID" ), "INVALID" },
{ sizeof( "=" ), "=" },
{ sizeof( "+=" ), "+=" },
{ sizeof( "-=" ), "-=" },
{ sizeof( "*=" ), "*=" },
{ sizeof( "/=" ), "/=" },
{ sizeof( "%=" ), "%=" },
{ sizeof( "&=" ), "&=" },
{ sizeof( "|=" ), "|=" },
{ sizeof( "^=" ), "^=" },
{ sizeof( "<<=" ), "<<=" },
{ sizeof( ">>=" ), ">>=" },
{ sizeof( "++" ), "++" },
{ sizeof( "--" ), "--" },
{ sizeof( "+" ), "+" },
{ sizeof( "-" ), "-" },
{ sizeof( "!" ), "!" },
{ sizeof( "+" ), "+" },
{ sizeof( "-" ), "-" },
{ sizeof( "*" ), "*" },
{ sizeof( "/" ), "/" },
{ sizeof( "%" ), "%" },
{ sizeof( "~" ), "~" },
{ sizeof( "&" ), "&" },
{ sizeof( "|" ), "|" },
{ sizeof( "^" ), "^" },
{ sizeof( "<<" ), "<<" },
{ sizeof( ">>" ), ">>" },
{ sizeof( "&&" ), "&&" },
{ sizeof( "||" ), "||" },
{ sizeof( "==" ), "==" },
{ sizeof( "!=" ), "!=" },
{ sizeof( "<" ), "<" },
{ sizeof( ">" ), ">" },
{ sizeof( "<=" ), "<=" },
{ sizeof( ">=" ), ">=" },
{ sizeof( "[]" ), "[]" },
{ sizeof( "*" ), "*" },
{ sizeof( "&" ), "&" },
{ sizeof( "->" ), "->" },
{ sizeof( "->*" ), "->*" },
{ sizeof( "()" ), "()" },
{ sizeof( "," ), "," },
{ sizeof( "new" ), "new" },
{ sizeof( "new[]" ), "new[]" },
{ sizeof( "delete" ), "delete" },
{ sizeof( "delete[]" ), "delete[]" },
{ "INVALID", sizeof( "INVALID" ) },
{ "=", sizeof( "=" ) },
{ "+=", sizeof( "+=" ) },
{ "-=", sizeof( "-=" ) },
{ "*=", sizeof( "*=" ) },
{ "/=", sizeof( "/=" ) },
{ "%=", sizeof( "%=" ) },
{ "&=", sizeof( "&=" ) },
{ "|=", sizeof( "|=" ) },
{ "^=", sizeof( "^=" ) },
{ "<<=", sizeof( "<<=" ) },
{ ">>=", sizeof( ">>=" ) },
{ "++", sizeof( "++" ) },
{ "--", sizeof( "--" ) },
{ "+", sizeof( "+" ) },
{ "-", sizeof( "-" ) },
{ "!", sizeof( "!" ) },
{ "+", sizeof( "+" ) },
{ "-", sizeof( "-" ) },
{ "*", sizeof( "*" ) },
{ "/", sizeof( "/" ) },
{ "%", sizeof( "%" ) },
{ "~", sizeof( "~" ) },
{ "&", sizeof( "&" ) },
{ "|", sizeof( "|" ) },
{ "^", sizeof( "^" ) },
{ "<<", sizeof( "<<" ) },
{ ">>", sizeof( ">>" ) },
{ "&&", sizeof( "&&" ) },
{ "||", sizeof( "||" ) },
{ "==", sizeof( "==" ) },
{ "!=", sizeof( "!=" ) },
{ "<", sizeof( "<" ) },
{ ">", sizeof( ">" ) },
{ "<=", sizeof( "<=" ) },
{ ">=", sizeof( ">=" ) },
{ "[]", sizeof( "[]" ) },
{ "*", sizeof( "*" ) },
{ "&", sizeof( "&" ) },
{ "->", sizeof( "->" ) },
{ "->*", sizeof( "->*" ) },
{ "()", sizeof( "()" ) },
{ ",", sizeof( "," ) },
{ "new", sizeof( "new" ) },
{ "new[]", sizeof( "new[]" ) },
{ "delete", sizeof( "delete" ) },
{ "delete[]", sizeof( "delete[]" ) },
};
return lookup[op];
}

View File

@ -40,32 +40,32 @@ enum Specifier : u32
inline Str spec_to_str( Specifier type )
{
local_persist Str 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" },
{ "INVALID", sizeof( "INVALID" ) },
{ "consteval", sizeof( "consteval" ) },
{ "constexpr", sizeof( "constexpr" ) },
{ "constinit", sizeof( "constinit" ) },
{ "explicit", sizeof( "explicit" ) },
{ "extern", sizeof( "extern" ) },
{ "forceinline", sizeof( "forceinline" ) },
{ "global", sizeof( "global" ) },
{ "inline", sizeof( "inline" ) },
{ "internal", sizeof( "internal" ) },
{ "local_persist", sizeof( "local_persist" ) },
{ "mutable", sizeof( "mutable" ) },
{ "neverinline", sizeof( "neverinline" ) },
{ "*", sizeof( "*" ) },
{ "&", sizeof( "&" ) },
{ "register", sizeof( "register" ) },
{ "&&", sizeof( "&&" ) },
{ "static", sizeof( "static" ) },
{ "thread_local", sizeof( "thread_local" ) },
{ "virtual", sizeof( "virtual" ) },
{ "const", sizeof( "const" ) },
{ "final", sizeof( "final" ) },
{ "noexcept", sizeof( "noexcept" ) },
{ "override", sizeof( "override" ) },
{ "= 0", sizeof( "= 0" ) },
{ "volatile", sizeof( "volatile" ) },
};
return lookup[type];
}

View File

@ -114,103 +114,103 @@ enum TokType : u32
inline Str toktype_to_str( TokType type )
{
local_persist Str lookup[] = {
{ sizeof( "__invalid__" ), "__invalid__" },
{ sizeof( "private" ), "private" },
{ sizeof( "protected" ), "protected" },
{ sizeof( "public" ), "public" },
{ sizeof( "." ), "." },
{ sizeof( "::" ), "::" },
{ sizeof( "&" ), "&" },
{ sizeof( "&&" ), "&&" },
{ sizeof( ":" ), ":" },
{ sizeof( "[[" ), "[[" },
{ sizeof( "]]" ), "]]" },
{ sizeof( "{" ), "{" },
{ sizeof( "}" ), "}" },
{ sizeof( "[" ), "[" },
{ sizeof( "]" ), "]" },
{ sizeof( "(" ), "(" },
{ sizeof( ")" ), ")" },
{ sizeof( "__comment__" ), "__comment__" },
{ sizeof( "__comment_end__" ), "__comment_end__" },
{ sizeof( "__comment_start__" ), "__comment_start__" },
{ sizeof( "__character__" ), "__character__" },
{ sizeof( "," ), "," },
{ sizeof( "class" ), "class" },
{ sizeof( "__attribute__" ), "__attribute__" },
{ sizeof( "__declspec" ), "__declspec" },
{ sizeof( "enum" ), "enum" },
{ sizeof( "extern" ), "extern" },
{ sizeof( "friend" ), "friend" },
{ sizeof( "module" ), "module" },
{ sizeof( "namespace" ), "namespace" },
{ sizeof( "operator" ), "operator" },
{ sizeof( "struct" ), "struct" },
{ sizeof( "template" ), "template" },
{ sizeof( "typedef" ), "typedef" },
{ sizeof( "using" ), "using" },
{ sizeof( "union" ), "union" },
{ sizeof( "__identifier__" ), "__identifier__" },
{ sizeof( "import" ), "import" },
{ sizeof( "export" ), "export" },
{ sizeof( "__new_line__" ), "__new_line__" },
{ sizeof( "__number__" ), "__number__" },
{ sizeof( "__operator__" ), "__operator__" },
{ sizeof( "#" ), "#" },
{ sizeof( "define" ), "define" },
{ sizeof( "if" ), "if" },
{ sizeof( "ifdef" ), "ifdef" },
{ sizeof( "ifndef" ), "ifndef" },
{ sizeof( "elif" ), "elif" },
{ sizeof( "else" ), "else" },
{ sizeof( "endif" ), "endif" },
{ sizeof( "include" ), "include" },
{ sizeof( "pragma" ), "pragma" },
{ sizeof( "__macro_content__" ), "__macro_content__" },
{ sizeof( "__macro__" ), "__macro__" },
{ sizeof( "__unsupported__" ), "__unsupported__" },
{ sizeof( "alignas" ), "alignas" },
{ sizeof( "const" ), "const" },
{ sizeof( "consteval" ), "consteval" },
{ sizeof( "constexpr" ), "constexpr" },
{ sizeof( "constinit" ), "constinit" },
{ sizeof( "explicit" ), "explicit" },
{ sizeof( "extern" ), "extern" },
{ sizeof( "final" ), "final" },
{ sizeof( "forceinline" ), "forceinline" },
{ sizeof( "global" ), "global" },
{ sizeof( "inline" ), "inline" },
{ sizeof( "internal" ), "internal" },
{ sizeof( "local_persist" ), "local_persist" },
{ sizeof( "mutable" ), "mutable" },
{ sizeof( "neverinline" ), "neverinline" },
{ sizeof( "override" ), "override" },
{ sizeof( "static" ), "static" },
{ sizeof( "thread_local" ), "thread_local" },
{ sizeof( "volatile" ), "volatile" },
{ sizeof( "virtual" ), "virtual" },
{ sizeof( "*" ), "*" },
{ sizeof( ";" ), ";" },
{ sizeof( "static_assert" ), "static_assert" },
{ sizeof( "__strbuilder__" ), "__strbuilder__" },
{ sizeof( "typename" ), "typename" },
{ sizeof( "unsigned" ), "unsigned" },
{ sizeof( "signed" ), "signed" },
{ sizeof( "short" ), "short" },
{ sizeof( "long" ), "long" },
{ sizeof( "bool" ), "bool" },
{ sizeof( "char" ), "char" },
{ sizeof( "int" ), "int" },
{ sizeof( "double" ), "double" },
{ sizeof( "__int8" ), "__int8" },
{ sizeof( "__int16" ), "__int16" },
{ sizeof( "__int32" ), "__int32" },
{ sizeof( "__int64" ), "__int64" },
{ sizeof( "_W64" ), "_W64" },
{ sizeof( "..." ), "..." },
{ sizeof( "__attrib_start__" ), "__attrib_start__" },
{ sizeof( "GEN_API_Export_Code" ), "GEN_API_Export_Code" },
{ sizeof( "GEN_API_Import_Code" ), "GEN_API_Import_Code" },
{ "__invalid__", sizeof( "__invalid__" ) },
{ "private", sizeof( "private" ) },
{ "protected", sizeof( "protected" ) },
{ "public", sizeof( "public" ) },
{ ".", sizeof( "." ) },
{ "::", sizeof( "::" ) },
{ "&", sizeof( "&" ) },
{ "&&", sizeof( "&&" ) },
{ ":", sizeof( ":" ) },
{ "[[", sizeof( "[[" ) },
{ "]]", sizeof( "]]" ) },
{ "{", sizeof( "{" ) },
{ "}", sizeof( "}" ) },
{ "[", sizeof( "[" ) },
{ "]", sizeof( "]" ) },
{ "(", sizeof( "(" ) },
{ ")", sizeof( ")" ) },
{ "__comment__", sizeof( "__comment__" ) },
{ "__comment_end__", sizeof( "__comment_end__" ) },
{ "__comment_start__", sizeof( "__comment_start__" ) },
{ "__character__", sizeof( "__character__" ) },
{ ",", sizeof( "," ) },
{ "class", sizeof( "class" ) },
{ "__attribute__", sizeof( "__attribute__" ) },
{ "__declspec", sizeof( "__declspec" ) },
{ "enum", sizeof( "enum" ) },
{ "extern", sizeof( "extern" ) },
{ "friend", sizeof( "friend" ) },
{ "module", sizeof( "module" ) },
{ "namespace", sizeof( "namespace" ) },
{ "operator", sizeof( "operator" ) },
{ "struct", sizeof( "struct" ) },
{ "template", sizeof( "template" ) },
{ "typedef", sizeof( "typedef" ) },
{ "using", sizeof( "using" ) },
{ "union", sizeof( "union" ) },
{ "__identifier__", sizeof( "__identifier__" ) },
{ "import", sizeof( "import" ) },
{ "export", sizeof( "export" ) },
{ "__new_line__", sizeof( "__new_line__" ) },
{ "__number__", sizeof( "__number__" ) },
{ "__operator__", sizeof( "__operator__" ) },
{ "#", sizeof( "#" ) },
{ "define", sizeof( "define" ) },
{ "if", sizeof( "if" ) },
{ "ifdef", sizeof( "ifdef" ) },
{ "ifndef", sizeof( "ifndef" ) },
{ "elif", sizeof( "elif" ) },
{ "else", sizeof( "else" ) },
{ "endif", sizeof( "endif" ) },
{ "include", sizeof( "include" ) },
{ "pragma", sizeof( "pragma" ) },
{ "__macro_content__", sizeof( "__macro_content__" ) },
{ "__macro__", sizeof( "__macro__" ) },
{ "__unsupported__", sizeof( "__unsupported__" ) },
{ "alignas", sizeof( "alignas" ) },
{ "const", sizeof( "const" ) },
{ "consteval", sizeof( "consteval" ) },
{ "constexpr", sizeof( "constexpr" ) },
{ "constinit", sizeof( "constinit" ) },
{ "explicit", sizeof( "explicit" ) },
{ "extern", sizeof( "extern" ) },
{ "final", sizeof( "final" ) },
{ "forceinline", sizeof( "forceinline" ) },
{ "global", sizeof( "global" ) },
{ "inline", sizeof( "inline" ) },
{ "internal", sizeof( "internal" ) },
{ "local_persist", sizeof( "local_persist" ) },
{ "mutable", sizeof( "mutable" ) },
{ "neverinline", sizeof( "neverinline" ) },
{ "override", sizeof( "override" ) },
{ "static", sizeof( "static" ) },
{ "thread_local", sizeof( "thread_local" ) },
{ "volatile", sizeof( "volatile" ) },
{ "virtual", sizeof( "virtual" ) },
{ "*", sizeof( "*" ) },
{ ";", sizeof( ";" ) },
{ "static_assert", sizeof( "static_assert" ) },
{ "__string__", sizeof( "__string__" ) },
{ "typename", sizeof( "typename" ) },
{ "unsigned", sizeof( "unsigned" ) },
{ "signed", sizeof( "signed" ) },
{ "short", sizeof( "short" ) },
{ "long", sizeof( "long" ) },
{ "bool", sizeof( "bool" ) },
{ "char", sizeof( "char" ) },
{ "int", sizeof( "int" ) },
{ "double", sizeof( "double" ) },
{ "__int8", sizeof( "__int8" ) },
{ "__int16", sizeof( "__int16" ) },
{ "__int32", sizeof( "__int32" ) },
{ "__int64", sizeof( "__int64" ) },
{ "_W64", sizeof( "_W64" ) },
{ "...", sizeof( "..." ) },
{ "__attrib_start__", sizeof( "__attrib_start__" ) },
{ "GEN_API_Export_Code", sizeof( "GEN_API_Export_Code" ) },
{ "GEN_API_Import_Code", sizeof( "GEN_API_Import_Code" ) },
};
return lookup[type];
}
@ -220,7 +220,7 @@ inline TokType str_to_toktype( Str str )
local_persist u32 keymap[Tok_NumTokens];
do_once_start for ( u32 index = 0; index < Tok_NumTokens; index++ )
{
Str enum_str = toktype_to_str( (TokType)index );
Str enum_str = toktype_to_str( (TokType)index );
keymap[index] = crc32( enum_str.Ptr, enum_str.Len - 1 );
}
do_once_end u32 hash = crc32( str.Ptr, str.Len );

View File

@ -0,0 +1,235 @@
#ifdef GEN_INTELLISENSE_DIRECTIVES
#pragma once
#include "components/types.hpp"
#endif
// This file was generated automatially by gencpp's bootstrap.cpp (See: https://github.com/Ed94/gencpp)
GEN_NS_PARSER_BEGIN
#define GEN_DEFINE_ATTRIBUTE_TOKENS Entry( Tok_Attribute_API_Export, "GEN_API_Export_Code" ) Entry( Tok_Attribute_API_Import, "GEN_API_Import_Code" )
enum TokType : u32
{
Tok_Invalid,
Tok_Access_Private,
Tok_Access_Protected,
Tok_Access_Public,
Tok_Access_MemberSymbol,
Tok_Access_StaticSymbol,
Tok_Ampersand,
Tok_Ampersand_DBL,
Tok_Assign_Classifer,
Tok_Attribute_Open,
Tok_Attribute_Close,
Tok_BraceCurly_Open,
Tok_BraceCurly_Close,
Tok_BraceSquare_Open,
Tok_BraceSquare_Close,
Tok_Capture_Start,
Tok_Capture_End,
Tok_Comment,
Tok_Comment_End,
Tok_Comment_Start,
Tok_Char,
Tok_Comma,
Tok_Decl_Class,
Tok_Decl_GNU_Attribute,
Tok_Decl_MSVC_Attribute,
Tok_Decl_Enum,
Tok_Decl_Extern_Linkage,
Tok_Decl_Friend,
Tok_Decl_Module,
Tok_Decl_Namespace,
Tok_Decl_Operator,
Tok_Decl_Struct,
Tok_Decl_Template,
Tok_Decl_Typedef,
Tok_Decl_Using,
Tok_Decl_Union,
Tok_Identifier,
Tok_Module_Import,
Tok_Module_Export,
Tok_NewLine,
Tok_Number,
Tok_Operator,
Tok_Preprocess_Hash,
Tok_Preprocess_Define,
Tok_Preprocess_If,
Tok_Preprocess_IfDef,
Tok_Preprocess_IfNotDef,
Tok_Preprocess_ElIf,
Tok_Preprocess_Else,
Tok_Preprocess_EndIf,
Tok_Preprocess_Include,
Tok_Preprocess_Pragma,
Tok_Preprocess_Content,
Tok_Preprocess_Macro,
Tok_Preprocess_Unsupported,
Tok_Spec_Alignas,
Tok_Spec_Const,
Tok_Spec_Consteval,
Tok_Spec_Constexpr,
Tok_Spec_Constinit,
Tok_Spec_Explicit,
Tok_Spec_Extern,
Tok_Spec_Final,
Tok_Spec_ForceInline,
Tok_Spec_Global,
Tok_Spec_Inline,
Tok_Spec_Internal_Linkage,
Tok_Spec_LocalPersist,
Tok_Spec_Mutable,
Tok_Spec_NeverInline,
Tok_Spec_Override,
Tok_Spec_Static,
Tok_Spec_ThreadLocal,
Tok_Spec_Volatile,
Tok_Spec_Virtual,
Tok_Star,
Tok_Statement_End,
Tok_StaticAssert,
Tok_String,
Tok_Type_Typename,
Tok_Type_Unsigned,
Tok_Type_Signed,
Tok_Type_Short,
Tok_Type_Long,
Tok_Type_bool,
Tok_Type_char,
Tok_Type_int,
Tok_Type_double,
Tok_Type_MS_int8,
Tok_Type_MS_int16,
Tok_Type_MS_int32,
Tok_Type_MS_int64,
Tok_Type_MS_W64,
Tok_Varadic_Argument,
Tok___Attributes_Start,
Tok_Attribute_API_Export,
Tok_Attribute_API_Import,
Tok_NumTokens
};
inline Str toktype_to_str( TokType type )
{
local_persist Str lookup[] = {
{ "__invalid__", sizeof( "__invalid__" ) },
{ "private", sizeof( "private" ) },
{ "protected", sizeof( "protected" ) },
{ "public", sizeof( "public" ) },
{ ".", sizeof( "." ) },
{ "::", sizeof( "::" ) },
{ "&", sizeof( "&" ) },
{ "&&", sizeof( "&&" ) },
{ ":", sizeof( ":" ) },
{ "[[", sizeof( "[[" ) },
{ "]]", sizeof( "]]" ) },
{ "{", sizeof( "{" ) },
{ "}", sizeof( "}" ) },
{ "[", sizeof( "[" ) },
{ "]", sizeof( "]" ) },
{ "(", sizeof( "(" ) },
{ ")", sizeof( ")" ) },
{ "__comment__", sizeof( "__comment__" ) },
{ "__comment_end__", sizeof( "__comment_end__" ) },
{ "__comment_start__", sizeof( "__comment_start__" ) },
{ "__character__", sizeof( "__character__" ) },
{ ",", sizeof( "," ) },
{ "class", sizeof( "class" ) },
{ "__attribute__", sizeof( "__attribute__" ) },
{ "__declspec", sizeof( "__declspec" ) },
{ "enum", sizeof( "enum" ) },
{ "extern", sizeof( "extern" ) },
{ "friend", sizeof( "friend" ) },
{ "module", sizeof( "module" ) },
{ "namespace", sizeof( "namespace" ) },
{ "operator", sizeof( "operator" ) },
{ "struct", sizeof( "struct" ) },
{ "template", sizeof( "template" ) },
{ "typedef", sizeof( "typedef" ) },
{ "using", sizeof( "using" ) },
{ "union", sizeof( "union" ) },
{ "__identifier__", sizeof( "__identifier__" ) },
{ "import", sizeof( "import" ) },
{ "export", sizeof( "export" ) },
{ "__new_line__", sizeof( "__new_line__" ) },
{ "__number__", sizeof( "__number__" ) },
{ "__operator__", sizeof( "__operator__" ) },
{ "#", sizeof( "#" ) },
{ "define", sizeof( "define" ) },
{ "if", sizeof( "if" ) },
{ "ifdef", sizeof( "ifdef" ) },
{ "ifndef", sizeof( "ifndef" ) },
{ "elif", sizeof( "elif" ) },
{ "else", sizeof( "else" ) },
{ "endif", sizeof( "endif" ) },
{ "include", sizeof( "include" ) },
{ "pragma", sizeof( "pragma" ) },
{ "__macro_content__", sizeof( "__macro_content__" ) },
{ "__macro__", sizeof( "__macro__" ) },
{ "__unsupported__", sizeof( "__unsupported__" ) },
{ "alignas", sizeof( "alignas" ) },
{ "const", sizeof( "const" ) },
{ "consteval", sizeof( "consteval" ) },
{ "constexpr", sizeof( "constexpr" ) },
{ "constinit", sizeof( "constinit" ) },
{ "explicit", sizeof( "explicit" ) },
{ "extern", sizeof( "extern" ) },
{ "final", sizeof( "final" ) },
{ "forceinline", sizeof( "forceinline" ) },
{ "global", sizeof( "global" ) },
{ "inline", sizeof( "inline" ) },
{ "internal", sizeof( "internal" ) },
{ "local_persist", sizeof( "local_persist" ) },
{ "mutable", sizeof( "mutable" ) },
{ "neverinline", sizeof( "neverinline" ) },
{ "override", sizeof( "override" ) },
{ "static", sizeof( "static" ) },
{ "thread_local", sizeof( "thread_local" ) },
{ "volatile", sizeof( "volatile" ) },
{ "virtual", sizeof( "virtual" ) },
{ "*", sizeof( "*" ) },
{ ";", sizeof( ";" ) },
{ "static_assert", sizeof( "static_assert" ) },
{ "__string__", sizeof( "__string__" ) },
{ "typename", sizeof( "typename" ) },
{ "unsigned", sizeof( "unsigned" ) },
{ "signed", sizeof( "signed" ) },
{ "short", sizeof( "short" ) },
{ "long", sizeof( "long" ) },
{ "bool", sizeof( "bool" ) },
{ "char", sizeof( "char" ) },
{ "int", sizeof( "int" ) },
{ "double", sizeof( "double" ) },
{ "__int8", sizeof( "__int8" ) },
{ "__int16", sizeof( "__int16" ) },
{ "__int32", sizeof( "__int32" ) },
{ "__int64", sizeof( "__int64" ) },
{ "_W64", sizeof( "_W64" ) },
{ "...", sizeof( "..." ) },
{ "__attrib_start__", sizeof( "__attrib_start__" ) },
{ "GEN_API_Export_Code", sizeof( "GEN_API_Export_Code" ) },
{ "GEN_API_Import_Code", sizeof( "GEN_API_Import_Code" ) },
};
return lookup[type];
}
inline TokType str_to_toktype( Str str )
{
local_persist u32 keymap[Tok_NumTokens];
do_once_start for ( u32 index = 0; index < Tok_NumTokens; index++ )
{
Str enum_str = toktype_to_str( (TokType)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 < Tok_NumTokens; index++ )
{
if ( keymap[index] == hash )
return (TokType)index;
}
return Tok_Invalid;
}
GEN_NS_PARSER_END