mirror of
https://github.com/Ed94/gencpp.git
synced 2024-12-22 15:54:45 -08:00
Did reductions on Module, NS, Operator, OpCast, Pragma, PreprocessCond, Template, and Type codes
This commit is contained in:
parent
8f47f3b30f
commit
05e65aa464
@ -475,29 +475,29 @@ void to_string( AST* self, String* result )
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case Module:
|
case Module:
|
||||||
cast(CodeModule, {self}).to_string( * result );
|
to_string(cast(CodeModule, {self}), result );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Namespace:
|
case Namespace:
|
||||||
cast(CodeNS, {self}).to_string( * result );
|
to_string(cast(CodeNS, {self}), result );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Operator:
|
case Operator:
|
||||||
case Operator_Member:
|
case Operator_Member:
|
||||||
cast(CodeOperator, {self}).to_string_def( * result );
|
to_string_def(cast(CodeOperator, {self}), result );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Operator_Fwd:
|
case Operator_Fwd:
|
||||||
case Operator_Member_Fwd:
|
case Operator_Member_Fwd:
|
||||||
cast(CodeOperator, {self}).to_string_fwd( * result );
|
to_string_fwd(cast(CodeOperator, {self}), result );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Operator_Cast:
|
case Operator_Cast:
|
||||||
cast(CodeOpCast, {self}).to_string_def( * result );
|
to_string_def(cast(CodeOpCast, {self}), result );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Operator_Cast_Fwd:
|
case Operator_Cast_Fwd:
|
||||||
cast(CodeOpCast, {self}).to_string_fwd( * result );
|
to_string_fwd(cast(CodeOpCast, {self}), result );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Parameters:
|
case Parameters:
|
||||||
@ -509,15 +509,15 @@ void to_string( AST* self, String* result )
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case Preprocess_If:
|
case Preprocess_If:
|
||||||
cast(CodePreprocessCond, {self}).to_string_if( * result );
|
to_string_if(cast(CodePreprocessCond, {self}), result );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Preprocess_IfDef:
|
case Preprocess_IfDef:
|
||||||
cast(CodePreprocessCond, {self}).to_string_ifdef( * result );
|
to_string_ifdef(cast(CodePreprocessCond, {self}), result );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Preprocess_IfNotDef:
|
case Preprocess_IfNotDef:
|
||||||
cast(CodePreprocessCond, {self}).to_string_ifndef( * result );
|
to_string_ifndef(cast(CodePreprocessCond, {self}), result );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Preprocess_Include:
|
case Preprocess_Include:
|
||||||
@ -525,19 +525,19 @@ void to_string( AST* self, String* result )
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case Preprocess_ElIf:
|
case Preprocess_ElIf:
|
||||||
cast(CodePreprocessCond, {self}).to_string_elif( * result );
|
to_string_elif(cast(CodePreprocessCond, {self}), result );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Preprocess_Else:
|
case Preprocess_Else:
|
||||||
cast(CodePreprocessCond, {self}).to_string_else( * result );
|
to_string_else(cast(CodePreprocessCond, {self}), result );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Preprocess_EndIf:
|
case Preprocess_EndIf:
|
||||||
cast(CodePreprocessCond, {self}).to_string_endif( * result );
|
to_string_endif(cast(CodePreprocessCond, {self}), result );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Preprocess_Pragma:
|
case Preprocess_Pragma:
|
||||||
cast(CodePragma, {self}).to_string( * result );
|
to_string(cast(CodePragma, {self}), result );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Specifiers:
|
case Specifiers:
|
||||||
@ -553,7 +553,7 @@ void to_string( AST* self, String* result )
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case Template:
|
case Template:
|
||||||
cast(CodeTemplate, {self}).to_string( * result );
|
to_string(cast(CodeTemplate, {self}), result );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Typedef:
|
case Typedef:
|
||||||
@ -561,7 +561,7 @@ void to_string( AST* self, String* result )
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case Typename:
|
case Typename:
|
||||||
cast(CodeType, {self}).to_string( * result );
|
to_string(cast(CodeType, {self}), result );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Union:
|
case Union:
|
||||||
|
@ -181,7 +181,7 @@ void to_string_def( CodeClass self, String* result )
|
|||||||
{
|
{
|
||||||
char const* access_level = to_str( ast->ParentAccess );
|
char const* access_level = to_str( ast->ParentAccess );
|
||||||
|
|
||||||
append_fmt( result, "%S : %s %S", ast->Name, access_level, ast->ParentType.to_string() );
|
append_fmt( result, "%S : %s %S", ast->Name, access_level, to_string(ast->ParentType) );
|
||||||
|
|
||||||
CodeType interface = cast(CodeType, ast->ParentType->Next);
|
CodeType interface = cast(CodeType, ast->ParentType->Next);
|
||||||
if ( interface )
|
if ( interface )
|
||||||
@ -189,7 +189,7 @@ void to_string_def( CodeClass self, String* result )
|
|||||||
|
|
||||||
while ( interface )
|
while ( interface )
|
||||||
{
|
{
|
||||||
append_fmt( result, ", %S", interface.to_string() );
|
append_fmt( result, ", %S", to_string(interface) );
|
||||||
interface = interface->Next ? cast(CodeType, interface->Next) : CodeType { nullptr };
|
interface = interface->Next ? cast(CodeType, interface->Next) : CodeType { nullptr };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -337,7 +337,7 @@ void to_string_def(CodeEnum self, String* result )
|
|||||||
if ( self->UnderlyingType )
|
if ( self->UnderlyingType )
|
||||||
append_fmt( result, "%S : %S\n{\n%S\n}"
|
append_fmt( result, "%S : %S\n{\n%S\n}"
|
||||||
, self->Name
|
, self->Name
|
||||||
, self->UnderlyingType.to_string()
|
, to_string(self->UnderlyingType)
|
||||||
, GEN_NS to_string(self->Body)
|
, GEN_NS to_string(self->Body)
|
||||||
);
|
);
|
||||||
else if ( self->UnderlyingTypeMacro )
|
else if ( self->UnderlyingTypeMacro )
|
||||||
@ -364,7 +364,7 @@ void to_string_fwd(CodeEnum self, String* result )
|
|||||||
append_fmt( result, "%S ",GEN_NS to_string(self->Attributes) );
|
append_fmt( result, "%S ",GEN_NS to_string(self->Attributes) );
|
||||||
|
|
||||||
if ( self->UnderlyingType )
|
if ( self->UnderlyingType )
|
||||||
append_fmt( result, "enum %S : %S", self->Name, self->UnderlyingType.to_string() );
|
append_fmt( result, "enum %S : %S", self->Name, to_string(self->UnderlyingType) );
|
||||||
else
|
else
|
||||||
append_fmt( result, "enum %S", self->Name );
|
append_fmt( result, "enum %S", self->Name );
|
||||||
|
|
||||||
@ -393,7 +393,7 @@ void to_string_class_def(CodeEnum self, String* result )
|
|||||||
|
|
||||||
if ( self->UnderlyingType )
|
if ( self->UnderlyingType )
|
||||||
{
|
{
|
||||||
append_fmt( result, "%S : %S\n{\n%S\n}", self->Name, self->UnderlyingType.to_string(), GEN_NS to_string(self->Body) );
|
append_fmt( result, "%S : %S\n{\n%S\n}", self->Name, to_string(self->UnderlyingType), GEN_NS to_string(self->Body) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -419,7 +419,7 @@ void to_string_class_fwd(CodeEnum self, String* result )
|
|||||||
if ( self->Attributes )
|
if ( self->Attributes )
|
||||||
append_fmt( result, "%S ",GEN_NS to_string(self->Attributes) );
|
append_fmt( result, "%S ",GEN_NS to_string(self->Attributes) );
|
||||||
|
|
||||||
append_fmt( result, "%S : %S", self->Name, self->UnderlyingType.to_string() );
|
append_fmt( result, "%S : %S", self->Name, to_string(self->UnderlyingType) );
|
||||||
|
|
||||||
if ( self->Parent.ast == nullptr || ( self->Parent->Type != ECode::Typedef && self->Parent->Type != ECode::Variable ) )
|
if ( self->Parent.ast == nullptr || ( self->Parent->Type != ECode::Typedef && self->Parent->Type != ECode::Variable ) )
|
||||||
{
|
{
|
||||||
@ -518,7 +518,7 @@ void to_string_def(CodeFn self, String* result )
|
|||||||
append( result, "\n" );
|
append( result, "\n" );
|
||||||
|
|
||||||
if ( self->ReturnType )
|
if ( self->ReturnType )
|
||||||
append_fmt( result, "%S %S(", self->ReturnType.to_string(), self->Name );
|
append_fmt( result, "%S %S(", to_string(self->ReturnType), self->Name );
|
||||||
|
|
||||||
else
|
else
|
||||||
append_fmt( result, "%S(", self->Name );
|
append_fmt( result, "%S(", self->Name );
|
||||||
@ -573,7 +573,7 @@ void to_string_fwd(CodeFn self, String* result )
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( self->ReturnType )
|
if ( self->ReturnType )
|
||||||
append_fmt( result, "%S %S(", self->ReturnType.to_string(), self->Name );
|
append_fmt( result, "%S %S(", to_string(self->ReturnType), self->Name );
|
||||||
|
|
||||||
else
|
else
|
||||||
append_fmt( result, "%S(", self->Name );
|
append_fmt( result, "%S(", self->Name );
|
||||||
@ -607,250 +607,250 @@ void to_string_fwd(CodeFn self, String* result )
|
|||||||
append( result, ";\n" );
|
append( result, ";\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
String CodeModule::to_string()
|
String to_string(CodeModule self)
|
||||||
{
|
{
|
||||||
String result = string_make( GlobalAllocator, "" );
|
String result = string_make( GlobalAllocator, "" );
|
||||||
to_string( result );
|
to_string( self, & result );
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CodeModule::to_string( String& result )
|
void to_string(CodeModule self, String* result )
|
||||||
{
|
{
|
||||||
if (((u32(ModuleFlag_Export) & u32(ast->ModuleFlags)) == u32(ModuleFlag_Export)))
|
if (((u32(ModuleFlag_Export) & u32(self->ModuleFlags)) == u32(ModuleFlag_Export)))
|
||||||
append( & result, "export ");
|
append( result, "export ");
|
||||||
|
|
||||||
if (((u32(ModuleFlag_Import) & u32(ast->ModuleFlags)) == u32(ModuleFlag_Import)))
|
if (((u32(ModuleFlag_Import) & u32(self->ModuleFlags)) == u32(ModuleFlag_Import)))
|
||||||
append( & result, "import ");
|
append( result, "import ");
|
||||||
|
|
||||||
append_fmt( & result, "%S;\n", ast->Name );
|
append_fmt( result, "%S;\n", self->Name );
|
||||||
}
|
}
|
||||||
|
|
||||||
String CodeNS::to_string()
|
String to_string(CodeNS self)
|
||||||
{
|
{
|
||||||
String result = string_make( GlobalAllocator, "" );
|
String result = string_make( GlobalAllocator, "" );
|
||||||
to_string( result );
|
to_string( self, & result );
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CodeNS::to_string( String& result )
|
void to_string(CodeNS self, String* result )
|
||||||
{
|
{
|
||||||
if ( bitfield_is_equal( u32, ast->ModuleFlags, ModuleFlag_Export ))
|
if ( bitfield_is_equal( u32, self->ModuleFlags, ModuleFlag_Export ))
|
||||||
append( & result, "export " );
|
append( result, "export " );
|
||||||
|
|
||||||
append_fmt( & result, "namespace %S\n{\n%S\n}\n", ast->Name , GEN_NS to_string(ast->Body) );
|
append_fmt( result, "namespace %S\n{\n%S\n}\n", self->Name, to_string(self->Body) );
|
||||||
}
|
}
|
||||||
|
|
||||||
String CodeOperator::to_string()
|
String to_string(CodeOperator self)
|
||||||
{
|
{
|
||||||
String result = string_make( GlobalAllocator, "" );
|
String result = string_make( GlobalAllocator, "" );
|
||||||
switch ( ast->Type )
|
switch ( self->Type )
|
||||||
{
|
{
|
||||||
using namespace ECode;
|
using namespace ECode;
|
||||||
case Operator:
|
case Operator:
|
||||||
case Operator_Member:
|
case Operator_Member:
|
||||||
to_string_def( result );
|
to_string_def( self, & result );
|
||||||
break;
|
break;
|
||||||
case Operator_Fwd:
|
case Operator_Fwd:
|
||||||
case Operator_Member_Fwd:
|
case Operator_Member_Fwd:
|
||||||
to_string_fwd( result );
|
to_string_fwd( self, & result );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CodeOperator::to_string_def( String& result )
|
void to_string_def(CodeOperator self, String* result )
|
||||||
{
|
{
|
||||||
if ( bitfield_is_equal( u32, ast->ModuleFlags, ModuleFlag_Export ))
|
if ( bitfield_is_equal( u32, self->ModuleFlags, ModuleFlag_Export ))
|
||||||
append( & result, "export " );
|
append( result, "export " );
|
||||||
|
|
||||||
if ( ast->Attributes )
|
if ( self->Attributes )
|
||||||
append_fmt( & result, "%S ",GEN_NS to_string(ast->Attributes) );
|
append_fmt( result, "%S ",GEN_NS to_string(self->Attributes) );
|
||||||
|
|
||||||
if ( ast->Attributes )
|
if ( self->Attributes )
|
||||||
append_fmt( & result, "%S ",GEN_NS to_string(ast->Attributes) );
|
append_fmt( result, "%S ",GEN_NS to_string(self->Attributes) );
|
||||||
|
|
||||||
if ( ast->Specs )
|
if ( self->Specs )
|
||||||
{
|
{
|
||||||
for ( SpecifierT spec : ast->Specs )
|
for ( SpecifierT spec : self->Specs )
|
||||||
{
|
{
|
||||||
if ( ! ESpecifier::is_trailing( spec ) )
|
if ( ! ESpecifier::is_trailing( spec ) )
|
||||||
{
|
{
|
||||||
StrC spec_str = ESpecifier::to_str( spec );
|
StrC spec_str = ESpecifier::to_str( spec );
|
||||||
append_fmt( & result, " %.*s", spec_str.Len, spec_str.Ptr );
|
append_fmt( result, " %.*s", spec_str.Len, spec_str.Ptr );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ast->Attributes || ast->Specs )
|
if ( self->Attributes || self->Specs )
|
||||||
{
|
{
|
||||||
append( & result, "\n" );
|
append( result, "\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ast->ReturnType )
|
if ( self->ReturnType )
|
||||||
append_fmt( & result, "%S %S (", ast->ReturnType.to_string(), ast->Name );
|
append_fmt( result, "%S %S (", GEN_NS to_string(self->ReturnType), self->Name );
|
||||||
|
|
||||||
if ( ast->Params )
|
if ( self->Params )
|
||||||
append_fmt( & result, "%S)", GEN_NS to_string(ast->Params) );
|
append_fmt( result, "%S)", GEN_NS to_string(self->Params) );
|
||||||
|
|
||||||
else
|
else
|
||||||
append( & result, ")" );
|
append( result, ")" );
|
||||||
|
|
||||||
if ( ast->Specs )
|
if ( self->Specs )
|
||||||
{
|
{
|
||||||
for ( SpecifierT spec : ast->Specs )
|
for ( SpecifierT spec : self->Specs )
|
||||||
{
|
{
|
||||||
if ( ESpecifier::is_trailing( spec ) )
|
if ( ESpecifier::is_trailing( spec ) )
|
||||||
{
|
{
|
||||||
StrC spec_str = ESpecifier::to_str( spec );
|
StrC spec_str = ESpecifier::to_str( spec );
|
||||||
append_fmt( & result, " %.*s", spec_str.Len, spec_str.Ptr );
|
append_fmt( result, " %.*s", spec_str.Len, spec_str.Ptr );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
append_fmt( & result, "\n{\n%S\n}\n"
|
append_fmt( result, "\n{\n%S\n}\n"
|
||||||
, GEN_NS to_string(ast->Body)
|
, GEN_NS to_string(self->Body)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CodeOperator::to_string_fwd( String& result )
|
void to_string_fwd(CodeOperator self, String* result )
|
||||||
{
|
{
|
||||||
if ( bitfield_is_equal( u32, ast->ModuleFlags, ModuleFlag_Export ))
|
if ( bitfield_is_equal( u32, self->ModuleFlags, ModuleFlag_Export ))
|
||||||
append( & result, "export " );
|
append( result, "export " );
|
||||||
|
|
||||||
if ( ast->Attributes )
|
if ( self->Attributes )
|
||||||
append_fmt( & result, "%S\n",GEN_NS to_string(ast->Attributes) );
|
append_fmt( result, "%S\n",GEN_NS to_string(self->Attributes) );
|
||||||
|
|
||||||
if ( ast->Specs )
|
if ( self->Specs )
|
||||||
{
|
{
|
||||||
for ( SpecifierT spec : ast->Specs )
|
for ( SpecifierT spec : self->Specs )
|
||||||
{
|
{
|
||||||
if ( ! ESpecifier::is_trailing( spec ) )
|
if ( ! ESpecifier::is_trailing( spec ) )
|
||||||
{
|
{
|
||||||
StrC spec_str = ESpecifier::to_str( spec );
|
StrC spec_str = ESpecifier::to_str( spec );
|
||||||
append_fmt( & result, " %.*s", spec_str.Len, spec_str.Ptr );
|
append_fmt( result, " %.*s", spec_str.Len, spec_str.Ptr );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ast->Attributes || ast->Specs )
|
if ( self->Attributes || self->Specs )
|
||||||
{
|
{
|
||||||
append( & result, "\n" );
|
append( result, "\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
append_fmt( & result, "%S %S (", ast->ReturnType.to_string(), ast->Name );
|
append_fmt( result, "%S %S (", to_string(self->ReturnType), self->Name );
|
||||||
|
|
||||||
if ( ast->Params )
|
if ( self->Params )
|
||||||
append_fmt( & result, "%S)", GEN_NS to_string(ast->Params) );
|
append_fmt( result, "%S)", GEN_NS to_string(self->Params) );
|
||||||
|
|
||||||
else
|
else
|
||||||
append_fmt( & result, ")" );
|
append_fmt( result, ")" );
|
||||||
|
|
||||||
if ( ast->Specs )
|
if ( self->Specs )
|
||||||
{
|
{
|
||||||
for ( SpecifierT spec : ast->Specs )
|
for ( SpecifierT spec : self->Specs )
|
||||||
{
|
{
|
||||||
if ( ESpecifier::is_trailing( spec ) )
|
if ( ESpecifier::is_trailing( spec ) )
|
||||||
{
|
{
|
||||||
StrC spec_str = ESpecifier::to_str( spec );
|
StrC spec_str = ESpecifier::to_str( spec );
|
||||||
append_fmt( & result, " %.*s", spec_str.Len, spec_str.Ptr );
|
append_fmt( result, " %.*s", spec_str.Len, spec_str.Ptr );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ast->InlineCmt )
|
if ( self->InlineCmt )
|
||||||
append_fmt( & result, "; %S", ast->InlineCmt->Content );
|
append_fmt( result, "; %S", self->InlineCmt->Content );
|
||||||
else
|
else
|
||||||
append( & result, ";\n" );
|
append( result, ";\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
String CodeOpCast::to_string()
|
String to_string(CodeOpCast self)
|
||||||
{
|
{
|
||||||
String result = string_make( GlobalAllocator, "" );
|
String result = string_make( GlobalAllocator, "" );
|
||||||
switch ( ast->Type )
|
switch ( self->Type )
|
||||||
{
|
{
|
||||||
using namespace ECode;
|
using namespace ECode;
|
||||||
case Operator_Cast:
|
case Operator_Cast:
|
||||||
to_string_def( result );
|
to_string_def(self, & result );
|
||||||
break;
|
break;
|
||||||
case Operator_Cast_Fwd:
|
case Operator_Cast_Fwd:
|
||||||
to_string_fwd( result );
|
to_string_fwd(self, & result );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CodeOpCast::to_string_def( String& result )
|
void to_string_def(CodeOpCast self, String* result )
|
||||||
{
|
{
|
||||||
if ( ast->Specs )
|
if ( self->Specs )
|
||||||
{
|
{
|
||||||
for ( SpecifierT spec : ast->Specs )
|
for ( SpecifierT spec : self->Specs )
|
||||||
{
|
{
|
||||||
if ( ! ESpecifier::is_trailing( spec ) )
|
if ( ! ESpecifier::is_trailing( spec ) )
|
||||||
{
|
{
|
||||||
StrC spec_str = ESpecifier::to_str( spec );
|
StrC spec_str = ESpecifier::to_str( spec );
|
||||||
append_fmt( & result, "%*s ", spec_str.Len, spec_str.Ptr );
|
append_fmt( result, "%*s ", spec_str.Len, spec_str.Ptr );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ast->Name && length(ast->Name) )
|
if ( self->Name && length(self->Name) )
|
||||||
append_fmt( & result, "%Soperator %S()", ast->Name, ast->ValueType.to_string() );
|
append_fmt( result, "%Soperator %S()", self->Name, to_string(self->ValueType) );
|
||||||
else
|
else
|
||||||
append_fmt( & result, "operator %S()", ast->ValueType.to_string() );
|
append_fmt( result, "operator %S()", to_string(self->ValueType) );
|
||||||
|
|
||||||
for ( SpecifierT spec : ast->Specs )
|
for ( SpecifierT spec : self->Specs )
|
||||||
{
|
{
|
||||||
if ( ESpecifier::is_trailing( spec ) )
|
if ( ESpecifier::is_trailing( spec ) )
|
||||||
{
|
{
|
||||||
StrC spec_str = ESpecifier::to_str( spec );
|
StrC spec_str = ESpecifier::to_str( spec );
|
||||||
append_fmt( & result, " %.*s", spec_str.Len, spec_str.Ptr );
|
append_fmt( result, " %.*s", spec_str.Len, spec_str.Ptr );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
append_fmt( & result, "\n{\n%S\n}\n", GEN_NS to_string(ast->Body) );
|
append_fmt( result, "\n{\n%S\n}\n", GEN_NS to_string(self->Body) );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ast->Name && length(ast->Name) )
|
if ( self->Name && length(self->Name) )
|
||||||
append_fmt( & result, "%Soperator %S()\n{\n%S\n}\n", ast->Name, ast->ValueType.to_string(), GEN_NS to_string(ast->Body) );
|
append_fmt( result, "%Soperator %S()\n{\n%S\n}\n", self->Name, to_string(self->ValueType), GEN_NS to_string(self->Body) );
|
||||||
else
|
else
|
||||||
append_fmt( & result, "operator %S()\n{\n%S\n}\n", ast->ValueType.to_string(), GEN_NS to_string(ast->Body) );
|
append_fmt( result, "operator %S()\n{\n%S\n}\n", to_string(self->ValueType), GEN_NS to_string(self->Body) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void CodeOpCast::to_string_fwd( String& result )
|
void to_string_fwd(CodeOpCast self, String* result )
|
||||||
{
|
{
|
||||||
if ( ast->Specs )
|
if ( self->Specs )
|
||||||
{
|
{
|
||||||
for ( SpecifierT spec : ast->Specs )
|
for ( SpecifierT spec : self->Specs )
|
||||||
{
|
{
|
||||||
if ( ! ESpecifier::is_trailing( spec ) )
|
if ( ! ESpecifier::is_trailing( spec ) )
|
||||||
{
|
{
|
||||||
StrC spec_str = ESpecifier::to_str( spec );
|
StrC spec_str = ESpecifier::to_str( spec );
|
||||||
append_fmt( & result, "%*s ", spec_str.Len, spec_str.Ptr );
|
append_fmt( result, "%*s ", spec_str.Len, spec_str.Ptr );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
append_fmt( & result, "operator %S()", ast->ValueType.to_string() );
|
append_fmt( result, "operator %S()", to_string(self->ValueType) );
|
||||||
|
|
||||||
for ( SpecifierT spec : ast->Specs )
|
for ( SpecifierT spec : self->Specs )
|
||||||
{
|
{
|
||||||
if ( ESpecifier::is_trailing( spec ) )
|
if ( ESpecifier::is_trailing( spec ) )
|
||||||
{
|
{
|
||||||
StrC spec_str = ESpecifier::to_str( spec );
|
StrC spec_str = ESpecifier::to_str( spec );
|
||||||
append_fmt( & result, " %*s", spec_str.Len, spec_str.Ptr );
|
append_fmt( result, " %*s", spec_str.Len, spec_str.Ptr );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ast->InlineCmt )
|
if ( self->InlineCmt )
|
||||||
append_fmt( & result, "; %S", ast->InlineCmt->Content );
|
append_fmt( result, "; %S", self->InlineCmt->Content );
|
||||||
else
|
else
|
||||||
append( & result, ";\n" );
|
append( result, ";\n" );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ast->InlineCmt )
|
if ( self->InlineCmt )
|
||||||
append_fmt( & result, "operator %S(); %S", ast->ValueType.to_string() );
|
append_fmt( result, "operator %S(); %S", to_string(self->ValueType) );
|
||||||
else
|
else
|
||||||
append_fmt( & result, "operator %S();\n", ast->ValueType.to_string() );
|
append_fmt( result, "operator %S();\n", to_string(self->ValueType) );
|
||||||
}
|
}
|
||||||
|
|
||||||
String to_string(CodeParam self)
|
String to_string(CodeParam self)
|
||||||
@ -875,11 +875,11 @@ void to_string( CodeParam self, String* result )
|
|||||||
if ( ast->ValueType.ast == nullptr )
|
if ( ast->ValueType.ast == nullptr )
|
||||||
append_fmt( result, " %S", ast->Name );
|
append_fmt( result, " %S", ast->Name );
|
||||||
else
|
else
|
||||||
append_fmt( result, " %S %S", ast->ValueType.to_string(), ast->Name );
|
append_fmt( result, " %S %S", to_string(ast->ValueType), ast->Name );
|
||||||
|
|
||||||
}
|
}
|
||||||
else if ( ast->ValueType )
|
else if ( ast->ValueType )
|
||||||
append_fmt( result, " %S", ast->ValueType.to_string() );
|
append_fmt( result, " %S", to_string(ast->ValueType) );
|
||||||
|
|
||||||
if ( ast->PostNameMacro )
|
if ( ast->PostNameMacro )
|
||||||
{
|
{
|
||||||
@ -898,74 +898,74 @@ void to_string( CodeParam self, String* result )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String CodePreprocessCond::to_string()
|
String to_string(CodePreprocessCond self)
|
||||||
{
|
{
|
||||||
String result = string_make( GlobalAllocator, "" );
|
String result = string_make( GlobalAllocator, "" );
|
||||||
switch ( ast->Type )
|
switch ( self->Type )
|
||||||
{
|
{
|
||||||
using namespace ECode;
|
using namespace ECode;
|
||||||
case Preprocess_If:
|
case Preprocess_If:
|
||||||
to_string_if( result );
|
to_string_if( self, & result );
|
||||||
break;
|
break;
|
||||||
case Preprocess_IfDef:
|
case Preprocess_IfDef:
|
||||||
to_string_ifdef( result );
|
to_string_ifdef( self, & result );
|
||||||
break;
|
break;
|
||||||
case Preprocess_IfNotDef:
|
case Preprocess_IfNotDef:
|
||||||
to_string_ifndef( result );
|
to_string_ifndef( self, & result );
|
||||||
break;
|
break;
|
||||||
case Preprocess_ElIf:
|
case Preprocess_ElIf:
|
||||||
to_string_elif( result );
|
to_string_elif( self, & result );
|
||||||
break;
|
break;
|
||||||
case Preprocess_Else:
|
case Preprocess_Else:
|
||||||
to_string_else( result );
|
to_string_else( self, & result );
|
||||||
break;
|
break;
|
||||||
case Preprocess_EndIf:
|
case Preprocess_EndIf:
|
||||||
to_string_endif( result );
|
to_string_endif( self, & result );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CodePreprocessCond::to_string_if( String& result )
|
void to_string_if(CodePreprocessCond cond, String* result )
|
||||||
{
|
{
|
||||||
append_fmt( & result, "#if %S\n", ast->Content );
|
append_fmt( result, "#if %S\n", cond->Content );
|
||||||
}
|
}
|
||||||
|
|
||||||
void CodePreprocessCond::to_string_ifdef( String& result )
|
void to_string_ifdef(CodePreprocessCond cond, String* result )
|
||||||
{
|
{
|
||||||
append_fmt( & result, "#ifdef %S\n", ast->Content );
|
append_fmt( result, "#ifdef %S\n", cond->Content );
|
||||||
}
|
}
|
||||||
|
|
||||||
void CodePreprocessCond::to_string_ifndef( String& result )
|
void to_string_ifndef(CodePreprocessCond cond, String* result )
|
||||||
{
|
{
|
||||||
append_fmt( & result, "#ifndef %S\n", ast->Content );
|
append_fmt( result, "#ifndef %S\n", cond->Content );
|
||||||
}
|
}
|
||||||
|
|
||||||
void CodePreprocessCond::to_string_elif( String& result )
|
void to_string_elif(CodePreprocessCond cond, String* result )
|
||||||
{
|
{
|
||||||
append_fmt( & result, "#elif %S\n", ast->Content );
|
append_fmt( result, "#elif %S\n", cond->Content );
|
||||||
}
|
}
|
||||||
|
|
||||||
void CodePreprocessCond::to_string_else( String& result )
|
void to_string_else(CodePreprocessCond cond, String* result )
|
||||||
{
|
{
|
||||||
append_fmt( & result, "#else\n" );
|
append_fmt( result, "#else\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
void CodePreprocessCond::to_string_endif( String& result )
|
void to_string_endif(CodePreprocessCond cond, String* result )
|
||||||
{
|
{
|
||||||
append_fmt( & result, "#endif\n" );
|
append_fmt( result, "#endif\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
String CodePragma::to_string()
|
String to_string(CodePragma self)
|
||||||
{
|
{
|
||||||
String result = string_make( GlobalAllocator, "" );
|
String result = string_make( GlobalAllocator, "" );
|
||||||
to_string( result );
|
to_string( self, & result );
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CodePragma::to_string( String& result )
|
void to_string(CodePragma self, String* result )
|
||||||
{
|
{
|
||||||
append_fmt( & result, "#pragma %S\n", ast->Content );
|
append_fmt( result, "#pragma %S\n", self->Content );
|
||||||
}
|
}
|
||||||
|
|
||||||
String to_string(CodeSpecifiers self)
|
String to_string(CodeSpecifiers self)
|
||||||
@ -1025,7 +1025,7 @@ void to_string_def( CodeStruct self, String* result )
|
|||||||
{
|
{
|
||||||
char const* access_level = to_str( ast->ParentAccess );
|
char const* access_level = to_str( ast->ParentAccess );
|
||||||
|
|
||||||
append_fmt( result, "%S : %s %S", ast->Name, access_level, ast->ParentType.to_string() );
|
append_fmt( result, "%S : %s %S", ast->Name, access_level, GEN_NS to_string(ast->ParentType) );
|
||||||
|
|
||||||
CodeType interface = cast(CodeType, ast->ParentType->Next);
|
CodeType interface = cast(CodeType, ast->ParentType->Next);
|
||||||
if ( interface )
|
if ( interface )
|
||||||
@ -1033,7 +1033,7 @@ void to_string_def( CodeStruct self, String* result )
|
|||||||
|
|
||||||
while ( interface )
|
while ( interface )
|
||||||
{
|
{
|
||||||
append_fmt( result, ", %S", interface.to_string() );
|
append_fmt( result, ", %S", GEN_NS to_string(interface) );
|
||||||
interface = interface->Next ? cast( CodeType, interface->Next) : CodeType { nullptr };
|
interface = interface->Next ? cast( CodeType, interface->Next) : CodeType { nullptr };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1062,7 +1062,7 @@ void to_string_fwd( CodeStruct self, String* result )
|
|||||||
append( result, "export " );
|
append( result, "export " );
|
||||||
|
|
||||||
if ( ast->Attributes )
|
if ( ast->Attributes )
|
||||||
append_fmt( result, "struct %S %S",GEN_NS to_string(ast->Attributes), ast->Name );
|
append_fmt( result, "struct %S %S", GEN_NS to_string(ast->Attributes), ast->Name );
|
||||||
|
|
||||||
else append_fmt( result, "struct %S", ast->Name );
|
else append_fmt( result, "struct %S", ast->Name );
|
||||||
|
|
||||||
@ -1075,22 +1075,22 @@ void to_string_fwd( CodeStruct self, String* result )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String CodeTemplate::to_string()
|
String to_string(CodeTemplate self)
|
||||||
{
|
{
|
||||||
String result = string_make( GlobalAllocator, "" );
|
String result = string_make( GlobalAllocator, "" );
|
||||||
to_string( result );
|
to_string( self, & result );
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CodeTemplate::to_string( String& result )
|
void to_string(CodeTemplate self, String* result )
|
||||||
{
|
{
|
||||||
if ( bitfield_is_equal( u32, ast->ModuleFlags, ModuleFlag_Export ))
|
if ( bitfield_is_equal( u32, self->ModuleFlags, ModuleFlag_Export ))
|
||||||
append( & result, "export " );
|
append( result, "export " );
|
||||||
|
|
||||||
if ( ast->Params )
|
if ( self->Params )
|
||||||
append_fmt( & result, "template< %S >\n%S", GEN_NS to_string(ast->Params), GEN_NS to_string(ast->Declaration) );
|
append_fmt( result, "template< %S >\n%S", GEN_NS to_string(self->Params), GEN_NS to_string(self->Declaration) );
|
||||||
else
|
else
|
||||||
append_fmt( & result, "template<>\n%S", GEN_NS to_string(ast->Declaration) );
|
append_fmt( result, "template<>\n%S", GEN_NS to_string(self->Declaration) );
|
||||||
}
|
}
|
||||||
|
|
||||||
String CodeTypedef::to_string()
|
String CodeTypedef::to_string()
|
||||||
@ -1135,57 +1135,57 @@ void CodeTypedef::to_string( String& result )
|
|||||||
append( & result, "\n");
|
append( & result, "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
String CodeType::to_string()
|
String to_string(CodeType self)
|
||||||
{
|
{
|
||||||
String result = string_make( GlobalAllocator, "" );
|
String result = string_make( GlobalAllocator, "" );
|
||||||
to_string( result );
|
to_string( self, & result );
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CodeType::to_string( String& result )
|
void to_string(CodeType self, String* result )
|
||||||
{
|
{
|
||||||
#if defined(GEN_USE_NEW_TYPENAME_PARSING)
|
#if defined(GEN_USE_NEW_TYPENAME_PARSING)
|
||||||
if ( ast->ReturnType && ast->Params )
|
if ( self->ReturnType && self->Params )
|
||||||
{
|
{
|
||||||
if ( ast->Attributes )
|
if ( self->Attributes )
|
||||||
append_fmt( result, "%S ",GEN_NS to_string(ast->Attributes) );
|
append_fmt( result, "%S ",GEN_NS to_string(self->Attributes) );
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( ast->Specs )
|
if ( self->Specs )
|
||||||
append_fmt( & result, "%S ( %S ) ( %S ) %S", ast->ReturnType.to_string(), ast->Name, ast->Params.to_string(), ast->Specs.to_string() );
|
append_fmt( result, "%S ( %S ) ( %S ) %S", self->ReturnType.to_string(), self->Name, self->Params.to_string(), self->Specs.to_string() );
|
||||||
else
|
else
|
||||||
append_fmt( & result, "%S ( %S ) ( %S )", ast->ReturnType.to_string(), ast->Name, ast->Params.to_string() );
|
append_fmt( result, "%S ( %S ) ( %S )", self->ReturnType.to_string(), self->Name, self->Params.to_string() );
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if ( ast->ReturnType && ast->Params )
|
if ( self->ReturnType && self->Params )
|
||||||
{
|
{
|
||||||
if ( ast->Attributes )
|
if ( self->Attributes )
|
||||||
append_fmt( & result, "%S ",GEN_NS to_string(ast->Attributes) );
|
append_fmt( result, "%S ",GEN_NS to_string(self->Attributes) );
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( ast->Specs )
|
if ( self->Specs )
|
||||||
append_fmt( & result, "%S %S ( %S ) %S", ast->ReturnType.to_string(), ast->Name, GEN_NS to_string(ast->Params), GEN_NS to_string(ast->Specs) );
|
append_fmt( result, "%S %S ( %S ) %S", GEN_NS to_string(self->ReturnType), self->Name, GEN_NS to_string(self->Params), GEN_NS to_string(self->Specs) );
|
||||||
else
|
else
|
||||||
append_fmt( & result, "%S %S ( %S )", ast->ReturnType.to_string(), ast->Name, GEN_NS to_string(ast->Params) );
|
append_fmt( result, "%S %S ( %S )", GEN_NS to_string(self->ReturnType), self->Name, GEN_NS to_string(self->Params) );
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if ( ast->Attributes )
|
if ( self->Attributes )
|
||||||
append_fmt( & result, "%S ",GEN_NS to_string(ast->Attributes) );
|
append_fmt( result, "%S ",GEN_NS to_string(self->Attributes) );
|
||||||
|
|
||||||
if ( ast->Specs )
|
if ( self->Specs )
|
||||||
append_fmt( & result, "%S %S", ast->Name, GEN_NS to_string(ast->Specs) );
|
append_fmt( result, "%S %S", self->Name, GEN_NS to_string(self->Specs) );
|
||||||
else
|
else
|
||||||
append_fmt( & result, "%S", ast->Name );
|
append_fmt( result, "%S", self->Name );
|
||||||
|
|
||||||
if ( ast->IsParamPack )
|
if ( self->IsParamPack )
|
||||||
append( & result, "...");
|
append( result, "...");
|
||||||
}
|
}
|
||||||
|
|
||||||
String CodeUnion::to_string()
|
String CodeUnion::to_string()
|
||||||
@ -1250,7 +1250,7 @@ void CodeUsing::to_string( String& result )
|
|||||||
|
|
||||||
if ( ast->UnderlyingType )
|
if ( ast->UnderlyingType )
|
||||||
{
|
{
|
||||||
append_fmt( & result, "using %S = %S", ast->Name, ast->UnderlyingType.to_string() );
|
append_fmt( & result, "using %S = %S", ast->Name, GEN_NS to_string(ast->UnderlyingType) );
|
||||||
|
|
||||||
if ( ast->UnderlyingType->ArrExpr )
|
if ( ast->UnderlyingType->ArrExpr )
|
||||||
{
|
{
|
||||||
@ -1342,7 +1342,7 @@ void CodeVar::to_string( String& result )
|
|||||||
if ( ast->Specs )
|
if ( ast->Specs )
|
||||||
append_fmt( & result, "%S\n", GEN_NS to_string(ast->Specs) );
|
append_fmt( & result, "%S\n", GEN_NS to_string(ast->Specs) );
|
||||||
|
|
||||||
append_fmt( & result, "%S %S", ast->ValueType.to_string(), ast->Name );
|
append_fmt( & result, "%S %S", GEN_NS to_string(ast->ValueType), ast->Name );
|
||||||
|
|
||||||
if ( ast->ValueType->ArrExpr )
|
if ( ast->ValueType->ArrExpr )
|
||||||
{
|
{
|
||||||
@ -1382,11 +1382,11 @@ void CodeVar::to_string( String& result )
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( ast->BitfieldSize )
|
if ( ast->BitfieldSize )
|
||||||
append_fmt( & result, "%S %S : %S", ast->ValueType.to_string(), ast->Name, GEN_NS to_string(ast->BitfieldSize) );
|
append_fmt( & result, "%S %S : %S", GEN_NS to_string(ast->ValueType), ast->Name, GEN_NS to_string(ast->BitfieldSize) );
|
||||||
|
|
||||||
else if ( ast->ValueType->ArrExpr )
|
else if ( ast->ValueType->ArrExpr )
|
||||||
{
|
{
|
||||||
append_fmt( & result, "%S %S[ %S ]", ast->ValueType.to_string(), ast->Name, GEN_NS to_string(ast->ValueType->ArrExpr) );
|
append_fmt( & result, "%S %S[ %S ]", GEN_NS to_string(ast->ValueType), ast->Name, GEN_NS to_string(ast->ValueType->ArrExpr) );
|
||||||
|
|
||||||
AST* next_arr_expr = ast->ValueType->ArrExpr->Next;
|
AST* next_arr_expr = ast->ValueType->ArrExpr->Next;
|
||||||
while ( next_arr_expr )
|
while ( next_arr_expr )
|
||||||
@ -1397,7 +1397,7 @@ void CodeVar::to_string( String& result )
|
|||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
append_fmt( & result, "%S %S", ast->ValueType.to_string(), ast->Name );
|
append_fmt( & result, "%S %S", GEN_NS to_string(ast->ValueType), ast->Name );
|
||||||
|
|
||||||
if ( ast->Value )
|
if ( ast->Value )
|
||||||
{
|
{
|
||||||
|
@ -74,6 +74,37 @@ String to_string (CodeFn self);
|
|||||||
void to_string_def(CodeFn self, String* result);
|
void to_string_def(CodeFn self, String* result);
|
||||||
void to_string_fwd(CodeFn self, String* result);
|
void to_string_fwd(CodeFn self, String* result);
|
||||||
|
|
||||||
|
String to_string(CodeModule self);
|
||||||
|
void to_string(CodeModule self, String* result);
|
||||||
|
|
||||||
|
String to_string(CodeNS self);
|
||||||
|
void to_string(CodeNS self, String* result);
|
||||||
|
|
||||||
|
String to_string (CodeOperator self);
|
||||||
|
void to_string_fwd(CodeOperator self, String* result );
|
||||||
|
void to_string_def(CodeOperator self, String* result );
|
||||||
|
|
||||||
|
String to_string (CodeOpCast op_cast );
|
||||||
|
void to_string_def(CodeOpCast op_cast, String* result );
|
||||||
|
void to_string_fwd(CodeOpCast op_cast, String* result );
|
||||||
|
|
||||||
|
String to_string(CodePragma self);
|
||||||
|
void to_string(CodePragma self, String* result);
|
||||||
|
|
||||||
|
String to_string (CodePreprocessCond cond);
|
||||||
|
void to_string_if (CodePreprocessCond cond, String* result );
|
||||||
|
void to_string_ifdef (CodePreprocessCond cond, String* result );
|
||||||
|
void to_string_ifndef(CodePreprocessCond cond, String* result );
|
||||||
|
void to_string_elif (CodePreprocessCond cond, String* result );
|
||||||
|
void to_string_else (CodePreprocessCond cond, String* result );
|
||||||
|
void to_string_endif (CodePreprocessCond cond, String* result );
|
||||||
|
|
||||||
|
String to_string(CodeTemplate self);
|
||||||
|
void to_string(CodeTemplate self, String* result);
|
||||||
|
|
||||||
|
String to_string(CodeType self);
|
||||||
|
void to_string(CodeType self, String* result);
|
||||||
|
|
||||||
#pragma region Code Types
|
#pragma region Code Types
|
||||||
// These structs are not used at all by the C vairant.
|
// These structs are not used at all by the C vairant.
|
||||||
#if ! GEN_COMPILER_C
|
#if ! GEN_COMPILER_C
|
||||||
@ -292,10 +323,10 @@ struct CodeEnum
|
|||||||
Using_Code( CodeEnum );
|
Using_Code( CodeEnum );
|
||||||
|
|
||||||
String to_string() { return GEN_NS to_string(* this); }
|
String to_string() { return GEN_NS to_string(* this); }
|
||||||
void to_string_def( String& result ) { return GEN_NS to_string_def(* this); }
|
void to_string_def( String& result ) { return GEN_NS to_string_def(* this, & result); }
|
||||||
void to_string_fwd( String& result ) { return GEN_NS to_string_fwd(* this); }
|
void to_string_fwd( String& result ) { return GEN_NS to_string_fwd(* this, & result); }
|
||||||
void to_string_class_def( String& result ) { return GEN_NS to_string_class_def(* this); }
|
void to_string_class_def( String& result ) { return GEN_NS to_string_class_def(* this, & result); }
|
||||||
void to_string_class_fwd( String& result ) { return GEN_NS to_string_class_fwd(* this); }
|
void to_string_class_fwd( String& result ) { return GEN_NS to_string_class_fwd(* this, & result); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Using_CodeOps(CodeEnum);
|
Using_CodeOps(CodeEnum);
|
||||||
@ -573,8 +604,8 @@ struct CodeFn
|
|||||||
Using_Code( CodeFn );
|
Using_Code( CodeFn );
|
||||||
|
|
||||||
String to_string() { return GEN_NS to_string(* this); }
|
String to_string() { return GEN_NS to_string(* this); }
|
||||||
void to_string_def( String& result ) { return GEN_NS to_string_def(* this); }
|
void to_string_def( String& result ) { return GEN_NS to_string_def(* this, & result); }
|
||||||
void to_string_fwd( String& result ) { return GEN_NS to_string_fwd(* this); }
|
void to_string_fwd( String& result ) { return GEN_NS to_string_fwd(* this, & result); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Using_CodeOps(CodeFn);
|
Using_CodeOps(CodeFn);
|
||||||
@ -585,11 +616,11 @@ struct CodeFn
|
|||||||
|
|
||||||
struct CodeModule
|
struct CodeModule
|
||||||
{
|
{
|
||||||
#if GEN_SUPPORT_CPP_MEMBER_FEATURES || 1
|
#if GEN_SUPPORT_CPP_MEMBER_FEATURES
|
||||||
Using_Code( CodeModule );
|
Using_Code( CodeModule );
|
||||||
|
|
||||||
String to_string();
|
String to_string() { return GEN_NS to_string(* this); }
|
||||||
void to_string( String& result );
|
void to_string( String& result ) { return GEN_NS to_string(* this, & result); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Using_CodeOps(CodeModule);
|
Using_CodeOps(CodeModule);
|
||||||
@ -600,11 +631,11 @@ struct CodeModule
|
|||||||
|
|
||||||
struct CodeNS
|
struct CodeNS
|
||||||
{
|
{
|
||||||
#if GEN_SUPPORT_CPP_MEMBER_FEATURES || 1
|
#if GEN_SUPPORT_CPP_MEMBER_FEATURES
|
||||||
Using_Code( CodeNS );
|
Using_Code( CodeNS );
|
||||||
|
|
||||||
String to_string();
|
String to_string() { return GEN_NS to_string(* this); }
|
||||||
void to_string( String& result );
|
void to_string( String& result ) { return GEN_NS to_string(* this, & result); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Using_CodeOps(CodeNS);
|
Using_CodeOps(CodeNS);
|
||||||
@ -615,12 +646,12 @@ struct CodeNS
|
|||||||
|
|
||||||
struct CodeOperator
|
struct CodeOperator
|
||||||
{
|
{
|
||||||
#if GEN_SUPPORT_CPP_MEMBER_FEATURES || 1
|
#if GEN_SUPPORT_CPP_MEMBER_FEATURES
|
||||||
Using_Code( CodeOperator );
|
Using_Code( CodeOperator );
|
||||||
|
|
||||||
String to_string();
|
String to_string() { return GEN_NS to_string(* this); }
|
||||||
void to_string_def( String& result );
|
void to_string_def( String& result ) { return GEN_NS to_string_def(* this, & result); }
|
||||||
void to_string_fwd( String& result );
|
void to_string_fwd( String& result ) { return GEN_NS to_string_fwd(* this, & result); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Using_CodeOps(CodeOperator);
|
Using_CodeOps(CodeOperator);
|
||||||
@ -631,12 +662,12 @@ struct CodeOperator
|
|||||||
|
|
||||||
struct CodeOpCast
|
struct CodeOpCast
|
||||||
{
|
{
|
||||||
#if GEN_SUPPORT_CPP_MEMBER_FEATURES || 1
|
#if GEN_SUPPORT_CPP_MEMBER_FEATURES
|
||||||
Using_Code( CodeOpCast );
|
Using_Code( CodeOpCast );
|
||||||
|
|
||||||
String to_string();
|
String to_string() { return GEN_NS to_string(* this); }
|
||||||
void to_string_def( String& result );
|
void to_string_def( String& result ) { return GEN_NS to_string_def(* this, & result); }
|
||||||
void to_string_fwd( String& result );
|
void to_string_fwd( String& result ) { return GEN_NS to_string_fwd(* this, & result); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Using_CodeOps(CodeOpCast);
|
Using_CodeOps(CodeOpCast);
|
||||||
@ -650,8 +681,8 @@ struct CodePragma
|
|||||||
#if GEN_SUPPORT_CPP_MEMBER_FEATURES || 1
|
#if GEN_SUPPORT_CPP_MEMBER_FEATURES || 1
|
||||||
Using_Code( CodePragma );
|
Using_Code( CodePragma );
|
||||||
|
|
||||||
String to_string();
|
String to_string() { return GEN_NS to_string(* this); }
|
||||||
void to_string( String& result );
|
void to_string( String& result ) { return GEN_NS to_string(* this, & result); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Using_CodeOps( CodePragma );
|
Using_CodeOps( CodePragma );
|
||||||
@ -662,16 +693,16 @@ struct CodePragma
|
|||||||
|
|
||||||
struct CodePreprocessCond
|
struct CodePreprocessCond
|
||||||
{
|
{
|
||||||
#if GEN_SUPPORT_CPP_MEMBER_FEATURES || 1
|
#if GEN_SUPPORT_CPP_MEMBER_FEATURES
|
||||||
Using_Code( CodePreprocessCond );
|
Using_Code( CodePreprocessCond );
|
||||||
|
|
||||||
String to_string();
|
String to_string() { return GEN_NS to_string(* this); }
|
||||||
void to_string_if( String& result );
|
void to_string_if( String& result ) { return GEN_NS to_string_if(* this, & result); }
|
||||||
void to_string_ifdef( String& result );
|
void to_string_ifdef( String& result ) { return GEN_NS to_string_ifdef(* this, & result); }
|
||||||
void to_string_ifndef( String& result );
|
void to_string_ifndef( String& result ) { return GEN_NS to_string_ifndef(* this, & result); }
|
||||||
void to_string_elif( String& result );
|
void to_string_elif( String& result ) { return GEN_NS to_string_elif(* this, & result); }
|
||||||
void to_string_else( String& result );
|
void to_string_else( String& result ) { return GEN_NS to_string_else(* this, & result); }
|
||||||
void to_string_endif( String& result );
|
void to_string_endif( String& result ) { return GEN_NS to_string_endif(* this, & result); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Using_CodeOps( CodePreprocessCond );
|
Using_CodeOps( CodePreprocessCond );
|
||||||
@ -869,8 +900,8 @@ struct CodeTemplate
|
|||||||
#if GEN_SUPPORT_CPP_MEMBER_FEATURES || 1
|
#if GEN_SUPPORT_CPP_MEMBER_FEATURES || 1
|
||||||
Using_Code( CodeTemplate );
|
Using_Code( CodeTemplate );
|
||||||
|
|
||||||
String to_string();
|
String to_string() { return GEN_NS to_string(* this); }
|
||||||
void to_string( String& result );
|
void to_string( String& result ) { return GEN_NS to_string(* this, & result); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Using_CodeOps( CodeTemplate );
|
Using_CodeOps( CodeTemplate );
|
||||||
@ -881,11 +912,11 @@ struct CodeTemplate
|
|||||||
|
|
||||||
struct CodeType
|
struct CodeType
|
||||||
{
|
{
|
||||||
#if GEN_SUPPORT_CPP_MEMBER_FEATURES || 1
|
#if GEN_SUPPORT_CPP_MEMBER_FEATURES
|
||||||
Using_Code( CodeType );
|
Using_Code( CodeType );
|
||||||
|
|
||||||
String to_string();
|
String to_string() { return GEN_NS to_string(* this); }
|
||||||
void to_string( String& result );
|
void to_string( String& result ) { return GEN_NS to_string(* this, & result); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Using_CodeOps( CodeType );
|
Using_CodeOps( CodeType );
|
||||||
|
@ -145,7 +145,7 @@ void define_constants()
|
|||||||
|
|
||||||
# define def_constant_code_type( Type_ ) \
|
# define def_constant_code_type( Type_ ) \
|
||||||
t_##Type_ = def_type( name(Type_) ); \
|
t_##Type_ = def_type( name(Type_) ); \
|
||||||
t_##Type_.set_global();
|
set_global(t_##Type_);
|
||||||
|
|
||||||
def_constant_code_type( auto );
|
def_constant_code_type( auto );
|
||||||
def_constant_code_type( void );
|
def_constant_code_type( void );
|
||||||
|
@ -36,14 +36,14 @@ OpValidateResult operator__validate( OperatorT op, CodeParam params_code, CodeTy
|
|||||||
}
|
}
|
||||||
|
|
||||||
# define check_param_eq_ret() \
|
# define check_param_eq_ret() \
|
||||||
if ( ! is_member_symbol && ! params_code->ValueType.is_equal( ret_type) ) \
|
if ( ! is_member_symbol && ! is_equal(params_code->ValueType, ret_type) ) \
|
||||||
{ \
|
{ \
|
||||||
log_failure("gen::def_operator: operator%s requires first parameter to equal return type\n" \
|
log_failure("gen::def_operator: operator%s requires first parameter to equal return type\n" \
|
||||||
"param types: %s\n" \
|
"param types: %s\n" \
|
||||||
"return type: %s", \
|
"return type: %s", \
|
||||||
to_str(op).Ptr, \
|
to_str(op).Ptr, \
|
||||||
debug_str(params_code), \
|
debug_str(params_code), \
|
||||||
ret_type.debug_str() \
|
debug_str(ret_type) \
|
||||||
); \
|
); \
|
||||||
return OpValidateResult::Fail; \
|
return OpValidateResult::Fail; \
|
||||||
}
|
}
|
||||||
@ -56,7 +56,7 @@ OpValidateResult operator__validate( OperatorT op, CodeParam params_code, CodeTy
|
|||||||
|
|
||||||
if ( ret_type->Type != ECode::Typename )
|
if ( ret_type->Type != ECode::Typename )
|
||||||
{
|
{
|
||||||
log_failure("gen::def_operator: ret_type is not of typename type - %s", ret_type.debug_str());
|
log_failure("gen::def_operator: ret_type is not of typename type - %s", debug_str(ret_type));
|
||||||
return OpValidateResult::Fail;
|
return OpValidateResult::Fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,7 +127,7 @@ OpValidateResult operator__validate( OperatorT op, CodeParam params_code, CodeTy
|
|||||||
switch ( params_code->NumEntries )
|
switch ( params_code->NumEntries )
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
if ( params_code->ValueType.is_equal( t_int ) )
|
if ( is_equal(params_code->ValueType, t_int ) )
|
||||||
is_member_symbol = true;
|
is_member_symbol = true;
|
||||||
|
|
||||||
else
|
else
|
||||||
@ -170,14 +170,14 @@ OpValidateResult operator__validate( OperatorT op, CodeParam params_code, CodeTy
|
|||||||
return OpValidateResult::Fail;
|
return OpValidateResult::Fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( params_code->ValueType.is_equal( ret_type ) )
|
if ( is_equal(params_code->ValueType, ret_type ) )
|
||||||
{
|
{
|
||||||
log_failure("gen::def_operator: "
|
log_failure("gen::def_operator: "
|
||||||
"operator%s is non-member symbol yet first paramter does not equal return type\n"
|
"operator%s is non-member symbol yet first paramter does not equal return type\n"
|
||||||
"param type: %s\n"
|
"param type: %s\n"
|
||||||
"return type: %s\n"
|
"return type: %s\n"
|
||||||
, debug_str(params_code)
|
, debug_str(params_code)
|
||||||
, ret_type.debug_str()
|
, debug_str(ret_type)
|
||||||
);
|
);
|
||||||
return OpValidateResult::Fail;
|
return OpValidateResult::Fail;
|
||||||
}
|
}
|
||||||
@ -247,14 +247,14 @@ OpValidateResult operator__validate( OperatorT op, CodeParam params_code, CodeTy
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
if ( ! params_code->ValueType.is_equal( ret_type ) )
|
if ( ! is_equal(params_code->ValueType, ret_type ) )
|
||||||
{
|
{
|
||||||
log_failure("gen::def_operator: "
|
log_failure("gen::def_operator: "
|
||||||
"operator%s is non-member symbol yet first paramter does not equal return type\n"
|
"operator%s is non-member symbol yet first paramter does not equal return type\n"
|
||||||
"param type: %s\n"
|
"param type: %s\n"
|
||||||
"return type: %s\n"
|
"return type: %s\n"
|
||||||
, debug_str(params_code)
|
, debug_str(params_code)
|
||||||
, ret_type.debug_str()
|
, debug_str(ret_type)
|
||||||
);
|
);
|
||||||
return OpValidateResult::Fail;
|
return OpValidateResult::Fail;
|
||||||
}
|
}
|
||||||
@ -291,11 +291,11 @@ OpValidateResult operator__validate( OperatorT op, CodeParam params_code, CodeTy
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ! ret_type.is_equal( t_bool ))
|
if ( ! is_equal(ret_type, t_bool ))
|
||||||
{
|
{
|
||||||
log_failure("gen::def_operator: operator%s return type must be of type bool - %s"
|
log_failure("gen::def_operator: operator%s return type must be of type bool - %s"
|
||||||
, to_str(op)
|
, to_str(op)
|
||||||
, ret_type.debug_str()
|
, debug_str(ret_type)
|
||||||
);
|
);
|
||||||
return OpValidateResult::Fail;
|
return OpValidateResult::Fail;
|
||||||
}
|
}
|
||||||
@ -561,7 +561,7 @@ CodeClass def_class( StrC name
|
|||||||
|
|
||||||
if ( parent && ( parent->Type != Class && parent->Type != Struct && parent->Type != Typename && parent->Type != Untyped ) )
|
if ( parent && ( parent->Type != Class && parent->Type != Struct && parent->Type != Typename && parent->Type != Untyped ) )
|
||||||
{
|
{
|
||||||
log_failure( "gen::def_class: parent provided is not type 'Class', 'Struct', 'Typeanme', or 'Untyped': %s", parent.debug_str() );
|
log_failure( "gen::def_class: parent provided is not type 'Class', 'Struct', 'Typeanme', or 'Untyped': %s", debug_str(parent) );
|
||||||
return InvalidCode;
|
return InvalidCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -691,7 +691,7 @@ CodeEnum def_enum( StrC name
|
|||||||
|
|
||||||
if ( type && type->Type != Typename )
|
if ( type && type->Type != Typename )
|
||||||
{
|
{
|
||||||
log_failure( "gen::def_enum: enum underlying type provided was not of type Typename: %s", type.debug_str() );
|
log_failure( "gen::def_enum: enum underlying type provided was not of type Typename: %s", debug_str(type) );
|
||||||
return InvalidCode;
|
return InvalidCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1045,7 +1045,7 @@ CodeOpCast def_operator_cast( CodeType type, Code body, CodeSpecifiers const_spe
|
|||||||
|
|
||||||
if ( type->Type != Typename )
|
if ( type->Type != Typename )
|
||||||
{
|
{
|
||||||
log_failure( "gen::def_operator_cast: type is not a typename - %s", type.debug_str() );
|
log_failure( "gen::def_operator_cast: type is not a typename - %s", debug_str(type) );
|
||||||
return InvalidCode;
|
return InvalidCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1476,7 +1476,7 @@ CodeVar def_variable( CodeType type, StrC name, Code value
|
|||||||
|
|
||||||
if ( type->Type != ECode::Typename )
|
if ( type->Type != ECode::Typename )
|
||||||
{
|
{
|
||||||
log_failure( "gen::def_variable: type was not a Typename - %s", type.debug_str() );
|
log_failure( "gen::def_variable: type was not a Typename - %s", debug_str(type) );
|
||||||
return InvalidCode;
|
return InvalidCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user