WIP, updates to vs solution, got natvis working again. serializations still bugged

This commit is contained in:
Edward R. Gonzalez 2023-07-15 20:56:27 -04:00
parent 947b4e3615
commit 0241979085
8 changed files with 293 additions and 466 deletions

View File

@ -108,31 +108,37 @@
<None Include="test\Readme.md" /> <None Include="test\Readme.md" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="project\Banned.define.hpp" />
<ClInclude Include="project\Banned.undef.hpp" />
<ClInclude Include="project\Bloat.hpp" />
<ClInclude Include="project\gen.hpp" /> <ClInclude Include="project\gen.hpp" />
<ClInclude Include="project\gen.undef.macros.hpp" />
<ClInclude Include="test\DummyInclude.hpp" /> <ClInclude Include="test\DummyInclude.hpp" />
<ClInclude Include="test\gen\array.Upfront.gen.hpp" />
<ClInclude Include="test\gen\buffer.Upfront.gen.hpp" />
<ClInclude Include="test\gen\hashtable.Upfront.gen.hpp" />
<ClInclude Include="test\gen\ring.Upfront.gen.hpp" />
<ClInclude Include="test\gen\sanity.Upfront.gen.hpp" />
<ClInclude Include="test\Parsed\Buffer.Parsed.hpp" />
<ClInclude Include="test\Parsed\HashTable.Parsed.hpp" />
<ClInclude Include="test\Parsed\Ring.Parsed.hpp" />
<ClInclude Include="test\SOA.hpp" />
<ClInclude Include="test\Upfront\Array.Upfront.hpp" /> <ClInclude Include="test\Upfront\Array.Upfront.hpp" />
<ClInclude Include="test\Upfront\Buffer.Upfront.hpp" /> <ClInclude Include="test\Upfront\Buffer.Upfront.hpp" />
<ClInclude Include="test\Upfront\HashTable.Upfront.hpp" /> <ClInclude Include="test\Upfront\HashTable.Upfront.hpp" />
<ClInclude Include="test\Upfront\Memory.Upfront.hpp" />
<ClInclude Include="test\Upfront\Ring.Upfront.hpp" /> <ClInclude Include="test\Upfront\Ring.Upfront.hpp" />
<ClInclude Include="test\Upfront\Sanity.Upfront.hpp" /> <ClInclude Include="test\Upfront\Sanity.Upfront.hpp" />
<ClInclude Include="test\Parsed\Array.Parsed.hpp" /> <ClInclude Include="test\Parsed\Array.Parsed.hpp" />
<ClInclude Include="test\Parsed\Sanity.Parsed.hpp" /> <ClInclude Include="test\Parsed\Sanity.Parsed.hpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="project\Bloat.cpp" />
<ClCompile Include="project\gen.cpp" /> <ClCompile Include="project\gen.cpp" />
<ClCompile Include="singleheader\gen\gen.singleheader.cpp" /> <ClCompile Include="singleheader\gen\gen.singleheader.cpp" />
<ClCompile Include="test\gen\build\meson-private\sanitycheckc.c" /> <ClCompile Include="test\gen\build\meson-private\sanitycheckc.c" />
<ClCompile Include="test\gen\build\meson-private\sanitycheckcpp.cc" /> <ClCompile Include="test\gen\build\meson-private\sanitycheckcpp.cc" />
<ClCompile Include="test\test.cpp" />
<ClCompile Include="test\test.Upfront.cpp" /> <ClCompile Include="test\test.Upfront.cpp" />
<ClCompile Include="test\test.Parsed.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include=".vscode\gencpp.natvis" /> <Natvis Include=".vscode\gencpp.natvis" />
<Natvis Include="scripts\gencpp.natvis" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">

View File

@ -15,15 +15,9 @@
</Filter> </Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="project\Bloat.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="project\gen.cpp"> <ClCompile Include="project\gen.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="project\gen.singleheader.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="test\gen\build\meson-private\sanitycheckc.c"> <ClCompile Include="test\gen\build\meson-private\sanitycheckc.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
@ -33,24 +27,69 @@
<ClCompile Include="test\test.cpp"> <ClCompile Include="test\test.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="singleheader\gen\gen.singleheader.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="test\test.Upfront.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="project\Bloat.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="project\Bloat.redef.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="project\Bloat.undef.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="project\gen.hpp"> <ClInclude Include="project\gen.hpp">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="thirdparty\zpl.h"> <ClInclude Include="project\gen.undef.macros.hpp">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="test\Upfront\Sanity.hpp"> <ClInclude Include="test\DummyInclude.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="test\gen\array.Upfront.gen.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="test\gen\buffer.Upfront.gen.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="test\gen\hashtable.Upfront.gen.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="test\gen\ring.Upfront.gen.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="test\gen\sanity.Upfront.gen.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="test\Parsed\Buffer.Parsed.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="test\Parsed\HashTable.Parsed.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="test\Parsed\Ring.Parsed.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="test\SOA.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="test\Upfront\Array.Upfront.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="test\Upfront\Buffer.Upfront.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="test\Upfront\HashTable.Upfront.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="test\Upfront\Ring.Upfront.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="test\Upfront\Sanity.Upfront.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="test\Parsed\Array.Parsed.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="test\Parsed\Sanity.Parsed.hpp">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
</ItemGroup> </ItemGroup>
@ -61,13 +100,12 @@
<None Include="scripts\build.ps1" /> <None Include="scripts\build.ps1" />
<None Include="scripts\clean.ps1" /> <None Include="scripts\clean.ps1" />
<None Include="scripts\get_sources.ps1" /> <None Include="scripts\get_sources.ps1" />
<None Include="scripts\meson.build" />
<None Include="singleheader\genc.refactor" />
<None Include="test\gen\meson.build" /> <None Include="test\gen\meson.build" />
<None Include="test\meson.build" /> <None Include="test\meson.build" />
<None Include="test\Readme.md" /> <None Include="test\Readme.md" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include=".vscode\gencpp.natvis" /> <Natvis Include=".vscode\gencpp.natvis" />
<Natvis Include="scripts\gencpp.natvis" />
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -1854,6 +1854,7 @@ namespace gen
Code result = make_code(); Code result = make_code();
// TODO : Bring back some of the old way, we need to recursively duplicate the children.
mem_copy( result.ast, this, sizeof( AST ) ); mem_copy( result.ast, this, sizeof( AST ) );
return result.ast; return result.ast;
@ -2219,10 +2220,12 @@ namespace gen
else else
result.append_fmt( "%s", ValueType->to_string() ); result.append_fmt( "%s", ValueType->to_string() );
if ( NumEntries ) if ( NumEntries - 1)
for ( CodeParam param : cast<CodeParam>() )
{ {
result.append( param.to_string() ); for ( CodeParam param : Next->cast<CodeParam>() )
{
result.append_fmt( ", %s", param.to_string() );
}
} }
} }
break; break;
@ -3732,6 +3735,8 @@ namespace gen
if ( value ) if ( value )
result->Value = value; result->Value = value;
result->NumEntries++;
return (CodeParam) result; return (CodeParam) result;
} }
@ -7839,3 +7844,4 @@ namespace gen
} }
// End: gen_time // End: gen_time
#endif #endif

View File

@ -2760,7 +2760,8 @@ namespace gen
template< class Type > template< class Type >
Type cast() Type cast()
{ {
return (Type)(Code){ this }; AST* ast = this;
return * rcast( Type*, & ast );
} }
operator Code(); operator Code();
@ -3003,7 +3004,7 @@ namespace gen
Define_CodeType( Struct ); Define_CodeType( Struct );
Define_CodeType( Template ); Define_CodeType( Template );
Define_CodeType( Type ); Define_CodeType( Type );
Define_CodeType( Typedef ); Define_CodeType(Typedef);
Define_CodeType( Union ); Define_CodeType( Union );
Define_CodeType( Using ); Define_CodeType( Using );
Define_CodeType( UsingNamespace ); Define_CodeType( UsingNamespace );
@ -3053,22 +3054,24 @@ namespace gen
return { (AST*)ast }; return { (AST*)ast };
} }
#pragma region Iterator #pragma region Iterator
CodeParam* begin() CodeParam begin()
{ {
if ( ast ) if ( ast )
return rcast( CodeParam*, ast ); return { ast };
return nullptr; return { nullptr };
} }
CodeParam* end() CodeParam end()
{ {
return nullptr; return { (AST_Param*) rcast( AST*, ast)->Next };
} }
CodeParam& operator++() CodeParam& operator++()
{ {
if ( ast && raw()->Next ) ast = (AST_Param*) rcast( AST*, ast )->Next;
ast = (AST_Param*) raw()->Next; return * this;
}
CodeParam operator*()
{
return * this; return * this;
} }
#pragma endregion Iterator #pragma endregion Iterator
@ -3212,25 +3215,6 @@ namespace gen
}; };
static_assert( sizeof(AST_Class) == sizeof(AST), "ERROR: AST_Class is not the same size as AST"); static_assert( sizeof(AST_Class) == sizeof(AST), "ERROR: AST_Class is not the same size as AST");
struct AST_Exec
{
union {
char _PAD_[ sizeof(SpecifierT) * AST::ArrSpecs_Cap ];
struct
{
char _PAD_PROPERTIES_[ sizeof(AST*) * 4 ];
CodeBody Body;
};
};
Code Prev;
Code Next;
Code Parent;
StringCached Name;
CodeT Type;
char _PAD_UNUSED_[ sizeof(ModuleFlag) + sizeof(u32) ];
};
static_assert( sizeof(AST_Exec) == sizeof(AST), "ERROR: AST_Exec is not the same size as AST");
struct AST_Enum struct AST_Enum
{ {
union { union {
@ -3254,6 +3238,25 @@ namespace gen
}; };
static_assert( sizeof(AST_Enum) == sizeof(AST), "ERROR: AST_Enum is not the same size as AST"); static_assert( sizeof(AST_Enum) == sizeof(AST), "ERROR: AST_Enum is not the same size as AST");
struct AST_Exec
{
union {
char _PAD_[ sizeof(SpecifierT) * AST::ArrSpecs_Cap ];
struct
{
char _PAD_PROPERTIES_[ sizeof(AST*) * 4 ];
Code Body;
};
};
Code Prev;
Code Next;
Code Parent;
StringCached Name;
CodeT Type;
char _PAD_UNUSED_[ sizeof(ModuleFlag) + sizeof(u32) ];
};
static_assert( sizeof(AST_Exec) == sizeof(AST), "ERROR: AST_Exec is not the same size as AST");
struct AST_Extern struct AST_Extern
{ {
union { union {
@ -3261,7 +3264,7 @@ namespace gen
struct struct
{ {
char _PAD_PROPERTIES_[ sizeof(AST*) * 4 ]; char _PAD_PROPERTIES_[ sizeof(AST*) * 4 ];
CodeBody Body; Code Body;
}; };
}; };
Code Prev; Code Prev;
@ -3347,8 +3350,11 @@ namespace gen
{ {
union { union {
char _PAD_[ sizeof(SpecifierT) * AST::ArrSpecs_Cap ]; char _PAD_[ sizeof(SpecifierT) * AST::ArrSpecs_Cap ];
struct {
char _PAD_PROPERTIES_[ sizeof(AST*) * 4 ];
CodeBody Body; CodeBody Body;
}; };
};
Code Prev; Code Prev;
Code Next; Code Next;
Code Parent; Code Parent;
@ -3388,8 +3394,9 @@ namespace gen
char _PAD_[ sizeof(SpecifierT) * AST::ArrSpecs_Cap ]; char _PAD_[ sizeof(SpecifierT) * AST::ArrSpecs_Cap ];
struct struct
{ {
char _PAD_PROPERTIES_[ sizeof(AST*) * 3 ]; char _PAD_PROPERTIES_[ sizeof(AST*) * 2 ];
CodeType ValueType; CodeType ValueType;
char _PAD_PROPERTIES_2_[ sizeof(AST*) ];
CodeBody Body; CodeBody Body;
}; };
}; };
@ -3398,8 +3405,7 @@ namespace gen
Code Parent; Code Parent;
StringCached Name; StringCached Name;
CodeT Type; CodeT Type;
ModuleFlag ModuleFlags; char _PAD_UNUSED_[ sizeof(ModuleFlag) + sizeof(u32) ];
char _PAD_UNUSED_[ sizeof(u32) ];
}; };
static_assert( sizeof(AST_OpCast) == sizeof(AST), "ERROR: AST_OpCast is not the same size as AST"); static_assert( sizeof(AST_OpCast) == sizeof(AST), "ERROR: AST_OpCast is not the same size as AST");
@ -3409,8 +3415,9 @@ namespace gen
char _PAD_[ sizeof(SpecifierT) * AST::ArrSpecs_Cap ]; char _PAD_[ sizeof(SpecifierT) * AST::ArrSpecs_Cap ];
struct struct
{ {
char _PAD_PROPERTIES_[ sizeof(AST*) * 3 ]; char _PAD_PROPERTIES_2_[ sizeof(AST*) * 2 ];
CodeType ValueType; CodeType ValueType;
char _PAD_PROPERTIES_[ sizeof(AST*) ];
Code Value; Code Value;
}; };
}; };
@ -3419,7 +3426,7 @@ namespace gen
Code Parent; Code Parent;
StringCached Name; StringCached Name;
CodeT Type; CodeT Type;
ModuleFlag ModuleFlags; char _PAD_UNUSED_[ sizeof(ModuleFlag) ];
u32 NumEntries; u32 NumEntries;
}; };
static_assert( sizeof(AST_Param) == sizeof(AST), "ERROR: AST_Param is not the same size as AST"); static_assert( sizeof(AST_Param) == sizeof(AST), "ERROR: AST_Param is not the same size as AST");
@ -3432,7 +3439,7 @@ namespace gen
Code Parent; Code Parent;
StringCached Name; StringCached Name;
CodeT Type; CodeT Type;
ModuleFlag ModuleFlags; char _PAD_UNUSED_[ sizeof(ModuleFlag) ];
u32 NumEntries; u32 NumEntries;
}; };
static_assert( sizeof(AST_Specifier) == sizeof(AST), "ERROR: AST_Specifier is not the same size as AST"); static_assert( sizeof(AST_Specifier) == sizeof(AST), "ERROR: AST_Specifier is not the same size as AST");
@ -3466,9 +3473,7 @@ namespace gen
char _PAD_[ sizeof(SpecifierT) * AST::ArrSpecs_Cap ]; char _PAD_[ sizeof(SpecifierT) * AST::ArrSpecs_Cap ];
struct struct
{ {
CodeAttributes Attributes; char _PAD_PROPERTIES_[ sizeof(AST*) * 2 ];
CodeType ReturnType;
CodeSpecifier Specs;
CodeParam Params; CodeParam Params;
Code Declaration; Code Declaration;
}; };
@ -4137,7 +4142,7 @@ namespace gen
} }
Define_CodeImpl( Code ); Define_CodeImpl( Code );
Define_CodeImpl( CodeBody); Define_CodeImpl( CodeBody );
Define_CodeImpl( CodeAttributes ); Define_CodeImpl( CodeAttributes );
Define_CodeImpl( CodeComment ); Define_CodeImpl( CodeComment );
Define_CodeImpl( CodeClass ); Define_CodeImpl( CodeClass );
@ -4195,12 +4200,12 @@ namespace gen
Define_AST_Cast( Var ); Define_AST_Cast( Var );
#undef Define_AST_Cast #undef Define_AST_Cast
#pragma region Code Operator Cast Impl #pragma region Code Operator Cast Impj
#define Define_CodeCast( type ) \ #define Define_CodeCast( type ) \
Code::operator Code ## type() const \ Code::operator Code ## type() const \
{ \ { \
return * rcast( Code ## type*, ast ); \ return { (AST_ ## type*) ast }; \
} }
Define_CodeCast( Attributes ); Define_CodeCast( Attributes );
@ -4277,3 +4282,4 @@ namespace gen
// end: gen_time // end: gen_time
#endif #endif

View File

@ -53,309 +53,146 @@
</Type> </Type>
<Type Name="gen::AST"> <Type Name="gen::AST">
<DisplayString>AST: {Name}</DisplayString> <DisplayString Condition="this != nullptr">{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Parent">Parent</Item>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item>
<Item Name="ModuleFlags">ModuleFlags</Item>
<Expand HideRawView="true">
<Switch>
<Case Condition="Content != nullptr">
<Item Name="Content">Content</Item> <Item Name="Content">Content</Item>
</Case> <Item Name="Parent">Parent</Item>
<Case Condition="ArrSpecs != nullptr">
<ArrayItems Name="Specifiers" Condition="ArrSpecs != nullptr"
Size="{ArrSpecs_Cap}">
<ValuePointer>ArrSpecs</ValuePointer>
</ArrayItems>
</Case>
</Switch>
</Expand>
<Expand HideRawView="true">
<Switch>
<Case Condition="Prev != nullptr">
<Item Name="Prev">Prev</Item> <Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item> <Item Name="Next">Next</Item>
</Case>
<Case Condition="Front != nullptr">
<Item Name="Front">Front</Item>
<Item Name="Back">Back</Item>
</Case>
</Switch>
</Expand>
<Expand>
<Item Name="Attributes">Attributes</Item>
<Item Name="Specs">Specs</Item>
<Expand HideRawView="true">
<Switch>
<Case Condition="ParentType != nullptr">
<Item Name="ParentType">ParentType</Item>
</Case>
<Case Condition="ReturnType != nullptr">
<Item Name="ReturnType">ReturnType</Item>
</Case>
<Case Condition="UnderlyingType != nullptr">
<Item Name="UnderlyingType">UnderlyingType</Item>
</Case>
<Case Condition="ValueType != nullptr">
<Item Name="ValueType">ValueType</Item>
</Case>
</Switch>
</Expand>
<Item Name="Params">Params</Item>
<Expand HideRawView="true">
<Switch>
<Case Condition="ArrExpr != nullptr">
<Item Name="ArrExpr">ArrExpr</Item>
</Case>
<Case Condition="Body != nullptr">
<Item Name="Body">Body</Item>
</Case>
<Case Condition="Declaration != nullptr">
<Item Name="Declaration">Declaration</Item>
</Case>
<Case Condition="Value != nullptr">
<Item Name="Value">Value</Item>
</Case>
</Switch>
</Expand>
</Expand>
<Expand HideRawView="true">
<Switch>
<Case Condition="Op != nullptr">
<Item Name="Operator">Op</Item>
</Case>
<Case Condition="ParentAccess != nullptr">
<Item Name="ParentAccess">ParentAccess</Item>
</Case>
<Case Condition="NumEntries != nullptr">
<Item Name="NumEntries">NumEntries</Item> <Item Name="NumEntries">NumEntries</Item>
</Case>
</Switch>
</Expand>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::Code"> <Type Name="gen::Code">
<DisplayString Condition="ast != nullptr">AST: {ast->Name} Type: {ast->Type}</DisplayString> <DisplayString Condition="ast == nullptr">Null</DisplayString>
<Expand> <DisplayString Condition="ast != nullptr">{ast->Name} Type: {ast->Type}</DisplayString>
<Item Name="Parent">ast->Parent</Item> <Expand HideRawView="false">
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
<Expand HideRawView="true">
<Switch>
<Case Condition="Content != nullptr">
<Item Name="Content">ast->Content</Item> <Item Name="Content">ast->Content</Item>
</Case> <Item Name="Body">ast->Body</Item>
<Case Condition="ArrSpecs != nullptr"> <Item Name="Parent">ast->Parent</Item>
<ArrayItems Name="Specifiers" Condition="ArrSpecs != nullptr" <Item Name="ModuleFlags" Condition="ast->ModuleFlags != ModuleFlag::Invalid">ast->ModuleFlags</Item>
Size="{ArrSpecs_Cap}"> <Item Name="ArrSpecs" Condition="ast->ArrSpecs[0] &lt; 18">ast->ArrSpecs</Item>
<ValuePointer>ast->ArrSpecs</ValuePointer>
</ArrayItems>
</Case>
</Switch>
</Expand>
<Expand HideRawView="true">
<Switch>
<Case Condition="Prev != nullptr">
<Item Name="Prev">ast->Prev</Item> <Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item> <Item Name="Next">ast->Next</Item>
</Case>
<Case Condition="Front != nullptr">
<Item Name="Front">ast->Front</Item>
<Item Name="Back">ast->Back</Item>
</Case>
</Switch>
</Expand>
<Expand>
<Item Name="Attributes">ast->Attributes</Item>
<Item Name="Specs">ast->Specs</Item>
<Expand HideRawView="true">
<Switch>
<Case Condition="ParentType != nullptr">
<Item Name="ParentType">ast->ParentType</Item>
</Case>
<Case Condition="ReturnType != nullptr">
<Item Name="ReturnType">ast->ReturnType</Item>
</Case>
<Case Condition="UnderlyingType != nullptr">
<Item Name="UnderlyingType">ast->UnderlyingType</Item>
</Case>
<Case Condition="ValueType != nullptr">
<Item Name="ValueType">ast->ValueType</Item>
</Case>
</Switch>
</Expand>
<Item Name="Params">ast->Params</Item>
<Expand HideRawView="true">
<Switch>
<Case Condition="ArrExpr != nullptr">
<Item Name="ArrExpr">ast->ArrExpr</Item>
</Case>
<Case Condition="Body != nullptr">
<Item Name="Body">ast->Body</Item>
</Case>
<Case Condition="Declaration != nullptr">
<Item Name="Declaration">ast->Declaration</Item>
</Case>
<Case Condition="Value != nullptr">
<Item Name="Value">ast->Value</Item>
</Case>
</Switch>
</Expand>
</Expand>
<Expand HideRawView="true">
<Switch>
<Case Condition="Op != nullptr">
<Item Name="Operator">ast->Op</Item>
</Case>
<Case Condition="ParentAccess != nullptr">
<Item Name="ParentAccess">ast->ParentAccess</Item>
</Case>
<Case Condition="NumEntries != nullptr">
<Item Name="NumEntries">ast->NumEntries</Item> <Item Name="NumEntries">ast->NumEntries</Item>
</Case>
</Switch>
</Expand>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::AST_Body"> <Type Name="gen::AST_Body">
<DisplayString>{Name} {Type}</DisplayString> <DisplayString>{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item>
<Item Name="Parent">Parent</Item> <Item Name="Parent">Parent</Item>
<Item Name="Front">Front</Item> <Item Name="Front">Front</Item>
<Item Name="Back">Back</Item> <Item Name="Back">Back</Item>
<Item Name="NumEntries">NumEntries</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::AST_Attributes"> <Type Name="gen::AST_Attributes">
<DisplayString>{Name} {Type}</DisplayString> <DisplayString>{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item> <Item Name="Content">Content</Item>
<Item Name="Type">Type</Item>
<Item Name="Parent">Parent</Item> <Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item> <Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item> <Item Name="Next">Next</Item>
<Item Name="Content">Content</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::AST_Comment"> <Type Name="gen::AST_Comment">
<DisplayString>{Name} {Type}</DisplayString> <DisplayString>{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item> <Item Name="Content">Content</Item>
<Item Name="Type">Type</Item>
<Item Name="Parent">Parent</Item> <Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item> <Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item> <Item Name="Next">Next</Item>
<Item Name="Content">Content</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::AST_Class"> <Type Name="gen::AST_Class">
<DisplayString Condition="Parent != nullptr">{Name} {Type}</DisplayString> <DisplayString>{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item>
<Item Name="ModuleFlags">ModuleFlags</Item> <Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Attributes">Attributes</Item> <Item Name="Attributes">Attributes</Item>
<Item Name="ParentType">ParentType</Item> <Item Name="ParentType">ParentType</Item>
<Item Name="Body">Body</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<Item Name="ParentAccess">ParentAccess</Item> <Item Name="ParentAccess">ParentAccess</Item>
</Expand>
</Type>
<Type Name="gen::AST_Exec">
<DisplayString Condition="Parent != nullptr">{Name} {Type}</DisplayString>
<Expand>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Body">Body</Item> <Item Name="Body">Body</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item> <Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item> <Item Name="Next">Next</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::AST_Enum"> <Type Name="gen::AST_Enum">
<DisplayString Condition="Parent != nullptr">{Name} {Type}</DisplayString> <DisplayString>{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item>
<Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Attributes">Attributes</Item> <Item Name="Attributes">Attributes</Item>
<Item Name="UnderlyingType">UnderlyingType</Item> <Item Name="UnderlyingType">UnderlyingType</Item>
<Item Name="Body">Body</Item> <Item Name="Body">Body</Item>
<Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
</Expand>
</Type>
<Type Name="gen::AST_Exec">
<DisplayString>{Name} Type: {Type}</DisplayString>
<Expand>
<Item Name="Body">Body</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item> <Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item> <Item Name="Next">Next</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::AST_Extern"> <Type Name="gen::AST_Extern">
<DisplayString>{Name} {Type}</DisplayString> <DisplayString>{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item> <Item Name="Body">Body</Item>
<Item Name="Type">Type</Item>
<Item Name="Parent">Parent</Item> <Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item> <Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item> <Item Name="Next">Next</Item>
<Item Name="Body">Body</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::AST_Include"> <Type Name="gen::AST_Include">
<DisplayString>{Name} {Type}</DisplayString> <DisplayString>{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item> <Item Name="Content">Content</Item>
<Item Name="Type">Type</Item>
<Item Name="Parent">Parent</Item> <Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item> <Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item> <Item Name="Next">Next</Item>
<Item Name="Content">Content</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::AST_Friend"> <Type Name="gen::AST_Friend">
<DisplayString>{Name} {Type}</DisplayString> <DisplayString>{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item> <Item Name="Declaration">Declaration</Item>
<Item Name="Type">Type</Item>
<Item Name="Parent">Parent</Item> <Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item> <Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item> <Item Name="Next">Next</Item>
<Item Name="Declaration">Declaration</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::AST_Fn"> <Type Name="gen::AST_Fn">
<DisplayString>{Name} {Type}</DisplayString> <DisplayString>{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item>
<Item Name="ModuleFlags">ModuleFlags</Item> <Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<Item Name="Attributes">Attributes</Item> <Item Name="Attributes">Attributes</Item>
<Item Name="Specs">Specs</Item> <Item Name="Specs">Specs</Item>
<Item Name="ReturnType">ReturnType</Item> <Item Name="ReturnType">ReturnType</Item>
<Item Name="Params">Params</Item> <Item Name="Params">Params</Item>
<Item Name="Body">Body</Item> <Item Name="Body">Body</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::AST_Module"> <Type Name="gen::AST_Module">
<DisplayString>{Name} {Type}</DisplayString> <DisplayString>{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item>
<Item Name="ModuleFlags">ModuleFlags</Item> <Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item> <Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item> <Item Name="Prev">Prev</Item>
@ -364,10 +201,8 @@
</Type> </Type>
<Type Name="gen::AST_Namespace"> <Type Name="gen::AST_Namespace">
<DisplayString>{Name} {Type}</DisplayString> <DisplayString>{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item>
<Item Name="ModuleFlags">ModuleFlags</Item> <Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item> <Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item> <Item Name="Prev">Prev</Item>
@ -377,154 +212,131 @@
</Type> </Type>
<Type Name="gen::AST_Operator"> <Type Name="gen::AST_Operator">
<DisplayString>{Name} {Type}</DisplayString> <DisplayString>{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item>
<Item Name="Type">Type</Item>
<Item Name="ModuleFlags">ModuleFlags</Item> <Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<Item Name="Attributes">Attributes</Item> <Item Name="Attributes">Attributes</Item>
<Item Name="Specs">Specs</Item> <Item Name="Specs">Specs</Item>
<Item Name="ReturnType">ReturnType</Item> <Item Name="ReturnType">ReturnType</Item>
<Item Name="Op">Op</Item>
<Item Name="Params">Params</Item> <Item Name="Params">Params</Item>
<Item Name="Body">Body</Item> <Item Name="Body">Body</Item>
<Item Name="Op">Op</Item> <Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::AST_OpCast"> <Type Name="gen::AST_OpCast">
<DisplayString>{Name} {Type}</DisplayString> <DisplayString>{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item> <Item Name="ValueType">ValueType</Item>
<Item Name="Type">Type</Item> <Item Name="Body">Body</Item>
<Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item> <Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item> <Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item> <Item Name="Next">Next</Item>
<Item Name="ValueType">ValueType</Item>
<Item Name="Body">Body</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::AST_Param"> <Type Name="gen::AST_Param">
<DisplayString>{Name} {Type}</DisplayString> <DisplayString>{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item> <Item Name="ValueType">ValueType</Item>
<Item Name="ModuleFlags">ModuleFlags</Item> <Item Name="Value">Value</Item>
<Item Name="Parent">Parent</Item> <Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item> <Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item> <Item Name="Next">Next</Item>
<Item Name="ValueType">ValueType</Item>
<Item Name="Value">Value</Item>
<Item Name="NumEntries">NumEntries</Item> <Item Name="NumEntries">NumEntries</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::AST_Specifiers"> <Type Name="gen::AST_Specifiers">
<DisplayString>{Name} {Type}</DisplayString> <DisplayString>{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item> <Item Name="NumEntries">NumEntries</Item>
<Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item> <Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item> <Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item> <Item Name="Next">Next</Item>
<ArrayItems Name="ArrSpecs" Count="AST::ArrSpecs_Cap">
<ValuePointer>ArrSpecs</ValuePointer>
</ArrayItems>
<Item Name="NumEntries">NumEntries</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::AST_Struct"> <Type Name="gen::AST_Struct">
<DisplayString>{Name} {Type}</DisplayString> <DisplayString>{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item>
<Item Name="ModuleFlags">ModuleFlags</Item> <Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Attributes">Attributes</Item>
<Item Name="ParentType">ParentType</Item>
<Item Name="ParentAccess">ParentAccess</Item>
<Item Name="Body">Body</Item>
<Item Name="Parent">Parent</Item> <Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item> <Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item> <Item Name="Next">Next</Item>
<Item Name="Attributes">Attributes</Item>
<Item Name="ParentType">ParentType</Item>
<Item Name="Body">Body</Item>
<Item Name="ParentAccess">ParentAccess</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::AST_Template"> <Type Name="gen::AST_Template">
<DisplayString>{Name} {Type}</DisplayString> <DisplayString>{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item>
<Item Name="ModuleFlags">ModuleFlags</Item> <Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Declaration">Declaration</Item>
<Item Name="Params">Params</Item>
<Item Name="Parent">Parent</Item> <Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item> <Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item> <Item Name="Next">Next</Item>
<Item Name="Attributes">Attributes</Item>
<Item Name="ReturnType">ReturnType</Item>
<Item Name="Specs">Specs</Item>
<Item Name="Params">Params</Item>
<Item Name="Declaration">Declaration</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::AST_Type"> <Type Name="gen::AST_Type">
<DisplayString>{Name} {Type}</DisplayString> <DisplayString>{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<Item Name="Attributes">Attributes</Item> <Item Name="Attributes">Attributes</Item>
<Item Name="Specs">Specs</Item> <Item Name="Specs">Specs</Item>
<Item Name="ArrExpr">ArrExpr</Item> <Item Name="ArrExpr">ArrExpr</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::AST_Typedef"> <Type Name="gen::AST_Typedef">
<DisplayString>{Name} {Type}</DisplayString> <DisplayString>{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item>
<Item Name="ModuleFlags">ModuleFlags</Item> <Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Attributes">Attributes</Item>
<Item Name="UnderlyingType">UnderlyingType</Item>
<Item Name="Parent">Parent</Item> <Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item> <Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item> <Item Name="Next">Next</Item>
<Item Name="Attributes">Attributes</Item>
<Item Name="UnderlyingType">UnderlyingType</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::AST_Union"> <Type Name="gen::AST_Union">
<DisplayString>{Name} {Type}</DisplayString> <DisplayString>{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item>
<Item Name="ModuleFlags">ModuleFlags</Item> <Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Attributes">Attributes</Item>
<Item Name="Body">Body</Item>
<Item Name="Parent">Parent</Item> <Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item> <Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item> <Item Name="Next">Next</Item>
<Item Name="Attributes">Attributes</Item>
<Item Name="Body">Body</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::AST_Using"> <Type Name="gen::AST_Using">
<DisplayString>{Name} {Type}</DisplayString> <DisplayString>{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item>
<Item Name="ModuleFlags">ModuleFlags</Item> <Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<Item Name="Attributes">Attributes</Item> <Item Name="Attributes">Attributes</Item>
<Item Name="UnderlyingType">UnderlyingType</Item> <Item Name="UnderlyingType">UnderlyingType</Item>
<Item Name="Op">Op</Item> <Item Name="Parent">Parent</Item>
<Item Name="ParentAccess">ParentAccess</Item> <Item Name="ParentAccess">ParentAccess</Item>
<Item Name="NumEntries">NumEntries</Item> <Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::AST_UsingNamespace"> <Type Name="gen::AST_UsingNamespace">
<DisplayString>{Name} {Type}</DisplayString> <DisplayString>{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item> <Item Name="Name">Name</Item>
<Item Name="Parent">Parent</Item> <Item Name="Parent">Parent</Item>
@ -534,76 +346,69 @@
</Type> </Type>
<Type Name="gen::AST_Var"> <Type Name="gen::AST_Var">
<DisplayString>{Name} {Type}</DisplayString> <DisplayString>{Name} Type: {Type}</DisplayString>
<Expand> <Expand>
<Item Name="Name">Name</Item>
<Item Name="ModuleFlags">ModuleFlags</Item> <Item Name="ModuleFlags">ModuleFlags</Item>
<Item Name="Parent">Parent</Item>
<Item Name="Prev">Prev</Item>
<Item Name="Next">Next</Item>
<Item Name="Attributes">Attributes</Item> <Item Name="Attributes">Attributes</Item>
<Item Name="Specs">Specs</Item> <Item Name="Specs">Specs</Item>
<Item Name="ValueType">ValueType</Item> <Item Name="ValueType">ValueType</Item>
<Item Name="Value">Value</Item> <Item Name="Value">Value</Item>
<Item Name="Op">Op</Item> <Item Name="Parent">Parent</Item>
<Item Name="ParentAccess">ParentAccess</Item> <Item Name="Prev">Prev</Item>
<Item Name="NumEntries">NumEntries</Item> <Item Name="Next">Next</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="CodeBody"> <Type Name="gen::CodeBody">
<DisplayString Condition="ast == nullptr">Null</DisplayString>
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString> <DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand> <Expand>
<Item Name="Attributes">ast->Attributes</Item> <Item Name="Parent">ast->Parent</Item>
<Item Name="Specs">ast->Specs</Item> <Item Name="Prev">ast->Front</Item>
<Item Name="Front">ast->Front</Item> <Item Name="Next">ast->Back</Item>
<Item Name="Back">ast->Back</Item> <Item Name="NumEntries">ast->NumEntries</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="CodeAttributes"> <Type Name="gen::CodeAttributes">
<DisplayString Condition="ast == nullptr">Null</DisplayString>
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString> <DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand> <Expand>
<Item Name="Attributes">ast->Attributes</Item> <Item Name="Content">ast->Content</Item>
<Item Name="Specs">ast->Specs</Item> <Item Name="Parent">ast->Parent</Item>
<Item Name="Prev">ast->Prev</Item> <Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item> <Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::CodeComment"> <Type Name="gen::CodeComment">
<DisplayString Condition="ast == nullptr">Null</DisplayString>
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString> <DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand> <Expand>
<Item Name="Content">ast->Content</Item> <Item Name="Content">ast->Content</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Prev">ast->Prev</Item> <Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item> <Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::CodeClass"> <Type Name="gen::CodeClass">
<DisplayString Condition="ast == nullptr">Null</DisplayString>
<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="Attributes">ast->Attributes</Item> <Item Name="Attributes">ast->Attributes</Item>
<Item Name="ParentType">ast->ParentType</Item> <Item Name="ParentType">ast->ParentType</Item>
<Item Name="ParentAccess">ast->ParentAccess</Item>
<Item Name="Body">ast->Body</Item> <Item Name="Body">ast->Body</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Prev">ast->Prev</Item> <Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item> <Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
<Item Name="ParentAccess">ast->ParentAccess</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::CodeExec"> <Type Name="gen::CodeExec">
<DisplayString Condition="ast == nullptr">Null</DisplayString>
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString> <DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand> <Expand>
<Item Name="Body">ast->Body</Item> <Item Name="Body">ast->Body</Item>
@ -616,258 +421,214 @@
</Type> </Type>
<Type Name="gen::CodeEnum"> <Type Name="gen::CodeEnum">
<DisplayString Condition="ast == nullptr">Null</DisplayString>
<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="Attributes">ast->Attributes</Item> <Item Name="Attributes">ast->Attributes</Item>
<Item Name="UnderlyingType">ast->UnderlyingType</Item> <Item Name="UnderlyingType">ast->UnderlyingType</Item>
<Item Name="Body">ast->Body</Item> <Item Name="Body">ast->Body</Item>
<Item Name="Prev">ast->Prev</Item> <Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item> <Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item> <Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::CodeInclude"> <Type Name="gen::CodeInclude">
<DisplayString Condition="ast == nullptr">Null</DisplayString>
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString> <DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand> <Expand>
<Item Name="Content">ast->Content</Item> <Item Name="Content">ast->Content</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Prev">ast->Prev</Item> <Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item> <Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::CodeFriend"> <Type Name="gen::CodeFriend">
<DisplayString Condition="ast == nullptr">Null</DisplayString>
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString> <DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand> <Expand>
<Item Name="Declaration">ast->Declaration</Item> <Item Name="Declaration">ast->Declaration</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Prev">ast->Prev</Item> <Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item> <Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::CodeFn"> <Type Name="gen::CodeFn">
<DisplayString Condition="ast == nullptr">Null</DisplayString>
<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="Attributes">ast->Attributes</Item> <Item Name="Attributes">ast->Attributes</Item>
<Item Name="Specs">ast->Specs</Item> <Item Name="Specs">ast->Specs</Item>
<Item Name="ReturnType">ast->ReturnType</Item> <Item Name="ReturnType">ast->ReturnType</Item>
<Item Name="Params">ast->Params</Item> <Item Name="Params">ast->Params</Item>
<Item Name="Body">ast->Body</Item> <Item Name="Body">ast->Body</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Prev">ast->Prev</Item> <Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item> <Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::CodeModule"> <Type Name="gen::CodeModule">
<DisplayString Condition="ast == nullptr">Null</DisplayString>
<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="Parent">ast->Parent</Item>
<Item Name="Prev">ast->Prev</Item> <Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item> <Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::CodeNamespace"> <Type Name="gen::CodeNamespace">
<DisplayString Condition="ast == nullptr">Null</DisplayString>
<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="Body">ast->Body</Item> <Item Name="Body">ast->Body</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Prev">ast->Prev</Item> <Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item> <Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::CodeOperator"> <Type Name="gen::CodeOperator">
<DisplayString Condition="ast == nullptr">Null</DisplayString>
<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="Attributes">ast->Attributes</Item> <Item Name="Attributes">ast->Attributes</Item>
<Item Name="Specs">ast->Specs</Item> <Item Name="Specs">ast->Specs</Item>
<Item Name="ReturnType">ast->ReturnType</Item> <Item Name="ReturnType">ast->ReturnType</Item>
<Item Name="Op">ast->Op</Item>
<Item Name="Params">ast->Params</Item> <Item Name="Params">ast->Params</Item>
<Item Name="Body">ast->Body</Item> <Item Name="Body">ast->Body</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Prev">ast->Prev</Item> <Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item> <Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
<Item Name="Op">ast->Op</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::CodeOpCast"> <Type Name="gen::CodeOpCast">
<DisplayString Condition="ast == nullptr">Null</DisplayString>
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString> <DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand> <Expand>
<Item Name="ValueType">ast->ValueType</Item> <Item Name="ValueType">ast->ValueType</Item>
<Item Name="Body">ast->Body</Item> <Item Name="Body">ast->Body</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Prev">ast->Prev</Item> <Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item> <Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::CodeParam"> <Type Name="gen::CodeParam">
<DisplayString Condition="ast == nullptr">Null</DisplayString>
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString> <DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand> <Expand>
<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="Prev">ast->Prev</Item> <Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item> <Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
<Item Name="NumEntries">ast->NumEntries</Item> <Item Name="NumEntries">ast->NumEntries</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::CodeSpecifier"> <Type Name="gen::CodeSpecifier">
<DisplayString Condition="ast == nullptr">Null</DisplayString>
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString> <DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand> <Expand>
<ArrayItems Name="ArrSpecs" Condition="ast != nullptr" Size="ast->NumEntries"> <Item Name="Parent">ast->Parent</Item>
<ValuePointer>ast->ArrSpecs</ValuePointer>
</ArrayItems>
<Item Name="Prev">ast->Prev</Item> <Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item> <Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
<Item Name="NumEntries">ast->NumEntries</Item> <Item Name="NumEntries">ast->NumEntries</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::CodeStruct"> <Type Name="gen::CodeStruct">
<DisplayString Condition="ast == nullptr">Null</DisplayString>
<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="Attributes">ast->Attributes</Item> <Item Name="Attributes">ast->Attributes</Item>
<Item Name="ParentType">ast->ParentType</Item> <Item Name="ParentType">ast->ParentType</Item>
<Item Name="Body">ast->Body</Item>
<Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
<Item Name="ParentAccess">ast->ParentAccess</Item> <Item Name="ParentAccess">ast->ParentAccess</Item>
</Expand> <Item Name="Body">ast->Body</Item>
</Type> <Item Name="Parent">ast->Parent</Item>
<Type Name="gen::CodeVar">
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand>
<Item Name="Attributes">ast->Attributes</Item>
<Item Name="Specs">ast->Specs</Item>
<Item Name="ValueType">ast->ValueType</Item>
<Item Name="Value">ast->Value</Item>
<Item Name="Prev">ast->Prev</Item> <Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item> <Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::CodeTemplate"> <Type Name="gen::CodeTemplate">
<DisplayString Condition="ast == nullptr">Null</DisplayString>
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString> <DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand> <Expand>
<Item Name="Attributes">ast->Attributes</Item> <Item Name="ModuleFlags">ast->ModuleFlags</Item>
<Item Name="ReturnType">ast->ReturnType</Item>
<Item Name="Specs">ast->Specs</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="Prev">ast->Prev</Item> <Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item> <Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::CodeType"> <Type Name="gen::CodeType">
<DisplayString Condition="ast == nullptr">Null</DisplayString>
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString> <DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand> <Expand>
<Item Name="Attributes">ast->Attributes</Item> <Item Name="Attributes">ast->Attributes</Item>
<Item Name="Specs">ast->Specs</Item> <Item Name="Specs">ast->Specs</Item>
<Item Name="ArrExpr">ast->ArrExpr</Item> <Item Name="ArrExpr">ast->ArrExpr</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Prev">ast->Prev</Item> <Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item> <Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::CodeTypedef"> <Type Name="gen::CodeTypedef">
<DisplayString Condition="ast == nullptr">Null</DisplayString>
<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="Attributes">ast->Attributes</Item> <Item Name="Attributes">ast->Attributes</Item>
<Item Name="UnderlyingType">ast->UnderlyingType</Item> <Item Name="UnderlyingType">ast->UnderlyingType</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Prev">ast->Prev</Item> <Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item> <Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::CodeUnion"> <Type Name="gen::CodeUnion">
<DisplayString Condition="ast == nullptr">Null</DisplayString>
<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="Attributes">ast->Attributes</Item> <Item Name="Attributes">ast->Attributes</Item>
<Item Name="Body">ast->Body</Item> <Item Name="Body">ast->Body</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Prev">ast->Prev</Item> <Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item> <Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::CodeUsing"> <Type Name="gen::CodeUsing">
<DisplayString Condition="ast == nullptr">Null</DisplayString>
<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="Attributes">ast->Attributes</Item> <Item Name="Attributes">ast->Attributes</Item>
<Item Name="UnderlyingType">ast->UnderlyingType</Item> <Item Name="UnderlyingType">ast->UnderlyingType</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Prev">ast->Prev</Item> <Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item> <Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
<Item Name="Operator">ast->Op</Item>
<Item Name="Access">ast->ParentAccess</Item>
<Item Name="Entries">ast->NumEntries</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="gen::CodeUsingNamespace"> <Type Name="gen::CodeUsingNamespace">
<DisplayString Condition="ast == nullptr">Null</DisplayString>
<DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString> <DisplayString Condition="ast != nullptr">{ast->Name} {ast->Type}</DisplayString>
<Expand> <Expand>
<Item Name="Prev">ast->Prev</Item> <Item Name="Prev">ast->Prev</Item>
@ -879,18 +640,17 @@
</Type> </Type>
<Type Name="gen::CodeVar"> <Type Name="gen::CodeVar">
<DisplayString Condition="ast == nullptr">Null</DisplayString>
<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="Attributes">ast->Attributes</Item> <Item Name="Attributes">ast->Attributes</Item>
<Item Name="Specs">ast->Specs</Item> <Item Name="Specs">ast->Specs</Item>
<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="Prev">ast->Prev</Item> <Item Name="Prev">ast->Prev</Item>
<Item Name="Next">ast->Next</Item> <Item Name="Next">ast->Next</Item>
<Item Name="Parent">ast->Parent</Item>
<Item Name="Name">ast->Name</Item>
<Item Name="Type">ast->Type</Item>
<Item Name="ModuleFlags">ast->ModuleFlags</Item>
</Expand> </Expand>
</Type> </Type>

View File

@ -139,7 +139,7 @@ u32 gen_sanity_upfront()
// Namespace // Namespace
{ {
Code namespace_def; CodeNamespace namespace_def;
{ {
Code body = def_namespace_body( 1 Code body = def_namespace_body( 1
, def_comment( txt_StrC("Empty namespace body") ) , def_comment( txt_StrC("Empty namespace body") )

View File

@ -3,5 +3,16 @@
Building Test Building Test
ninja: Entering directory `C:\projects\gencpp\test\gen\build' ninja: Entering directory `C:\projects\gencpp\test\gen\build'
[1/2] Compiling C++ object gencpp.exe.p/.._test.cpp.obj [1/2] Compiling C++ object gencpp.exe.p/.._test.Upfront.cpp.obj
[2/2] Linking target gencpp.exe [2/2] Linking target gencpp.exe
Generating files Parsed...
Beginning format...
Formatting [1/5] C:\projects\gencpp\test\gen\array.Upfront.gen.hpp
Formatting [2/5] C:\projects\gencpp\test\gen\buffer.Upfront.gen.hpp
Formatting [3/5] C:\projects\gencpp\test\gen\hashtable.Upfront.gen.hpp
Formatting [4/5] C:\projects\gencpp\test\gen\ring.Upfront.gen.hpp
Formatting [5/5] C:\projects\gencpp\test\gen\sanity.Upfront.gen.hpp
Formatting complete