Pushing latest changes for gencpp

This commit is contained in:
Edward R. Gonzalez 2024-04-17 16:55:22 -04:00
parent 626ab703a7
commit 83d691c65c
11 changed files with 254 additions and 235 deletions

View File

@ -49,5 +49,7 @@
"**/.vscode": true, "**/.vscode": true,
"**/.vs": true, "**/.vs": true,
"**/sanity.gen.hpp": true "**/sanity.gen.hpp": true
} },
"autoHide.autoHidePanel": false,
"autoHide.autoHideSideBar": false
} }

View File

@ -11,7 +11,7 @@
<BuildCommand>pwsh ./scripts/build.ps1 msvc debug bootstrap</BuildCommand> <BuildCommand>pwsh ./scripts/build.ps1 msvc debug bootstrap</BuildCommand>
<RebuildCommand></RebuildCommand> <RebuildCommand></RebuildCommand>
<BuildFileCommand></BuildFileCommand> <BuildFileCommand></BuildFileCommand>
<CleanCommand>psh ./scripts/clean.ps1</CleanCommand> <CleanCommand>pwsh ./scripts/clean.ps1</CleanCommand>
<BuildWorkingDirectory></BuildWorkingDirectory> <BuildWorkingDirectory></BuildWorkingDirectory>
<CancelBuild></CancelBuild> <CancelBuild></CancelBuild>
<RunCommand>./test/gen/build/gencpp.exe</RunCommand> <RunCommand>./test/gen/build/gencpp.exe</RunCommand>

View File

@ -366,6 +366,9 @@
<Content Include="scripts\helpers\target_arch.psm1" /> <Content Include="scripts\helpers\target_arch.psm1" />
<Content Include="scripts\refactor.ps1" /> <Content Include="scripts\refactor.ps1" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Folder Include="singleheader\gen\" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>

View File

@ -5,9 +5,8 @@
Builder Builder::open( char const* path ) Builder Builder::open( char const* path )
{ {
Builder result; Builder result;
FileError error = file_open_mode( & result.File, EFileMode_WRITE, path ); FileError error = file_open_mode( & result.File, EFileMode_WRITE, path );
if ( error != EFileError_NONE ) if ( error != EFileError_NONE )
{ {
log_failure( "gen::File::open - Could not open file: %s", path); log_failure( "gen::File::open - Could not open file: %s", path);

View File

@ -72,7 +72,7 @@ $path_raylib_inc = join-path $path_raylib 'include'
$path_raylib_lib = join-path $path_raylib 'lib' $path_raylib_lib = join-path $path_raylib 'lib'
$path_raylib_dll = join-path $path_raylib_lib 'raylib.dll' $path_raylib_dll = join-path $path_raylib_lib 'raylib.dll'
$path_raylib_dll_bin = join-path $path_binaries 'raylib.dll' $path_raylib_dll_bin = join-path $path_binaries 'raylib.dll'
Copy-Item $path_raylib_dll $path_raylib_dll_bin -Force Copy-Item $path_raylib_dll $path_raylib_dll_bin -Force
@ -96,8 +96,8 @@ $lib_winmm = 'Winmm.lib'
$stack_size = 1024 * 1024 * 4 $stack_size = 1024 * 1024 * 4
$compiler_args = @( $compiler_args = @(
($flag_define + 'UNICODE'), ( $flag_define + 'UNICODE'),
($flag_define + '_UNICODE') ( $flag_define + '_UNICODE')
( $flag_define + 'INTELLISENSE_DIRECTIVES=0'), ( $flag_define + 'INTELLISENSE_DIRECTIVES=0'),
( $flag_define + 'RL_USE_LIBTYPE_SHARED') ( $flag_define + 'RL_USE_LIBTYPE_SHARED')
# ($flag_set_stack_size + $stack_size) # ($flag_set_stack_size + $stack_size)

View File

@ -75,66 +75,66 @@ namespace ECode
StrC to_str( Type type ) StrC to_str( Type type )
{ {
local_persist StrC lookup[] { local_persist StrC lookup[] {
{sizeof( "Invalid" ), "Invalid" }, { sizeof( "Invalid" ), "Invalid" },
{ sizeof( "Untyped" ), "Untyped" }, { sizeof( "Untyped" ), "Untyped" },
{ sizeof( "NewLine" ), "NewLine" }, { sizeof( "NewLine" ), "NewLine" },
{ sizeof( "Comment" ), "Comment" }, { sizeof( "Comment" ), "Comment" },
{ sizeof( "Access_Private" ), "Access_Private" }, { sizeof( "Access_Private" ), "Access_Private" },
{ sizeof( "Access_Protected" ), "Access_Protected" }, { sizeof( "Access_Protected" ), "Access_Protected" },
{ sizeof( "Access_Public" ), "Access_Public" }, { sizeof( "Access_Public" ), "Access_Public" },
{ sizeof( "PlatformAttributes" ), "PlatformAttributes" }, { sizeof( "PlatformAttributes" ), "PlatformAttributes" },
{ sizeof( "Class" ), "Class" }, { sizeof( "Class" ), "Class" },
{ sizeof( "Class_Fwd" ), "Class_Fwd" }, { sizeof( "Class_Fwd" ), "Class_Fwd" },
{ sizeof( "Class_Body" ), "Class_Body" }, { sizeof( "Class_Body" ), "Class_Body" },
{ sizeof( "Constructor" ), "Constructor" }, { sizeof( "Constructor" ), "Constructor" },
{ sizeof( "Constructor_Fwd" ), "Constructor_Fwd" }, { sizeof( "Constructor_Fwd" ), "Constructor_Fwd" },
{ sizeof( "Destructor" ), "Destructor" }, { sizeof( "Destructor" ), "Destructor" },
{ sizeof( "Destructor_Fwd" ), "Destructor_Fwd" }, { sizeof( "Destructor_Fwd" ), "Destructor_Fwd" },
{ sizeof( "Enum" ), "Enum" }, { sizeof( "Enum" ), "Enum" },
{ sizeof( "Enum_Fwd" ), "Enum_Fwd" }, { sizeof( "Enum_Fwd" ), "Enum_Fwd" },
{ sizeof( "Enum_Body" ), "Enum_Body" }, { sizeof( "Enum_Body" ), "Enum_Body" },
{ sizeof( "Enum_Class" ), "Enum_Class" }, { sizeof( "Enum_Class" ), "Enum_Class" },
{ sizeof( "Enum_Class_Fwd" ), "Enum_Class_Fwd" }, { sizeof( "Enum_Class_Fwd" ), "Enum_Class_Fwd" },
{ sizeof( "Execution" ), "Execution" }, { sizeof( "Execution" ), "Execution" },
{ sizeof( "Export_Body" ), "Export_Body" }, { sizeof( "Export_Body" ), "Export_Body" },
{ sizeof( "Extern_Linkage" ), "Extern_Linkage" }, { sizeof( "Extern_Linkage" ), "Extern_Linkage" },
{ sizeof( "Extern_Linkage_Body" ), "Extern_Linkage_Body"}, { sizeof( "Extern_Linkage_Body" ), "Extern_Linkage_Body" },
{ sizeof( "Friend" ), "Friend" }, { sizeof( "Friend" ), "Friend" },
{ sizeof( "Function" ), "Function" }, { sizeof( "Function" ), "Function" },
{ sizeof( "Function_Fwd" ), "Function_Fwd" }, { sizeof( "Function_Fwd" ), "Function_Fwd" },
{ sizeof( "Function_Body" ), "Function_Body" }, { sizeof( "Function_Body" ), "Function_Body" },
{ sizeof( "Global_Body" ), "Global_Body" }, { sizeof( "Global_Body" ), "Global_Body" },
{ sizeof( "Module" ), "Module" }, { sizeof( "Module" ), "Module" },
{ sizeof( "Namespace" ), "Namespace" }, { sizeof( "Namespace" ), "Namespace" },
{ sizeof( "Namespace_Body" ), "Namespace_Body" }, { sizeof( "Namespace_Body" ), "Namespace_Body" },
{ sizeof( "Operator" ), "Operator" }, { sizeof( "Operator" ), "Operator" },
{ sizeof( "Operator_Fwd" ), "Operator_Fwd" }, { sizeof( "Operator_Fwd" ), "Operator_Fwd" },
{ sizeof( "Operator_Member" ), "Operator_Member" }, { sizeof( "Operator_Member" ), "Operator_Member" },
{ sizeof( "Operator_Member_Fwd" ), "Operator_Member_Fwd"}, { sizeof( "Operator_Member_Fwd" ), "Operator_Member_Fwd" },
{ sizeof( "Operator_Cast" ), "Operator_Cast" }, { sizeof( "Operator_Cast" ), "Operator_Cast" },
{ sizeof( "Operator_Cast_Fwd" ), "Operator_Cast_Fwd" }, { sizeof( "Operator_Cast_Fwd" ), "Operator_Cast_Fwd" },
{ sizeof( "Parameters" ), "Parameters" }, { sizeof( "Parameters" ), "Parameters" },
{ sizeof( "Preprocess_Define" ), "Preprocess_Define" }, { sizeof( "Preprocess_Define" ), "Preprocess_Define" },
{ sizeof( "Preprocess_Include" ), "Preprocess_Include" }, { sizeof( "Preprocess_Include" ), "Preprocess_Include" },
{ sizeof( "Preprocess_If" ), "Preprocess_If" }, { sizeof( "Preprocess_If" ), "Preprocess_If" },
{ sizeof( "Preprocess_IfDef" ), "Preprocess_IfDef" }, { sizeof( "Preprocess_IfDef" ), "Preprocess_IfDef" },
{ sizeof( "Preprocess_IfNotDef" ), "Preprocess_IfNotDef"}, { sizeof( "Preprocess_IfNotDef" ), "Preprocess_IfNotDef" },
{ sizeof( "Preprocess_ElIf" ), "Preprocess_ElIf" }, { sizeof( "Preprocess_ElIf" ), "Preprocess_ElIf" },
{ sizeof( "Preprocess_Else" ), "Preprocess_Else" }, { sizeof( "Preprocess_Else" ), "Preprocess_Else" },
{ sizeof( "Preprocess_EndIf" ), "Preprocess_EndIf" }, { sizeof( "Preprocess_EndIf" ), "Preprocess_EndIf" },
{ sizeof( "Preprocess_Pragma" ), "Preprocess_Pragma" }, { sizeof( "Preprocess_Pragma" ), "Preprocess_Pragma" },
{ sizeof( "Specifiers" ), "Specifiers" }, { sizeof( "Specifiers" ), "Specifiers" },
{ sizeof( "Struct" ), "Struct" }, { sizeof( "Struct" ), "Struct" },
{ sizeof( "Struct_Fwd" ), "Struct_Fwd" }, { sizeof( "Struct_Fwd" ), "Struct_Fwd" },
{ sizeof( "Struct_Body" ), "Struct_Body" }, { sizeof( "Struct_Body" ), "Struct_Body" },
{ sizeof( "Template" ), "Template" }, { sizeof( "Template" ), "Template" },
{ sizeof( "Typedef" ), "Typedef" }, { sizeof( "Typedef" ), "Typedef" },
{ sizeof( "Typename" ), "Typename" }, { sizeof( "Typename" ), "Typename" },
{ sizeof( "Union" ), "Union" }, { sizeof( "Union" ), "Union" },
{ sizeof( "Union_Body" ), "Union_Body" }, { sizeof( "Union_Body" ), "Union_Body" },
{ sizeof( "Using" ), "Using" }, { sizeof( "Using" ), "Using" },
{ sizeof( "Using_Namespace" ), "Using_Namespace" }, { sizeof( "Using_Namespace" ), "Using_Namespace" },
{ sizeof( "Variable" ), "Variable" }, { sizeof( "Variable" ), "Variable" },
}; };
return lookup[ type ]; return lookup[ type ];
} }

View File

@ -58,49 +58,49 @@ namespace EOperator
StrC to_str( Type op ) StrC to_str( Type op )
{ {
local_persist StrC lookup[] { local_persist StrC lookup[] {
{sizeof( "INVALID" ), "INVALID"}, { 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( "~" ), "~" }, { 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( "," ), "," },
}; };
return lookup[ op ]; return lookup[ op ];
} }

View File

@ -46,32 +46,32 @@ namespace ESpecifier
StrC to_str( Type type ) StrC to_str( Type type )
{ {
local_persist StrC lookup[] { local_persist StrC lookup[] {
{sizeof( "INVALID" ), "INVALID" }, { sizeof( "INVALID" ), "INVALID" },
{ sizeof( "consteval" ), "consteval" }, { sizeof( "consteval" ), "consteval" },
{ sizeof( "constexpr" ), "constexpr" }, { sizeof( "constexpr" ), "constexpr" },
{ sizeof( "constinit" ), "constinit" }, { sizeof( "constinit" ), "constinit" },
{ sizeof( "explicit" ), "explicit" }, { sizeof( "explicit" ), "explicit" },
{ sizeof( "extern" ), "extern" }, { sizeof( "extern" ), "extern" },
{ sizeof( "forceinline" ), "forceinline" }, { sizeof( "forceinline" ), "forceinline" },
{ sizeof( "global" ), "global" }, { sizeof( "global" ), "global" },
{ sizeof( "inline" ), "inline" }, { sizeof( "inline" ), "inline" },
{ sizeof( "internal" ), "internal" }, { sizeof( "internal" ), "internal" },
{ sizeof( "local_persist" ), "local_persist"}, { sizeof( "local_persist" ), "local_persist" },
{ sizeof( "mutable" ), "mutable" }, { sizeof( "mutable" ), "mutable" },
{ sizeof( "neverinline" ), "neverinline" }, { sizeof( "neverinline" ), "neverinline" },
{ sizeof( "*" ), "*" }, { sizeof( "*" ), "*" },
{ sizeof( "&" ), "&" }, { sizeof( "&" ), "&" },
{ sizeof( "register" ), "register" }, { sizeof( "register" ), "register" },
{ sizeof( "&&" ), "&&" }, { sizeof( "&&" ), "&&" },
{ sizeof( "static" ), "static" }, { sizeof( "static" ), "static" },
{ sizeof( "thread_local" ), "thread_local" }, { sizeof( "thread_local" ), "thread_local" },
{ sizeof( "virtual" ), "virtual" }, { sizeof( "virtual" ), "virtual" },
{ sizeof( "const" ), "const" }, { sizeof( "const" ), "const" },
{ sizeof( "final" ), "final" }, { sizeof( "final" ), "final" },
{ sizeof( "noexcept" ), "noexcept" }, { sizeof( "noexcept" ), "noexcept" },
{ sizeof( "override" ), "override" }, { sizeof( "override" ), "override" },
{ sizeof( "= 0" ), "= 0" }, { sizeof( "= 0" ), "= 0" },
{ sizeof( "volatile" ), "volatile" }, { sizeof( "volatile" ), "volatile" },
}; };
return lookup[ type ]; return lookup[ type ];
} }

View File

@ -116,103 +116,103 @@ namespace parser
StrC to_str( Type type ) StrC to_str( Type type )
{ {
local_persist StrC lookup[] { local_persist StrC lookup[] {
{sizeof( "__invalid__" ), "__invalid__" }, { sizeof( "__invalid__" ), "__invalid__" },
{ sizeof( "private" ), "private" }, { sizeof( "private" ), "private" },
{ sizeof( "protected" ), "protected" }, { sizeof( "protected" ), "protected" },
{ sizeof( "public" ), "public" }, { sizeof( "public" ), "public" },
{ 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( "__comment__" ), "__comment__" }, { sizeof( "__comment__" ), "__comment__" },
{ sizeof( "__comment_end__" ), "__comment_end__" }, { sizeof( "__comment_end__" ), "__comment_end__" },
{ sizeof( "__comment_start__" ), "__comment_start__" }, { sizeof( "__comment_start__" ), "__comment_start__" },
{ sizeof( "__character__" ), "__character__" }, { sizeof( "__character__" ), "__character__" },
{ sizeof( "," ), "," }, { sizeof( "," ), "," },
{ sizeof( "class" ), "class" }, { sizeof( "class" ), "class" },
{ sizeof( "__attribute__" ), "__attribute__" }, { sizeof( "__attribute__" ), "__attribute__" },
{ sizeof( "__declspec" ), "__declspec" }, { sizeof( "__declspec" ), "__declspec" },
{ sizeof( "enum" ), "enum" }, { sizeof( "enum" ), "enum" },
{ sizeof( "extern" ), "extern" }, { sizeof( "extern" ), "extern" },
{ sizeof( "friend" ), "friend" }, { sizeof( "friend" ), "friend" },
{ sizeof( "module" ), "module" }, { sizeof( "module" ), "module" },
{ sizeof( "namespace" ), "namespace" }, { sizeof( "namespace" ), "namespace" },
{ sizeof( "operator" ), "operator" }, { sizeof( "operator" ), "operator" },
{ sizeof( "struct" ), "struct" }, { sizeof( "struct" ), "struct" },
{ sizeof( "template" ), "template" }, { sizeof( "template" ), "template" },
{ sizeof( "typedef" ), "typedef" }, { sizeof( "typedef" ), "typedef" },
{ sizeof( "using" ), "using" }, { sizeof( "using" ), "using" },
{ sizeof( "union" ), "union" }, { sizeof( "union" ), "union" },
{ sizeof( "__identifier__" ), "__identifier__" }, { sizeof( "__identifier__" ), "__identifier__" },
{ sizeof( "import" ), "import" }, { sizeof( "import" ), "import" },
{ sizeof( "export" ), "export" }, { sizeof( "export" ), "export" },
{ sizeof( "__new_line__" ), "__new_line__" }, { sizeof( "__new_line__" ), "__new_line__" },
{ sizeof( "__number__" ), "__number__" }, { sizeof( "__number__" ), "__number__" },
{ sizeof( "__operator__" ), "__operator__" }, { sizeof( "__operator__" ), "__operator__" },
{ sizeof( "#" ), "#" }, { sizeof( "#" ), "#" },
{ sizeof( "define" ), "define" }, { sizeof( "define" ), "define" },
{ sizeof( "if" ), "if" }, { sizeof( "if" ), "if" },
{ sizeof( "ifdef" ), "ifdef" }, { sizeof( "ifdef" ), "ifdef" },
{ sizeof( "ifndef" ), "ifndef" }, { sizeof( "ifndef" ), "ifndef" },
{ sizeof( "elif" ), "elif" }, { sizeof( "elif" ), "elif" },
{ sizeof( "else" ), "else" }, { sizeof( "else" ), "else" },
{ sizeof( "endif" ), "endif" }, { sizeof( "endif" ), "endif" },
{ sizeof( "include" ), "include" }, { sizeof( "include" ), "include" },
{ sizeof( "pragma" ), "pragma" }, { sizeof( "pragma" ), "pragma" },
{ sizeof( "__macro_content__" ), "__macro_content__" }, { sizeof( "__macro_content__" ), "__macro_content__" },
{ sizeof( "__macro__" ), "__macro__" }, { sizeof( "__macro__" ), "__macro__" },
{ sizeof( "__unsupported__" ), "__unsupported__" }, { sizeof( "__unsupported__" ), "__unsupported__" },
{ sizeof( "alignas" ), "alignas" }, { sizeof( "alignas" ), "alignas" },
{ sizeof( "const" ), "const" }, { sizeof( "const" ), "const" },
{ sizeof( "consteval" ), "consteval" }, { sizeof( "consteval" ), "consteval" },
{ sizeof( "constexpr" ), "constexpr" }, { sizeof( "constexpr" ), "constexpr" },
{ sizeof( "constinit" ), "constinit" }, { sizeof( "constinit" ), "constinit" },
{ sizeof( "explicit" ), "explicit" }, { sizeof( "explicit" ), "explicit" },
{ sizeof( "extern" ), "extern" }, { sizeof( "extern" ), "extern" },
{ sizeof( "final" ), "final" }, { sizeof( "final" ), "final" },
{ sizeof( "forceinline" ), "forceinline" }, { sizeof( "forceinline" ), "forceinline" },
{ sizeof( "global" ), "global" }, { sizeof( "global" ), "global" },
{ sizeof( "inline" ), "inline" }, { sizeof( "inline" ), "inline" },
{ sizeof( "internal" ), "internal" }, { sizeof( "internal" ), "internal" },
{ sizeof( "local_persist" ), "local_persist" }, { sizeof( "local_persist" ), "local_persist" },
{ sizeof( "mutable" ), "mutable" }, { sizeof( "mutable" ), "mutable" },
{ sizeof( "neverinline" ), "neverinline" }, { sizeof( "neverinline" ), "neverinline" },
{ sizeof( "override" ), "override" }, { sizeof( "override" ), "override" },
{ sizeof( "static" ), "static" }, { sizeof( "static" ), "static" },
{ sizeof( "thread_local" ), "thread_local" }, { sizeof( "thread_local" ), "thread_local" },
{ sizeof( "volatile" ), "volatile" }, { sizeof( "volatile" ), "volatile" },
{ sizeof( "virtual" ), "virtual" }, { sizeof( "virtual" ), "virtual" },
{ sizeof( "*" ), "*" }, { sizeof( "*" ), "*" },
{ sizeof( ";" ), ";" }, { sizeof( ";" ), ";" },
{ sizeof( "static_assert" ), "static_assert" }, { sizeof( "static_assert" ), "static_assert" },
{ sizeof( "__string__" ), "__string__" }, { sizeof( "__string__" ), "__string__" },
{ sizeof( "typename" ), "typename" }, { sizeof( "typename" ), "typename" },
{ sizeof( "unsigned" ), "unsigned" }, { sizeof( "unsigned" ), "unsigned" },
{ sizeof( "signed" ), "signed" }, { sizeof( "signed" ), "signed" },
{ sizeof( "short" ), "short" }, { sizeof( "short" ), "short" },
{ sizeof( "long" ), "long" }, { sizeof( "long" ), "long" },
{ sizeof( "bool" ), "bool" }, { sizeof( "bool" ), "bool" },
{ sizeof( "char" ), "char" }, { sizeof( "char" ), "char" },
{ sizeof( "int" ), "int" }, { sizeof( "int" ), "int" },
{ sizeof( "double" ), "double" }, { sizeof( "double" ), "double" },
{ sizeof( "__int8" ), "__int8" }, { sizeof( "__int8" ), "__int8" },
{ sizeof( "__int16" ), "__int16" }, { sizeof( "__int16" ), "__int16" },
{ sizeof( "__int32" ), "__int32" }, { sizeof( "__int32" ), "__int32" },
{ sizeof( "__int64" ), "__int64" }, { sizeof( "__int64" ), "__int64" },
{ sizeof( "_W64" ), "_W64" }, { sizeof( "_W64" ), "_W64" },
{ sizeof( "..." ), "..." }, { sizeof( "..." ), "..." },
{ sizeof( "__attrib_start__" ), "__attrib_start__" }, { sizeof( "__attrib_start__" ), "__attrib_start__" },
{ sizeof( "GEN_API_Export_Code" ), "GEN_API_Export_Code"}, { sizeof( "GEN_API_Export_Code" ), "GEN_API_Export_Code" },
{ sizeof( "GEN_API_Import_Code" ), "GEN_API_Import_Code"}, { sizeof( "GEN_API_Import_Code" ), "GEN_API_Import_Code" },
}; };
return lookup[ type ]; return lookup[ type ];
} }

View File

@ -195,7 +195,7 @@ struct Array
return get_header()->Num; return get_header()->Num;
} }
bool pop( void ) void pop( void )
{ {
Header& header = * get_header(); Header& header = * get_header();
@ -246,7 +246,11 @@ struct Array
return true; return true;
if ( new_capacity < header.Num ) if ( new_capacity < header.Num )
{
// Already have the memory, mine as well keep it.
header.Num = new_capacity; header.Num = new_capacity;
return true;
}
sw size = sizeof( Header ) + sizeof( Type ) * new_capacity; sw size = sizeof( Header ) + sizeof( Type ) * new_capacity;
Header* new_header = rcast( Header*, alloc( header.Allocator, size ) ); Header* new_header = rcast( Header*, alloc( header.Allocator, size ) );
@ -289,6 +293,8 @@ struct Array
} }
}; };
// TODO(Ed) : This thing needs ALOT of work.
template<typename Type> template<typename Type>
struct HashTable struct HashTable
{ {

View File

@ -24,7 +24,16 @@ void validate_file_ast( char const* path, char const* path_gen )
{ {
log_fmt( "\nValidating: %s", path ); log_fmt( "\nValidating: %s", path );
FileContents file = file_read_contents( GlobalAllocator, true, path ); String path_temp = String::make_length( GlobalAllocator, path_gen, str_len( path_gen ) );
FileContents file = file_read_contents( GlobalAllocator, true, path );
// FileError error = file_open_mode( & path_temp, EFileMode_WRITE, path );
// if ( error != EFileError_NONE )
// {
// log_failure( "gen::File::open - Could not open file: %s", path);
// return;
// }
u64 time_start = time_rel_ms(); u64 time_start = time_rel_ms();
CodeBody ast = parse_global_body( { file.size, (char const*)file.data } ); CodeBody ast = parse_global_body( { file.size, (char const*)file.data } );
log_fmt("\n\tAst generated. Time taken: %llu ms", time_rel_ms() - time_start); log_fmt("\n\tAst generated. Time taken: %llu ms", time_rel_ms() - time_start);