mirror of
https://github.com/Ed94/gencpp.git
synced 2024-12-22 15:54:45 -08:00
base works
This commit is contained in:
parent
ef78772278
commit
0e32838da1
@ -49,26 +49,22 @@ struct CSV_Columns2 {
|
|||||||
|
|
||||||
inline
|
inline
|
||||||
CSV_Column parse_csv_one_column(AllocatorInfo allocator, char const* path) {
|
CSV_Column parse_csv_one_column(AllocatorInfo allocator, char const* path) {
|
||||||
char scratch_mem[kilobytes(32)];
|
FileContents content = file_read_contents( allocator, file_zero_terminate, path );
|
||||||
Arena scratch = arena_init_from_memory( scratch_mem, sizeof(scratch_mem) );
|
Arena csv_arena = arena_init_from_memory(content.data, content.size);
|
||||||
|
|
||||||
file_read_contents( arena_allocator_info( & scratch), file_zero_terminate, path );
|
|
||||||
|
|
||||||
CSV_Column result;
|
CSV_Column result;
|
||||||
csv_parse( & result.ADT, scratch_mem, allocator, false );
|
csv_parse( & result.ADT, rcast(char*, content.data), allocator, false );
|
||||||
result.Content = result.ADT.nodes[0].nodes;
|
result.Content = result.ADT.nodes[0].nodes;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline
|
inline
|
||||||
CSV_Columns2 parse_csv_two_columns(AllocatorInfo allocator, char const* path) {
|
CSV_Columns2 parse_csv_two_columns(AllocatorInfo allocator, char const* path) {
|
||||||
char scratch_mem[kilobytes(32)];
|
FileContents content = file_read_contents( allocator, file_zero_terminate, path );
|
||||||
Arena scratch = arena_init_from_memory( scratch_mem, sizeof(scratch_mem) );
|
Arena csv_arena = arena_init_from_memory(content.data, content.size);
|
||||||
|
|
||||||
file_read_contents( arena_allocator_info( & scratch), file_zero_terminate, path );
|
|
||||||
|
|
||||||
CSV_Columns2 result;
|
CSV_Columns2 result;
|
||||||
csv_parse( & result.ADT, scratch_mem, allocator, false );
|
csv_parse( & result.ADT, rcast(char*, content.data), allocator, false );
|
||||||
result.Col_1 = result.ADT.nodes[0].nodes;
|
result.Col_1 = result.ADT.nodes[0].nodes;
|
||||||
result.Col_2 = result.ADT.nodes[1].nodes;
|
result.Col_2 = result.ADT.nodes[1].nodes;
|
||||||
return result;
|
return result;
|
||||||
|
@ -16,7 +16,7 @@ GEN_NS_END
|
|||||||
using namespace gen;
|
using namespace gen;
|
||||||
|
|
||||||
constexpr char const* path_format_style = "../scripts/.clang-format";
|
constexpr char const* path_format_style = "../scripts/.clang-format";
|
||||||
constexpr char const* scratch_file = "gen/scratch.hpp";
|
constexpr char const* scratch_file = "build/scratch.hpp";
|
||||||
|
|
||||||
Code format( Code code ) {
|
Code format( Code code ) {
|
||||||
return code_refactor_and_format(code, scratch_file, nullptr, path_format_style );
|
return code_refactor_and_format(code, scratch_file, nullptr, path_format_style );
|
||||||
@ -26,20 +26,18 @@ constexpr char const* generation_notice =
|
|||||||
"// This file was generated automatially by gencpp's bootstrap.cpp "
|
"// This file was generated automatially by gencpp's bootstrap.cpp "
|
||||||
"(See: https://github.com/Ed94/gencpp)\n\n";
|
"(See: https://github.com/Ed94/gencpp)\n\n";
|
||||||
|
|
||||||
CodeBody gen_component_header = def_global_body( args(
|
|
||||||
def_preprocess_cond( PreprocessCond_IfDef, txt("GEN_INTELLISENSE_DIRECTIVES") ),
|
|
||||||
pragma_once,
|
|
||||||
def_include(txt("components/types.hpp")),
|
|
||||||
preprocess_endif,
|
|
||||||
fmt_newline,
|
|
||||||
untyped_str( to_strc_from_c_str(generation_notice) )
|
|
||||||
));
|
|
||||||
|
|
||||||
int gen_main()
|
int gen_main()
|
||||||
{
|
{
|
||||||
gen::init();
|
gen::init();
|
||||||
|
|
||||||
__debugbreak();
|
CodeBody gen_component_header = def_global_body( args(
|
||||||
|
def_preprocess_cond( PreprocessCond_IfDef, txt("GEN_INTELLISENSE_DIRECTIVES") ),
|
||||||
|
pragma_once,
|
||||||
|
def_include(txt("components/types.hpp")),
|
||||||
|
preprocess_endif,
|
||||||
|
fmt_newline,
|
||||||
|
untyped_str( to_strc_from_c_str(generation_notice) )
|
||||||
|
));
|
||||||
|
|
||||||
CodeBody ecode = gen_ecode ( "enums/ECodeTypes.csv" );
|
CodeBody ecode = gen_ecode ( "enums/ECodeTypes.csv" );
|
||||||
CodeBody eoperator = gen_eoperator ( "enums/EOperator.csv" );
|
CodeBody eoperator = gen_eoperator ( "enums/EOperator.csv" );
|
||||||
|
@ -9,8 +9,10 @@ using namespace gen;
|
|||||||
|
|
||||||
CodeBody gen_ecode( char const* path, bool use_c_definition = false )
|
CodeBody gen_ecode( char const* path, bool use_c_definition = false )
|
||||||
{
|
{
|
||||||
CSV_Columns2 csv_enum = parse_csv_two_columns(GlobalAllocator, path );
|
FixedArena_32KB scratch; fixed_arena_init(& scratch);
|
||||||
|
AllocatorInfo scratch_info = fixed_arena_allocator_info(& scratch);
|
||||||
|
|
||||||
|
CSV_Columns2 csv_enum = parse_csv_two_columns( scratch_info, path );
|
||||||
String enum_entries = string_make_reserve( GlobalAllocator, kilobytes(1) );
|
String enum_entries = string_make_reserve( GlobalAllocator, kilobytes(1) );
|
||||||
String to_str_entries = string_make_reserve( GlobalAllocator, kilobytes(1) );
|
String to_str_entries = string_make_reserve( GlobalAllocator, kilobytes(1) );
|
||||||
String to_keyword_str_entries = string_make_reserve( GlobalAllocator, kilobytes(1) );
|
String to_keyword_str_entries = string_make_reserve( GlobalAllocator, kilobytes(1) );
|
||||||
@ -91,10 +93,12 @@ CodeBody gen_ecode( char const* path, bool use_c_definition = false )
|
|||||||
|
|
||||||
CodeBody gen_eoperator( char const* path, bool use_c_definition = false )
|
CodeBody gen_eoperator( char const* path, bool use_c_definition = false )
|
||||||
{
|
{
|
||||||
CSV_Columns2 csv_enum = parse_csv_two_columns(GlobalAllocator, path);
|
FixedArena_16KB scratch; fixed_arena_init(& scratch);
|
||||||
|
AllocatorInfo scratch_info = fixed_arena_allocator_info(& scratch);
|
||||||
|
|
||||||
String enum_entries = string_make_reserve( GlobalAllocator, kilobytes(1) );
|
CSV_Columns2 csv_enum = parse_csv_two_columns( scratch_info, path );
|
||||||
String to_str_entries = string_make_reserve( GlobalAllocator, kilobytes(1) );
|
String enum_entries = string_make_reserve( GlobalAllocator, 32 );
|
||||||
|
String to_str_entries = string_make_reserve( GlobalAllocator, 32 );
|
||||||
|
|
||||||
for (usize idx = 0; idx < array_num(csv_enum.Col_1); idx++) {
|
for (usize idx = 0; idx < array_num(csv_enum.Col_1); idx++) {
|
||||||
char const* enum_str = csv_enum.Col_1[idx].string;
|
char const* enum_str = csv_enum.Col_1[idx].string;
|
||||||
@ -175,10 +179,12 @@ CodeBody gen_eoperator( char const* path, bool use_c_definition = false )
|
|||||||
|
|
||||||
CodeBody gen_especifier( char const* path, bool use_c_definition = false )
|
CodeBody gen_especifier( char const* path, bool use_c_definition = false )
|
||||||
{
|
{
|
||||||
CSV_Columns2 csv_enum = parse_csv_two_columns(GlobalAllocator, path);
|
FixedArena_16KB scratch; fixed_arena_init(& scratch);
|
||||||
|
AllocatorInfo scratch_info = fixed_arena_allocator_info(& scratch);
|
||||||
|
|
||||||
String enum_entries = string_make_reserve( GlobalAllocator, kilobytes(1) );
|
CSV_Columns2 csv_enum = parse_csv_two_columns( scratch_info, path );
|
||||||
String to_str_entries = string_make_reserve( GlobalAllocator, kilobytes(1) );
|
String enum_entries = string_make_reserve( scratch_info, kilobytes(1) );
|
||||||
|
String to_str_entries = string_make_reserve( scratch_info, kilobytes(1) );
|
||||||
|
|
||||||
for (usize idx = 0; idx < array_num(csv_enum.Col_1); idx++)
|
for (usize idx = 0; idx < array_num(csv_enum.Col_1); idx++)
|
||||||
{
|
{
|
||||||
@ -314,31 +320,29 @@ CodeBody gen_especifier( char const* path, bool use_c_definition = false )
|
|||||||
|
|
||||||
CodeBody gen_etoktype( char const* etok_path, char const* attr_path, bool use_c_definition = false )
|
CodeBody gen_etoktype( char const* etok_path, char const* attr_path, bool use_c_definition = false )
|
||||||
{
|
{
|
||||||
char scratch_mem[kilobytes(16)];
|
FixedArena_32KB scratch; fixed_arena_init(& scratch);
|
||||||
Arena scratch = arena_init_from_memory( scratch_mem, sizeof(scratch_mem) );
|
AllocatorInfo scratch_info = fixed_arena_allocator_info(& scratch);
|
||||||
|
|
||||||
AllocatorInfo scratch_info = arena_allocator_info(& scratch);
|
|
||||||
|
|
||||||
FileContents enum_content = file_read_contents( scratch_info, file_zero_terminate, etok_path );
|
FileContents enum_content = file_read_contents( scratch_info, file_zero_terminate, etok_path );
|
||||||
|
|
||||||
CSV_Object csv_enum_nodes;
|
CSV_Object csv_enum_nodes;
|
||||||
csv_parse( &csv_enum_nodes, rcast(char*, enum_content.data), GlobalAllocator, false );
|
csv_parse( &csv_enum_nodes, rcast(char*, enum_content.data), scratch_info, false );
|
||||||
|
|
||||||
FileContents attrib_content = file_read_contents( scratch_info, file_zero_terminate, attr_path );
|
FileContents attrib_content = file_read_contents( scratch_info, file_zero_terminate, attr_path );
|
||||||
|
|
||||||
CSV_Object csv_attr_nodes;
|
CSV_Object csv_attr_nodes;
|
||||||
csv_parse( &csv_attr_nodes, rcast(char*, attrib_content.data), GlobalAllocator, false );
|
csv_parse( &csv_attr_nodes, rcast(char*, attrib_content.data), scratch_info, false );
|
||||||
|
|
||||||
Array<ADT_Node> enum_strs = csv_enum_nodes.nodes[0].nodes;
|
Array<ADT_Node> enum_strs = csv_enum_nodes.nodes[0].nodes;
|
||||||
Array<ADT_Node> enum_str_strs = csv_enum_nodes.nodes[1].nodes;
|
Array<ADT_Node> enum_str_strs = csv_enum_nodes.nodes[1].nodes;
|
||||||
Array<ADT_Node> attribute_strs = csv_attr_nodes.nodes[0].nodes;
|
Array<ADT_Node> attribute_strs = csv_attr_nodes.nodes[0].nodes;
|
||||||
Array<ADT_Node> attribute_str_strs = csv_attr_nodes.nodes[1].nodes;
|
Array<ADT_Node> attribute_str_strs = csv_attr_nodes.nodes[1].nodes;
|
||||||
|
|
||||||
String enum_entries = string_make_reserve( GlobalAllocator, kilobytes(2) );
|
String enum_entries = string_make_reserve( scratch_info, kilobytes(2) );
|
||||||
String to_str_entries = string_make_reserve( GlobalAllocator, kilobytes(4) );
|
String to_str_entries = string_make_reserve( scratch_info, kilobytes(4) );
|
||||||
String attribute_entries = string_make_reserve( GlobalAllocator, kilobytes(2) );
|
String attribute_entries = string_make_reserve( scratch_info, kilobytes(2) );
|
||||||
String to_str_attributes = string_make_reserve( GlobalAllocator, kilobytes(4) );
|
String to_str_attributes = string_make_reserve( scratch_info, kilobytes(4) );
|
||||||
String attribute_define_entries = string_make_reserve( GlobalAllocator, kilobytes(4) );
|
String attribute_define_entries = string_make_reserve( scratch_info, kilobytes(4) );
|
||||||
|
|
||||||
for (usize idx = 0; idx < array_num(enum_strs); idx++)
|
for (usize idx = 0; idx < array_num(enum_strs); idx++)
|
||||||
{
|
{
|
||||||
|
@ -71,7 +71,7 @@ Code code_refactor_and_format( Code code, char const* scratch_path, char const*
|
|||||||
{
|
{
|
||||||
GEN_ASSERT(code);
|
GEN_ASSERT(code);
|
||||||
GEN_ASSERT_NOT_NULL(scratch_path);
|
GEN_ASSERT_NOT_NULL(scratch_path);
|
||||||
Builder scratch_file = builder_open("gen/scratch.hpp");
|
Builder scratch_file = builder_open( scratch_path );
|
||||||
builder_print( & scratch_file, code);
|
builder_print( & scratch_file, code);
|
||||||
builder_write(& scratch_file);
|
builder_write(& scratch_file);
|
||||||
|
|
||||||
|
@ -115,13 +115,13 @@ if ( $base )
|
|||||||
$flag_link_win_subsystem_console
|
$flag_link_win_subsystem_console
|
||||||
)
|
)
|
||||||
|
|
||||||
$includes = @( $path_project)
|
$includes = @( $path_base)
|
||||||
$unit = join-path $path_base "base.cpp"
|
$unit = join-path $path_base "base.cpp"
|
||||||
$executable = join-path $path_build "base.exe"
|
$executable = join-path $path_build "base.exe"
|
||||||
|
|
||||||
$result = build-simple $path_build $includes $compiler_args $linker_args $unit $executable
|
$result = build-simple $path_build $includes $compiler_args $linker_args $unit $executable
|
||||||
|
|
||||||
Push-Location $path_project
|
Push-Location $path_base
|
||||||
if ( Test-Path( $executable ) ) {
|
if ( Test-Path( $executable ) ) {
|
||||||
write-host "`nRunning base"
|
write-host "`nRunning base"
|
||||||
$time_taken = Measure-Command { & $executable
|
$time_taken = Measure-Command { & $executable
|
||||||
@ -129,7 +129,7 @@ if ( $base )
|
|||||||
write-host `t $_ -ForegroundColor Green
|
write-host `t $_ -ForegroundColor Green
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
write-host "`bbase completed in $($time_taken.TotalMilliseconds) ms"
|
write-host "`nbase completed in $($time_taken.TotalMilliseconds) ms"
|
||||||
}
|
}
|
||||||
Pop-Location
|
Pop-Location
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user