mirror of
https://github.com/Ed94/gencpp.git
synced 2024-11-10 02:54:53 -08:00
Upfront constructors work again (test case wise)
Doing parsing set next
This commit is contained in:
parent
ade4c3345d
commit
1e79c9190e
@ -1974,9 +1974,10 @@ namespace gen
|
|||||||
result.append_fmt( "%s ", Attributes->to_string() );
|
result.append_fmt( "%s ", Attributes->to_string() );
|
||||||
|
|
||||||
if ( UnderlyingType )
|
if ( UnderlyingType )
|
||||||
result.append_fmt( "%s : %s\n{\n"
|
result.append_fmt( "%s : %s\n{\n%s\n};"
|
||||||
, Name
|
, Name
|
||||||
, UnderlyingType->to_string()
|
, UnderlyingType->to_string()
|
||||||
|
, Body->to_string()
|
||||||
);
|
);
|
||||||
|
|
||||||
else result.append_fmt( "%s\n{\n%s\n};"
|
else result.append_fmt( "%s\n{\n%s\n};"
|
||||||
@ -2025,7 +2026,7 @@ namespace gen
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result.append_fmt( "%s\n{\n$s\n};"
|
result.append_fmt( "%s\n{\n%s\n};"
|
||||||
, Name
|
, Name
|
||||||
, Body->to_string()
|
, Body->to_string()
|
||||||
);
|
);
|
||||||
@ -2077,7 +2078,7 @@ namespace gen
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case Friend:
|
case Friend:
|
||||||
result.append_fmt( "friend %s;", Declaration->to_string() );
|
result.append_fmt( "friend %s", Declaration->to_string() );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Function:
|
case Function:
|
||||||
@ -2091,7 +2092,7 @@ namespace gen
|
|||||||
result.append_fmt( "%s\n", Specs->to_string() );
|
result.append_fmt( "%s\n", Specs->to_string() );
|
||||||
|
|
||||||
if ( ReturnType )
|
if ( ReturnType )
|
||||||
result.append_fmt( "%s %s", ReturnType->to_string(), Name );
|
result.append_fmt( "%s %s(", ReturnType->to_string(), Name );
|
||||||
|
|
||||||
else
|
else
|
||||||
result.append_fmt( "%s(", Name );
|
result.append_fmt( "%s(", Name );
|
||||||
@ -2414,7 +2415,9 @@ namespace gen
|
|||||||
result.append_fmt( "[%s]", ValueType->ArrExpr->to_string() );
|
result.append_fmt( "[%s]", ValueType->ArrExpr->to_string() );
|
||||||
|
|
||||||
if ( Value )
|
if ( Value )
|
||||||
result.append_fmt( " = %s;", Value->to_string() );
|
result.append_fmt( " = %s", Value->to_string() );
|
||||||
|
|
||||||
|
result.append( ";" );
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -3737,7 +3740,7 @@ namespace gen
|
|||||||
|
|
||||||
result->NumEntries++;
|
result->NumEntries++;
|
||||||
|
|
||||||
return (CodeParam) result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
CodeSpecifier def_specifier( SpecifierT spec )
|
CodeSpecifier def_specifier( SpecifierT spec )
|
||||||
@ -3802,7 +3805,7 @@ namespace gen
|
|||||||
result->ParentType = parent;
|
result->ParentType = parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (CodeStruct) result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
CodeTemplate def_template( CodeParam params, Code declaration, ModuleFlag mflags )
|
CodeTemplate def_template( CodeParam params, Code declaration, ModuleFlag mflags )
|
||||||
@ -3835,7 +3838,7 @@ namespace gen
|
|||||||
result->Params = params;
|
result->Params = params;
|
||||||
result->Declaration = declaration;
|
result->Declaration = declaration;
|
||||||
|
|
||||||
return (CodeTemplate) result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
CodeType def_type( StrC name, Code arrayexpr, CodeSpecifier specifiers, CodeAttributes attributes )
|
CodeType def_type( StrC name, Code arrayexpr, CodeSpecifier specifiers, CodeAttributes attributes )
|
||||||
@ -3982,7 +3985,7 @@ namespace gen
|
|||||||
if ( attributes )
|
if ( attributes )
|
||||||
result->Attributes = attributes;
|
result->Attributes = attributes;
|
||||||
|
|
||||||
return (CodeUsing) result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
CodeUsingNamespace def_using_namespace( StrC name )
|
CodeUsingNamespace def_using_namespace( StrC name )
|
||||||
@ -4436,7 +4439,7 @@ namespace gen
|
|||||||
}
|
}
|
||||||
va_end(va);
|
va_end(va);
|
||||||
|
|
||||||
return (CodeParam) result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
CodeParam def_params( s32 num, CodeParam* codes )
|
CodeParam def_params( s32 num, CodeParam* codes )
|
||||||
|
133
project/gen.hpp
133
project/gen.hpp
@ -2826,16 +2826,13 @@ namespace gen
|
|||||||
SpecifierT ArrSpecs[AST::ArrSpecs_Cap]; // Specifiers
|
SpecifierT ArrSpecs[AST::ArrSpecs_Cap]; // Specifiers
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
// Entry Node
|
AST* Prev;
|
||||||
struct {
|
AST* Front;
|
||||||
AST* Prev;
|
AST* Last;
|
||||||
AST* Next;
|
};
|
||||||
};
|
union {
|
||||||
// Body Node
|
AST* Next;
|
||||||
struct {
|
AST* Back;
|
||||||
AST* Front;
|
|
||||||
AST* Back;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
AST* Parent;
|
AST* Parent;
|
||||||
StringCached Name;
|
StringCached Name;
|
||||||
@ -2884,16 +2881,13 @@ namespace gen
|
|||||||
SpecifierT ArrSpecs[AST::ArrSpecs_Cap]; // Specifiers
|
SpecifierT ArrSpecs[AST::ArrSpecs_Cap]; // Specifiers
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
// Entry Node
|
AST* Prev;
|
||||||
struct {
|
AST* Front;
|
||||||
AST* Prev;
|
AST* Last;
|
||||||
AST* Next;
|
};
|
||||||
};
|
union {
|
||||||
// Body Node
|
AST* Next;
|
||||||
struct {
|
AST* Back;
|
||||||
AST* Front;
|
|
||||||
AST* Back;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
AST* Parent;
|
AST* Parent;
|
||||||
StringCached Name;
|
StringCached Name;
|
||||||
@ -3014,28 +3008,10 @@ namespace gen
|
|||||||
{
|
{
|
||||||
Using_Code( CodeParam );
|
Using_Code( CodeParam );
|
||||||
|
|
||||||
void append( CodeParam other )
|
void append( CodeParam other );
|
||||||
{
|
|
||||||
rcast( AST*, ast )->append( (AST*) other.ast );
|
|
||||||
}
|
|
||||||
CodeParam get( s32 idx )
|
|
||||||
{
|
|
||||||
CodeParam param = *this;
|
|
||||||
do
|
|
||||||
{
|
|
||||||
if ( ! ++ param )
|
|
||||||
return { nullptr };
|
|
||||||
|
|
||||||
return { (AST_Param*) param.raw()->Next };
|
CodeParam get( s32 idx );
|
||||||
}
|
bool has_entries();
|
||||||
while ( --idx );
|
|
||||||
|
|
||||||
return { nullptr };
|
|
||||||
}
|
|
||||||
bool has_entries()
|
|
||||||
{
|
|
||||||
return rcast( AST*, ast )->has_entries();
|
|
||||||
}
|
|
||||||
AST* raw()
|
AST* raw()
|
||||||
{
|
{
|
||||||
return rcast( AST*, ast );
|
return rcast( AST*, ast );
|
||||||
@ -3063,13 +3039,9 @@ namespace gen
|
|||||||
}
|
}
|
||||||
CodeParam end()
|
CodeParam end()
|
||||||
{
|
{
|
||||||
return { (AST_Param*) rcast( AST*, ast)->Next };
|
return { (AST_Param*) rcast( AST*, ast)->Last };
|
||||||
}
|
|
||||||
CodeParam& operator++()
|
|
||||||
{
|
|
||||||
ast = (AST_Param*) rcast( AST*, ast )->Next;
|
|
||||||
return * this;
|
|
||||||
}
|
}
|
||||||
|
CodeParam& operator++();
|
||||||
CodeParam operator*()
|
CodeParam operator*()
|
||||||
{
|
{
|
||||||
return * this;
|
return * this;
|
||||||
@ -3245,7 +3217,7 @@ namespace gen
|
|||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
char _PAD_PROPERTIES_[ sizeof(AST*) * 4 ];
|
char _PAD_PROPERTIES_[ sizeof(AST*) * 4 ];
|
||||||
Code Body;
|
Code Value;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
Code Prev;
|
Code Prev;
|
||||||
@ -3264,7 +3236,7 @@ namespace gen
|
|||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
char _PAD_PROPERTIES_[ sizeof(AST*) * 4 ];
|
char _PAD_PROPERTIES_[ sizeof(AST*) * 4 ];
|
||||||
Code Body;
|
CodeBody Body;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
Code Prev;
|
Code Prev;
|
||||||
@ -3421,8 +3393,8 @@ namespace gen
|
|||||||
Code Value;
|
Code Value;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
Code Prev;
|
CodeParam Last;
|
||||||
Code Next;
|
CodeParam Next;
|
||||||
Code Parent;
|
Code Parent;
|
||||||
StringCached Name;
|
StringCached Name;
|
||||||
CodeT Type;
|
CodeT Type;
|
||||||
@ -3473,7 +3445,7 @@ namespace gen
|
|||||||
char _PAD_[ sizeof(SpecifierT) * AST::ArrSpecs_Cap ];
|
char _PAD_[ sizeof(SpecifierT) * AST::ArrSpecs_Cap ];
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
char _PAD_PROPERTIES_[ sizeof(AST*) * 2 ];
|
char _PAD_PROPERTIES_[ sizeof(AST*) * 3 ];
|
||||||
CodeParam Params;
|
CodeParam Params;
|
||||||
Code Declaration;
|
Code Declaration;
|
||||||
};
|
};
|
||||||
@ -3595,7 +3567,7 @@ namespace gen
|
|||||||
CodeAttributes Attributes;
|
CodeAttributes Attributes;
|
||||||
CodeSpecifier Specs;
|
CodeSpecifier Specs;
|
||||||
CodeType ValueType;
|
CodeType ValueType;
|
||||||
char _PAD_PROPERTIES_[ sizeof(AST*) * 2 ];
|
char _PAD_PROPERTIES_[ sizeof(AST*) ];
|
||||||
Code Value;
|
Code Value;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -3995,6 +3967,8 @@ namespace gen
|
|||||||
if ( other->Parent )
|
if ( other->Parent )
|
||||||
other = other->duplicate();
|
other = other->duplicate();
|
||||||
|
|
||||||
|
other->Parent = this;
|
||||||
|
|
||||||
if ( Front == nullptr )
|
if ( Front == nullptr )
|
||||||
{
|
{
|
||||||
Front = other;
|
Front = other;
|
||||||
@ -4071,6 +4045,7 @@ namespace gen
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma region AST & Code Gen Common
|
||||||
#define Define_CodeImpl( Typename ) \
|
#define Define_CodeImpl( Typename ) \
|
||||||
char const* Typename::debug_str() \
|
char const* Typename::debug_str() \
|
||||||
{ \
|
{ \
|
||||||
@ -4200,7 +4175,6 @@ namespace gen
|
|||||||
Define_AST_Cast( Var );
|
Define_AST_Cast( Var );
|
||||||
#undef Define_AST_Cast
|
#undef Define_AST_Cast
|
||||||
|
|
||||||
#pragma region Code Operator Cast Impj
|
|
||||||
|
|
||||||
#define Define_CodeCast( type ) \
|
#define Define_CodeCast( type ) \
|
||||||
Code::operator Code ## type() const \
|
Code::operator Code ## type() const \
|
||||||
@ -4233,7 +4207,56 @@ namespace gen
|
|||||||
Define_CodeCast( Var );
|
Define_CodeCast( Var );
|
||||||
Define_CodeCast( Body);
|
Define_CodeCast( Body);
|
||||||
#undef Define_CodeCast
|
#undef Define_CodeCast
|
||||||
#pragma endregion Code Operater Cast Impl
|
#pragma endregion AST & Code Gen Common
|
||||||
|
|
||||||
|
void CodeParam::append( CodeParam other )
|
||||||
|
{
|
||||||
|
AST* self = (AST*) ast;
|
||||||
|
AST* entry = (AST*) other.ast;
|
||||||
|
|
||||||
|
if ( entry->Parent )
|
||||||
|
entry = entry->duplicate();
|
||||||
|
|
||||||
|
entry->Parent = self;
|
||||||
|
|
||||||
|
if ( self->Last == nullptr )
|
||||||
|
{
|
||||||
|
self->Last = entry;
|
||||||
|
self->Next = entry;
|
||||||
|
self->NumEntries++;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
self->Last->Next = entry;
|
||||||
|
self->Last = entry;
|
||||||
|
self->NumEntries++;
|
||||||
|
}
|
||||||
|
|
||||||
|
CodeParam CodeParam::get( s32 idx )
|
||||||
|
{
|
||||||
|
CodeParam param = *this;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if ( ! ++ param )
|
||||||
|
return { nullptr };
|
||||||
|
|
||||||
|
return { (AST_Param*) param.raw()->Next };
|
||||||
|
}
|
||||||
|
while ( --idx );
|
||||||
|
|
||||||
|
return { nullptr };
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CodeParam::has_entries()
|
||||||
|
{
|
||||||
|
return ast->NumEntries > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
CodeParam& CodeParam::operator ++()
|
||||||
|
{
|
||||||
|
ast = ast->Next.ast;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
CodeBody def_body( CodeT type )
|
CodeBody def_body( CodeT type )
|
||||||
{
|
{
|
||||||
|
@ -244,7 +244,7 @@
|
|||||||
<Item Name="ValueType">ValueType</Item>
|
<Item Name="ValueType">ValueType</Item>
|
||||||
<Item Name="Value">Value</Item>
|
<Item Name="Value">Value</Item>
|
||||||
<Item Name="Parent">Parent</Item>
|
<Item Name="Parent">Parent</Item>
|
||||||
<Item Name="Prev">Prev</Item>
|
<Item Name="Last">Last</Item>
|
||||||
<Item Name="Next">Next</Item>
|
<Item Name="Next">Next</Item>
|
||||||
<Item Name="NumEntries">NumEntries</Item>
|
<Item Name="NumEntries">NumEntries</Item>
|
||||||
</Expand>
|
</Expand>
|
||||||
@ -531,7 +531,7 @@
|
|||||||
<Item Name="ValueType">ast->ValueType</Item>
|
<Item Name="ValueType">ast->ValueType</Item>
|
||||||
<Item Name="Value">ast->Value</Item>
|
<Item Name="Value">ast->Value</Item>
|
||||||
<Item Name="Parent">ast->Parent</Item>
|
<Item Name="Parent">ast->Parent</Item>
|
||||||
<Item Name="Prev">ast->Prev</Item>
|
<Item Name="Last">ast->Last</Item>
|
||||||
<Item Name="Next">ast->Next</Item>
|
<Item Name="Next">ast->Next</Item>
|
||||||
<Item Name="NumEntries">ast->NumEntries</Item>
|
<Item Name="NumEntries">ast->NumEntries</Item>
|
||||||
</Expand>
|
</Expand>
|
||||||
@ -568,6 +568,7 @@
|
|||||||
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
|
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
|
||||||
<Expand>
|
<Expand>
|
||||||
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
|
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
|
||||||
|
<Item Name="Params">ast->Params</Item>
|
||||||
<Item Name="Declaration">ast->Declaration</Item>
|
<Item Name="Declaration">ast->Declaration</Item>
|
||||||
<Item Name="Parent">ast->Parent</Item>
|
<Item Name="Parent">ast->Parent</Item>
|
||||||
<Item Name="Prev">ast->Prev</Item>
|
<Item Name="Prev">ast->Prev</Item>
|
||||||
|
@ -251,7 +251,7 @@ u32 gen_array_file()
|
|||||||
gen_array_file;
|
gen_array_file;
|
||||||
gen_array_file.open( "array.Parsed.gen.hpp" );
|
gen_array_file.open( "array.Parsed.gen.hpp" );
|
||||||
|
|
||||||
Code include_zpl = def_include( txt_StrC("Bloat.hpp") );
|
Code include_zpl = def_include( txt_StrC("gen.hpp") );
|
||||||
gen_array_file.print( include_zpl );
|
gen_array_file.print( include_zpl );
|
||||||
|
|
||||||
gen_array_file.print( def_using_namespace( name(gen)));
|
gen_array_file.print( def_using_namespace( name(gen)));
|
||||||
|
@ -165,7 +165,7 @@ u32 gen_buffer_file()
|
|||||||
gen_buffer_file;
|
gen_buffer_file;
|
||||||
gen_buffer_file.open( "buffer.Parsed.gen.hpp" );
|
gen_buffer_file.open( "buffer.Parsed.gen.hpp" );
|
||||||
|
|
||||||
gen_buffer_file.print( def_include( txt_StrC("Bloat.hpp")) );
|
gen_buffer_file.print( def_include( txt_StrC("gen.hpp")) );
|
||||||
gen_buffer_file.print( def_using_namespace( name(gen)));
|
gen_buffer_file.print( def_using_namespace( name(gen)));
|
||||||
|
|
||||||
gen_buffer_file.print( gen__buffer_base() );
|
gen_buffer_file.print( gen__buffer_base() );
|
||||||
|
@ -316,7 +316,7 @@ u32 gen_hashtable_file()
|
|||||||
gen_hashtable_file;
|
gen_hashtable_file;
|
||||||
gen_hashtable_file.open( "hashtable.Parsed.gen.hpp" );
|
gen_hashtable_file.open( "hashtable.Parsed.gen.hpp" );
|
||||||
|
|
||||||
gen_hashtable_file.print( def_include( txt_StrC("Bloat.hpp")) );
|
gen_hashtable_file.print( def_include( txt_StrC("gen.hpp")) );
|
||||||
gen_hashtable_file.print( def_include( txt_StrC("Array.Parsed.hpp")) );
|
gen_hashtable_file.print( def_include( txt_StrC("Array.Parsed.hpp")) );
|
||||||
gen_hashtable_file.print( def_include( txt_StrC("array.Parsed.gen.hpp")) );
|
gen_hashtable_file.print( def_include( txt_StrC("array.Parsed.gen.hpp")) );
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ u32 gen_ring_file()
|
|||||||
gen_ring_file;
|
gen_ring_file;
|
||||||
gen_ring_file.open( "ring.Parsed.gen.hpp" );
|
gen_ring_file.open( "ring.Parsed.gen.hpp" );
|
||||||
|
|
||||||
gen_ring_file.print( def_include( txt_StrC("Bloat.hpp")) );
|
gen_ring_file.print( def_include( txt_StrC("gen.hpp")) );
|
||||||
gen_ring_file.print( def_include( txt_StrC("buffer.Parsed.gen.hpp")) );
|
gen_ring_file.print( def_include( txt_StrC("buffer.Parsed.gen.hpp")) );
|
||||||
// gen_ring_file.print( gen__ring_base() );
|
// gen_ring_file.print( gen__ring_base() );
|
||||||
|
|
||||||
|
@ -128,11 +128,11 @@ Code gen__array( StrC type )
|
|||||||
|
|
||||||
CodeFn fill;
|
CodeFn fill;
|
||||||
{
|
{
|
||||||
CodeParam params = def_params( 3
|
CodeParam params = def_params( args(
|
||||||
, def_param( t_uw, name(begin) )
|
def_param( t_uw, name(begin) )
|
||||||
, def_param( t_uw, name(end) )
|
, def_param( t_uw, name(end) )
|
||||||
, def_param( t_alias, name(value) )
|
, def_param( t_alias, name(value) )
|
||||||
);
|
));
|
||||||
|
|
||||||
Code body = untyped_str( code(
|
Code body = untyped_str( code(
|
||||||
Header& header = * get_header();
|
Header& header = * get_header();
|
||||||
@ -187,7 +187,7 @@ Code gen__array( StrC type )
|
|||||||
, def_execution( code(
|
, def_execution( code(
|
||||||
Header& header = * get_header();
|
Header& header = * get_header();
|
||||||
|
|
||||||
ZPL_ASSERT( header.Num > 0 );
|
GEN_ASSERT( header.Num > 0 );
|
||||||
header.Num--;
|
header.Num--;
|
||||||
))
|
))
|
||||||
);
|
);
|
||||||
@ -195,7 +195,7 @@ Code gen__array( StrC type )
|
|||||||
CodeFn remove_at = def_function( name(remove_at), def_param( t_uw, name(idx)), t_void
|
CodeFn remove_at = def_function( name(remove_at), def_param( t_uw, name(idx)), t_void
|
||||||
, def_execution( code(
|
, def_execution( code(
|
||||||
Header* header = get_header();
|
Header* header = get_header();
|
||||||
ZPL_ASSERT( idx < header->Num );
|
GEN_ASSERT( idx < header->Num );
|
||||||
|
|
||||||
mem_move( header + idx, header + idx + 1, sizeof( Type ) * ( header->Num - idx - 1 ) );
|
mem_move( header + idx, header + idx + 1, sizeof( Type ) * ( header->Num - idx - 1 ) );
|
||||||
header->Num--;
|
header->Num--;
|
||||||
@ -334,8 +334,8 @@ u32 gen_array_file()
|
|||||||
gen_array_file;
|
gen_array_file;
|
||||||
gen_array_file.open( "array.Upfront.gen.hpp" );
|
gen_array_file.open( "array.Upfront.gen.hpp" );
|
||||||
|
|
||||||
CodeInclude include_zpl = def_include( txt_StrC("Bloat.hpp") );
|
CodeInclude include_gen = def_include( txt_StrC("gen.hpp") );
|
||||||
gen_array_file.print( include_zpl );
|
gen_array_file.print( include_gen );
|
||||||
|
|
||||||
gen_array_file.print( def_using_namespace( name(gen)));
|
gen_array_file.print( def_using_namespace( name(gen)));
|
||||||
|
|
||||||
|
@ -115,7 +115,7 @@ Code gen__buffer( StrC type, sw type_size )
|
|||||||
, def_execution( code(
|
, def_execution( code(
|
||||||
Header& header = get_header();
|
Header& header = get_header();
|
||||||
|
|
||||||
ZPL_ASSERT( header.Num + num <= header.Capacity);
|
GEN_ASSERT( header.Num + num <= header.Capacity);
|
||||||
|
|
||||||
mem_copy( Data + header.Num, values, num * sizeof( Type ) );
|
mem_copy( Data + header.Num, values, num * sizeof( Type ) );
|
||||||
|
|
||||||
@ -141,7 +141,7 @@ Code gen__buffer( StrC type, sw type_size )
|
|||||||
CodeFn free = def_function( name(free), __, t_void
|
CodeFn free = def_function( name(free), __, t_void
|
||||||
, def_execution( code(
|
, def_execution( code(
|
||||||
Header& header = get_header();
|
Header& header = get_header();
|
||||||
zpl::free( header.Backing, & header );
|
gen::free( header.Backing, & header );
|
||||||
))
|
))
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -238,7 +238,7 @@ u32 gen_buffer_file()
|
|||||||
gen_buffer_file;
|
gen_buffer_file;
|
||||||
gen_buffer_file.open( "buffer.Upfront.gen.hpp" );
|
gen_buffer_file.open( "buffer.Upfront.gen.hpp" );
|
||||||
|
|
||||||
gen_buffer_file.print( def_include( txt_StrC("Bloat.hpp")) );
|
gen_buffer_file.print( def_include( txt_StrC("gen.hpp")) );
|
||||||
gen_buffer_file.print( def_using_namespace( name(gen)) );
|
gen_buffer_file.print( def_using_namespace( name(gen)) );
|
||||||
|
|
||||||
gen_buffer_file.print( gen__buffer_base() );
|
gen_buffer_file.print( gen__buffer_base() );
|
||||||
|
@ -151,7 +151,7 @@ Code gen__hashtable( StrC type )
|
|||||||
CodeType t_map_proc = def_type( name(MapProc) );
|
CodeType t_map_proc = def_type( name(MapProc) );
|
||||||
|
|
||||||
Code body = def_execution( code(
|
Code body = def_execution( code(
|
||||||
ZPL_ASSERT_NOT_NULL( map_proc );
|
GEN_ASSERT_NOT_NULL( map_proc );
|
||||||
|
|
||||||
for ( sw idx = 0; idx < Entries.num(); idx++ )
|
for ( sw idx = 0; idx < Entries.num(); idx++ )
|
||||||
{
|
{
|
||||||
@ -177,7 +177,7 @@ Code gen__hashtable( StrC type )
|
|||||||
CodeType t_map_mut_proc = def_type( name(MapMutProc));
|
CodeType t_map_mut_proc = def_type( name(MapMutProc));
|
||||||
|
|
||||||
Code body = def_execution( code(
|
Code body = def_execution( code(
|
||||||
ZPL_ASSERT_NOT_NULL( map_proc );
|
GEN_ASSERT_NOT_NULL( map_proc );
|
||||||
|
|
||||||
for ( sw idx = 0; idx < Entries.num(); idx++ )
|
for ( sw idx = 0; idx < Entries.num(); idx++ )
|
||||||
{
|
{
|
||||||
@ -447,7 +447,7 @@ u32 gen_hashtable_file()
|
|||||||
gen_hashtable_file;
|
gen_hashtable_file;
|
||||||
gen_hashtable_file.open( "hashtable.Upfront.gen.hpp" );
|
gen_hashtable_file.open( "hashtable.Upfront.gen.hpp" );
|
||||||
|
|
||||||
gen_hashtable_file.print( def_include( txt_StrC("Bloat.hpp")) );
|
gen_hashtable_file.print( def_include( txt_StrC("gen.hpp")) );
|
||||||
gen_hashtable_file.print( def_include( txt_StrC("Array.Upfront.hpp")) );
|
gen_hashtable_file.print( def_include( txt_StrC("Array.Upfront.hpp")) );
|
||||||
gen_hashtable_file.print( def_include( txt_StrC("array.Upfront.gen.hpp")) );
|
gen_hashtable_file.print( def_include( txt_StrC("array.Upfront.gen.hpp")) );
|
||||||
|
|
||||||
|
@ -192,7 +192,7 @@ u32 gen_ring_file()
|
|||||||
gen_ring_file;
|
gen_ring_file;
|
||||||
gen_ring_file.open( "ring.Upfront.gen.hpp" );
|
gen_ring_file.open( "ring.Upfront.gen.hpp" );
|
||||||
|
|
||||||
gen_ring_file.print( def_include( txt_StrC("Bloat.hpp")) );
|
gen_ring_file.print( def_include( txt_StrC("gen.hpp")) );
|
||||||
gen_ring_file.print( def_include( txt_StrC("buffer.Upfront.gen.hpp")) );
|
gen_ring_file.print( def_include( txt_StrC("buffer.Upfront.gen.hpp")) );
|
||||||
|
|
||||||
gen_ring_file.print( def_using_namespace( name(gen)));
|
gen_ring_file.print( def_using_namespace( name(gen)));
|
||||||
|
@ -11,7 +11,7 @@ u32 gen_sanity_upfront()
|
|||||||
|
|
||||||
// Comment
|
// Comment
|
||||||
{
|
{
|
||||||
Code comment_test = def_comment( txt_StrC("Sanity check: def_comment test") );
|
CodeComment comment_test = def_comment( txt_StrC("Sanity check: def_comment test") );
|
||||||
|
|
||||||
gen_sanity_file.print(comment_test);
|
gen_sanity_file.print(comment_test);
|
||||||
}
|
}
|
||||||
@ -50,7 +50,7 @@ u32 gen_sanity_upfront()
|
|||||||
|
|
||||||
// Enum
|
// Enum
|
||||||
{
|
{
|
||||||
Code fwd = def_enum( name(ETestEnum), NoCode, t_u8 );
|
CodeEnum fwd = def_enum( name(ETestEnum), NoCode, t_u8 );
|
||||||
CodeEnum def;
|
CodeEnum def;
|
||||||
{
|
{
|
||||||
Code body = untyped_str( code(
|
Code body = untyped_str( code(
|
||||||
@ -62,7 +62,7 @@ u32 gen_sanity_upfront()
|
|||||||
def = def_enum( name(ETestEnum), body, t_u8 );
|
def = def_enum( name(ETestEnum), body, t_u8 );
|
||||||
}
|
}
|
||||||
|
|
||||||
Code fwd_enum_class = def_enum( name(ETestEnumClass), NoCode, t_u8, EnumClass );
|
CodeEnum fwd_enum_class = def_enum( name(ETestEnumClass), NoCode, t_u8, EnumClass );
|
||||||
|
|
||||||
gen_sanity_file.print(fwd);
|
gen_sanity_file.print(fwd);
|
||||||
gen_sanity_file.print(def);
|
gen_sanity_file.print(def);
|
||||||
@ -73,7 +73,7 @@ u32 gen_sanity_upfront()
|
|||||||
|
|
||||||
// External Linkage
|
// External Linkage
|
||||||
{
|
{
|
||||||
Code body = def_extern_link_body( 1
|
CodeBody body = def_extern_link_body( 1
|
||||||
, def_comment( txt_StrC("Empty extern body") )
|
, def_comment( txt_StrC("Empty extern body") )
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -114,7 +114,7 @@ u32 gen_sanity_upfront()
|
|||||||
|
|
||||||
// Include
|
// Include
|
||||||
{
|
{
|
||||||
Code include = def_include( txt_StrC("../DummyInclude.hpp") );
|
CodeInclude include = def_include( txt_StrC("../DummyInclude.hpp") );
|
||||||
|
|
||||||
gen_sanity_file.print(include);
|
gen_sanity_file.print(include);
|
||||||
}
|
}
|
||||||
@ -124,9 +124,9 @@ u32 gen_sanity_upfront()
|
|||||||
// Module
|
// Module
|
||||||
if (0)
|
if (0)
|
||||||
{
|
{
|
||||||
Code module_export = def_module( name(TestModule), ModuleFlag::Export );
|
CodeModule module_export = def_module( name(TestModule), ModuleFlag::Export );
|
||||||
Code module_import = def_module( name(TestModule), ModuleFlag::Import );
|
CodeModule module_import = def_module( name(TestModule), ModuleFlag::Import );
|
||||||
Code module_both = def_module( name(TestModule), ModuleFlag::Export | ModuleFlag::Import );
|
CodeModule module_both = def_module( name(TestModule), ModuleFlag::Export | ModuleFlag::Import );
|
||||||
|
|
||||||
gen_sanity_file.print(module_global_fragment);
|
gen_sanity_file.print(module_global_fragment);
|
||||||
gen_sanity_file.print(module_private_fragment);
|
gen_sanity_file.print(module_private_fragment);
|
||||||
@ -141,7 +141,7 @@ u32 gen_sanity_upfront()
|
|||||||
{
|
{
|
||||||
CodeNamespace namespace_def;
|
CodeNamespace namespace_def;
|
||||||
{
|
{
|
||||||
Code body = def_namespace_body( 1
|
CodeBody body = def_namespace_body( 1
|
||||||
, def_comment( txt_StrC("Empty namespace body") )
|
, def_comment( txt_StrC("Empty namespace body") )
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -157,9 +157,9 @@ u32 gen_sanity_upfront()
|
|||||||
{
|
{
|
||||||
// Going to make a bit flag set of overloads for this.
|
// Going to make a bit flag set of overloads for this.
|
||||||
|
|
||||||
Code bitflagtest;
|
CodeEnum bitflagtest;
|
||||||
{
|
{
|
||||||
Code body = def_enum_body( 1, untyped_str( code(
|
CodeBody body = def_enum_body( 1, untyped_str( code(
|
||||||
A = 1 << 0,
|
A = 1 << 0,
|
||||||
B = 1 << 1,
|
B = 1 << 1,
|
||||||
C = 1 << 2
|
C = 1 << 2
|
||||||
@ -192,9 +192,9 @@ u32 gen_sanity_upfront()
|
|||||||
{
|
{
|
||||||
CodeType t_u8_ptr = def_type( name(u8), __, spec_ptr );
|
CodeType t_u8_ptr = def_type( name(u8), __, spec_ptr );
|
||||||
|
|
||||||
Code op_ptr = def_operator_cast( t_u8_ptr, __ );
|
CodeOpCast op_ptr = def_operator_cast( t_u8_ptr, __ );
|
||||||
|
|
||||||
Code op_class = def_class( name(TestOperatorCast), def_class_body( args( op_ptr) ) );
|
CodeClass op_class = def_class( name(TestOperatorCast), def_class_body( args( op_ptr) ) );
|
||||||
|
|
||||||
gen_sanity_file.print(op_class);
|
gen_sanity_file.print(op_class);
|
||||||
}
|
}
|
||||||
@ -297,8 +297,8 @@ u32 gen_sanity_upfront()
|
|||||||
|
|
||||||
// Variable
|
// Variable
|
||||||
{
|
{
|
||||||
Code bss = def_variable( t_u8, name(test_variable) );
|
CodeVar bss = def_variable( t_u8, name(test_variable) );
|
||||||
Code data = def_variable( t_u8, name(test_variable2), untyped_str( code( 0x12 )) );
|
CodeVar data = def_variable( t_u8, name(test_variable2), untyped_str( code( 0x12 )) );
|
||||||
|
|
||||||
gen_sanity_file.print(bss);
|
gen_sanity_file.print(bss);
|
||||||
gen_sanity_file.print(data);
|
gen_sanity_file.print(data);
|
||||||
@ -310,7 +310,7 @@ u32 gen_sanity_upfront()
|
|||||||
{
|
{
|
||||||
CodeType t_Type = def_type( name(Type) );
|
CodeType t_Type = def_type( name(Type) );
|
||||||
|
|
||||||
Code tmpl = def_template( def_param( t_class, name(Type) )
|
CodeTemplate tmpl = def_template( def_param( t_class, name(Type) )
|
||||||
, def_function( name(test_template), def_param( t_Type, name(a) ), __
|
, def_function( name(test_template), def_param( t_Type, name(a) ), __
|
||||||
, def_function_body(1, def_comment( txt_StrC("Empty template function body")))
|
, def_function_body(1, def_comment( txt_StrC("Empty template function body")))
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user