mirror of
https://github.com/Ed94/gencpp.git
synced 2024-12-22 07:44:45 -08:00
began to setup generation of Array_ssize and StringTable in the c-library
Still need to confirm if the these old templates require updates compared to the c++ impl
This commit is contained in:
parent
1c3134218e
commit
47b9c37e94
@ -102,6 +102,7 @@ int gen_main()
|
||||
|
||||
PreprocessorDefines.append(txt("GEN_API_C_BEGIN"));
|
||||
PreprocessorDefines.append(txt("GEN_API_C_END"));
|
||||
PreprocessorDefines.append(txt("HashTable("));
|
||||
|
||||
Code push_ignores = scan_file( project_dir "helpers/push_ignores.inline.hpp" );
|
||||
Code pop_ignores = scan_file( project_dir "helpers/pop_ignores.inline.hpp" );
|
||||
@ -295,6 +296,11 @@ int gen_main()
|
||||
containers.append( gen_array_base() );
|
||||
containers.append( gen_hashtable_base() );
|
||||
|
||||
containers.append(fmt_newline);
|
||||
|
||||
CodeBody array_ssize = gen_array(txt("ssize"), txt("Array_ssize"));
|
||||
containers.append(array_ssize);
|
||||
|
||||
containers.append( def_pragma(code(endregion Containers)));
|
||||
}
|
||||
header.print(fmt_newline);
|
||||
@ -373,6 +379,22 @@ int gen_main()
|
||||
}
|
||||
break;
|
||||
|
||||
case CT_Typedef:
|
||||
{
|
||||
StrC name_string_table = txt("StringTable");
|
||||
|
||||
CodeTypedef td = cast(CodeTypedef, entry);
|
||||
if (td->Name.contains(name_string_table))
|
||||
{
|
||||
CodeBody ht = gen_hashtable(name_string_table, name_string_table);
|
||||
strings.append(ht);
|
||||
strings.append(td);
|
||||
break;
|
||||
}
|
||||
strings.append(td);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
strings.append(entry);
|
||||
break;
|
||||
|
@ -18,7 +18,7 @@ CodeBody gen_hashtable_base()
|
||||
));
|
||||
|
||||
Code define_type = untyped_str(txt(
|
||||
R"(#define Hashtable(_type) HTE_##_type
|
||||
R"(#define HashTable(_type) struct _type
|
||||
)"
|
||||
));
|
||||
|
||||
@ -27,14 +27,10 @@ R"(#define Hashtable(_type) HTE_##_type
|
||||
|
||||
CodeBody gen_hashtable( StrC type, StrC hashtable_name )
|
||||
{
|
||||
String
|
||||
fn = String::make_reserve( GlobalAllocator, hashtable_name.Len + sizeof("gen") );
|
||||
fn.append_fmt( "%.*s", hashtable_name.Len, hashtable_name.Ptr );
|
||||
str_to_lower(fn.Data);
|
||||
|
||||
String
|
||||
tbl_type = String::make_reserve( GlobalAllocator, hashtable_name.Len + sizeof("gen") );
|
||||
tbl_type.append_fmt( "%.*s", hashtable_name.Len, hashtable_name.Ptr );
|
||||
String tbl_type = {(char*) hashtable_name.duplicate(GlobalAllocator).Ptr};
|
||||
String fn = tbl_type.duplicate(GlobalAllocator);
|
||||
str_to_lower(fn.Data);
|
||||
|
||||
String name_lower = String::make( GlobalAllocator, hashtable_name );
|
||||
str_to_lower( name_lower.Data );
|
||||
|
@ -4957,6 +4957,13 @@ CodeTypedef parse_typedef()
|
||||
Context.Scope->Name = name;
|
||||
eat( Tok_Preprocess_Macro );
|
||||
// <ModuleFalgs> typedef <Preprocessed_Macro>
|
||||
|
||||
if ( currtok.Type == Tok_Identifier )
|
||||
{
|
||||
type = untyped_str({ name.Length, name.Text });
|
||||
name = currtok;
|
||||
eat(Tok_Identifier);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user