Upfront constructors work again (test case wise)

Doing parsing set next
This commit is contained in:
Edward R. Gonzalez 2023-07-15 22:27:38 -04:00
parent ade4c3345d
commit 1e79c9190e
12 changed files with 128 additions and 101 deletions

View File

@ -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 )

View File

@ -2826,16 +2826,13 @@ namespace gen
SpecifierT ArrSpecs[AST::ArrSpecs_Cap]; // Specifiers SpecifierT ArrSpecs[AST::ArrSpecs_Cap]; // Specifiers
}; };
union { union {
// Entry Node
struct {
AST* Prev; AST* Prev;
AST* Next;
};
// Body Node
struct {
AST* Front; AST* Front;
AST* Back; AST* Last;
}; };
union {
AST* Next;
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
struct {
AST* Prev; AST* Prev;
AST* Next;
};
// Body Node
struct {
AST* Front; AST* Front;
AST* Back; AST* Last;
}; };
union {
AST* Next;
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 )
{ {

View File

@ -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>

View File

@ -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)));

View File

@ -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() );

View File

@ -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")) );

View File

@ -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() );

View File

@ -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)));

View File

@ -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() );

View File

@ -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")) );

View File

@ -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)));

View File

@ -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")))
) )