Updated generated ast_inlines.hpp so that operator defs have the inline explicit

* Added support for parsing/serializing specifiers for OpCast roughtly.. Doesn't have constraints on what specifiers beyond whats expected in global nspace scope..
* Minor adjustments to hashtable to avoid UE compile errors
* Make sure scanner.cpp is being made by bootstrap
This commit is contained in:
Edward R. Gonzalez 2024-10-25 04:08:20 -04:00
parent 0542204b35
commit 33f992ef56
8 changed files with 136 additions and 125 deletions

View File

@ -1,3 +1,5 @@
#ifdef GEN_INTELLISENSE_DIRECTIVES #ifdef GEN_INTELLISENSE_DIRECTIVES
# include "scanner.hpp" # include "scanner.hpp"
#endif #endif

View File

@ -283,7 +283,7 @@ int gen_main()
} }
// gen_scanner.cpp // gen_scanner.cpp
if (0) if (1)
{ {
Code parsing = scan_file( "dependencies/parsing.cpp" ); Code parsing = scan_file( "dependencies/parsing.cpp" );
Code scanner = scan_file( "auxillary/scanner.cpp" ); Code scanner = scan_file( "auxillary/scanner.cpp" );
@ -294,7 +294,7 @@ int gen_main()
src.print( def_include( txt("gen.scanner.hpp") ) ); src.print( def_include( txt("gen.scanner.hpp") ) );
src.print_fmt( "\nGEN_NS_BEGIN\n" ); src.print_fmt( "\nGEN_NS_BEGIN\n" );
src.print( parsing ); src.print( parsing );
src.print( scanner ); // src.print( scanner );
src.print_fmt( "GEN_NS_END\n" ); src.print_fmt( "GEN_NS_END\n" );
src.write(); src.write();
} }

View File

@ -764,7 +764,14 @@ void CodeOpCast::to_string_def( String& result )
{ {
if ( ast->Specs ) if ( ast->Specs )
{ {
// TODO : Add support for specifies before the operator keyword for ( SpecifierT spec : ast->Specs )
{
if ( ! ESpecifier::is_trailing( spec ) )
{
StrC spec_str = ESpecifier::to_str( spec );
result.append_fmt( "%*s ", spec_str.Len, spec_str.Ptr );
}
}
if ( ast->Name && ast->Name.length() ) if ( ast->Name && ast->Name.length() )
result.append_fmt( "%Soperator %S()", ast->Name, ast->ValueType.to_string() ); result.append_fmt( "%Soperator %S()", ast->Name, ast->ValueType.to_string() );
@ -794,7 +801,14 @@ void CodeOpCast::to_string_fwd( String& result )
{ {
if ( ast->Specs ) if ( ast->Specs )
{ {
// TODO : Add support for specifies before the operator keyword for ( SpecifierT spec : ast->Specs )
{
if ( ! ESpecifier::is_trailing( spec ) )
{
StrC spec_str = ESpecifier::to_str( spec );
result.append_fmt( "%*s ", spec_str.Len, spec_str.Ptr );
}
}
result.append_fmt( "operator %S()", ast->ValueType.to_string() ); result.append_fmt( "operator %S()", ast->ValueType.to_string() );

View File

@ -70,7 +70,7 @@ inline bool Code::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
Code::operator bool() inline Code::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -138,7 +138,7 @@ inline bool CodeBody::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeBody::operator bool() inline CodeBody::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -206,7 +206,7 @@ inline bool CodeAttributes::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeAttributes::operator bool() inline CodeAttributes::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -216,7 +216,7 @@ inline AST* CodeAttributes::raw()
return rcast( AST*, ast ); return rcast( AST*, ast );
} }
CodeAttributes::operator Code() inline CodeAttributes::operator Code()
{ {
return *rcast( Code*, this ); return *rcast( Code*, this );
} }
@ -294,7 +294,7 @@ inline bool CodeComment::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeComment::operator bool() inline CodeComment::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -304,7 +304,7 @@ inline AST* CodeComment::raw()
return rcast( AST*, ast ); return rcast( AST*, ast );
} }
CodeComment::operator Code() inline CodeComment::operator Code()
{ {
return *rcast( Code*, this ); return *rcast( Code*, this );
} }
@ -382,7 +382,7 @@ inline bool CodeConstructor::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeConstructor::operator bool() inline CodeConstructor::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -392,7 +392,7 @@ inline AST* CodeConstructor::raw()
return rcast( AST*, ast ); return rcast( AST*, ast );
} }
CodeConstructor::operator Code() inline CodeConstructor::operator Code()
{ {
return *rcast( Code*, this ); return *rcast( Code*, this );
} }
@ -470,7 +470,7 @@ inline bool CodeClass::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeClass::operator bool() inline CodeClass::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -538,7 +538,7 @@ inline bool CodeDefine::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeDefine::operator bool() inline CodeDefine::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -548,7 +548,7 @@ inline AST* CodeDefine::raw()
return rcast( AST*, ast ); return rcast( AST*, ast );
} }
CodeDefine::operator Code() inline CodeDefine::operator Code()
{ {
return *rcast( Code*, this ); return *rcast( Code*, this );
} }
@ -626,7 +626,7 @@ inline bool CodeDestructor::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeDestructor::operator bool() inline CodeDestructor::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -636,7 +636,7 @@ inline AST* CodeDestructor::raw()
return rcast( AST*, ast ); return rcast( AST*, ast );
} }
CodeDestructor::operator Code() inline CodeDestructor::operator Code()
{ {
return *rcast( Code*, this ); return *rcast( Code*, this );
} }
@ -714,7 +714,7 @@ inline bool CodeEnum::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeEnum::operator bool() inline CodeEnum::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -724,7 +724,7 @@ inline AST* CodeEnum::raw()
return rcast( AST*, ast ); return rcast( AST*, ast );
} }
CodeEnum::operator Code() inline CodeEnum::operator Code()
{ {
return *rcast( Code*, this ); return *rcast( Code*, this );
} }
@ -802,7 +802,7 @@ inline bool CodeExec::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeExec::operator bool() inline CodeExec::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -812,7 +812,7 @@ inline AST* CodeExec::raw()
return rcast( AST*, ast ); return rcast( AST*, ast );
} }
CodeExec::operator Code() inline CodeExec::operator Code()
{ {
return *rcast( Code*, this ); return *rcast( Code*, this );
} }
@ -890,7 +890,7 @@ inline bool CodeExtern::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeExtern::operator bool() inline CodeExtern::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -900,7 +900,7 @@ inline AST* CodeExtern::raw()
return rcast( AST*, ast ); return rcast( AST*, ast );
} }
CodeExtern::operator Code() inline CodeExtern::operator Code()
{ {
return *rcast( Code*, this ); return *rcast( Code*, this );
} }
@ -978,7 +978,7 @@ inline bool CodeFriend::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeFriend::operator bool() inline CodeFriend::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -988,7 +988,7 @@ inline AST* CodeFriend::raw()
return rcast( AST*, ast ); return rcast( AST*, ast );
} }
CodeFriend::operator Code() inline CodeFriend::operator Code()
{ {
return *rcast( Code*, this ); return *rcast( Code*, this );
} }
@ -1066,7 +1066,7 @@ inline bool CodeFn::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeFn::operator bool() inline CodeFn::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -1076,7 +1076,7 @@ inline AST* CodeFn::raw()
return rcast( AST*, ast ); return rcast( AST*, ast );
} }
CodeFn::operator Code() inline CodeFn::operator Code()
{ {
return *rcast( Code*, this ); return *rcast( Code*, this );
} }
@ -1154,7 +1154,7 @@ inline bool CodeInclude::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeInclude::operator bool() inline CodeInclude::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -1164,7 +1164,7 @@ inline AST* CodeInclude::raw()
return rcast( AST*, ast ); return rcast( AST*, ast );
} }
CodeInclude::operator Code() inline CodeInclude::operator Code()
{ {
return *rcast( Code*, this ); return *rcast( Code*, this );
} }
@ -1242,7 +1242,7 @@ inline bool CodeModule::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeModule::operator bool() inline CodeModule::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -1252,7 +1252,7 @@ inline AST* CodeModule::raw()
return rcast( AST*, ast ); return rcast( AST*, ast );
} }
CodeModule::operator Code() inline CodeModule::operator Code()
{ {
return *rcast( Code*, this ); return *rcast( Code*, this );
} }
@ -1330,7 +1330,7 @@ inline bool CodeNS::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeNS::operator bool() inline CodeNS::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -1340,7 +1340,7 @@ inline AST* CodeNS::raw()
return rcast( AST*, ast ); return rcast( AST*, ast );
} }
CodeNS::operator Code() inline CodeNS::operator Code()
{ {
return *rcast( Code*, this ); return *rcast( Code*, this );
} }
@ -1418,7 +1418,7 @@ inline bool CodeOperator::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeOperator::operator bool() inline CodeOperator::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -1428,7 +1428,7 @@ inline AST* CodeOperator::raw()
return rcast( AST*, ast ); return rcast( AST*, ast );
} }
CodeOperator::operator Code() inline CodeOperator::operator Code()
{ {
return *rcast( Code*, this ); return *rcast( Code*, this );
} }
@ -1506,7 +1506,7 @@ inline bool CodeOpCast::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeOpCast::operator bool() inline CodeOpCast::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -1516,7 +1516,7 @@ inline AST* CodeOpCast::raw()
return rcast( AST*, ast ); return rcast( AST*, ast );
} }
CodeOpCast::operator Code() inline CodeOpCast::operator Code()
{ {
return *rcast( Code*, this ); return *rcast( Code*, this );
} }
@ -1594,7 +1594,7 @@ inline bool CodeParam::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeParam::operator bool() inline CodeParam::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -1662,7 +1662,7 @@ inline bool CodePragma::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodePragma::operator bool() inline CodePragma::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -1672,7 +1672,7 @@ inline AST* CodePragma::raw()
return rcast( AST*, ast ); return rcast( AST*, ast );
} }
CodePragma::operator Code() inline CodePragma::operator Code()
{ {
return *rcast( Code*, this ); return *rcast( Code*, this );
} }
@ -1750,7 +1750,7 @@ inline bool CodePreprocessCond::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodePreprocessCond::operator bool() inline CodePreprocessCond::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -1760,7 +1760,7 @@ inline AST* CodePreprocessCond::raw()
return rcast( AST*, ast ); return rcast( AST*, ast );
} }
CodePreprocessCond::operator Code() inline CodePreprocessCond::operator Code()
{ {
return *rcast( Code*, this ); return *rcast( Code*, this );
} }
@ -1838,7 +1838,7 @@ inline bool CodeSpecifiers::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeSpecifiers::operator bool() inline CodeSpecifiers::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -1906,7 +1906,7 @@ inline bool CodeStruct::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeStruct::operator bool() inline CodeStruct::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -1974,7 +1974,7 @@ inline bool CodeTemplate::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeTemplate::operator bool() inline CodeTemplate::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -1984,7 +1984,7 @@ inline AST* CodeTemplate::raw()
return rcast( AST*, ast ); return rcast( AST*, ast );
} }
CodeTemplate::operator Code() inline CodeTemplate::operator Code()
{ {
return *rcast( Code*, this ); return *rcast( Code*, this );
} }
@ -2062,7 +2062,7 @@ inline bool CodeType::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeType::operator bool() inline CodeType::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -2072,7 +2072,7 @@ inline AST* CodeType::raw()
return rcast( AST*, ast ); return rcast( AST*, ast );
} }
CodeType::operator Code() inline CodeType::operator Code()
{ {
return *rcast( Code*, this ); return *rcast( Code*, this );
} }
@ -2150,7 +2150,7 @@ inline bool CodeTypedef::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeTypedef::operator bool() inline CodeTypedef::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -2160,7 +2160,7 @@ inline AST* CodeTypedef::raw()
return rcast( AST*, ast ); return rcast( AST*, ast );
} }
CodeTypedef::operator Code() inline CodeTypedef::operator Code()
{ {
return *rcast( Code*, this ); return *rcast( Code*, this );
} }
@ -2238,7 +2238,7 @@ inline bool CodeUnion::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeUnion::operator bool() inline CodeUnion::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -2248,7 +2248,7 @@ inline AST* CodeUnion::raw()
return rcast( AST*, ast ); return rcast( AST*, ast );
} }
CodeUnion::operator Code() inline CodeUnion::operator Code()
{ {
return *rcast( Code*, this ); return *rcast( Code*, this );
} }
@ -2326,7 +2326,7 @@ inline bool CodeUsing::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeUsing::operator bool() inline CodeUsing::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -2336,7 +2336,7 @@ inline AST* CodeUsing::raw()
return rcast( AST*, ast ); return rcast( AST*, ast );
} }
CodeUsing::operator Code() inline CodeUsing::operator Code()
{ {
return *rcast( Code*, this ); return *rcast( Code*, this );
} }
@ -2414,7 +2414,7 @@ inline bool CodeVar::operator!=( Code other )
return (AST*)ast != other.ast; return (AST*)ast != other.ast;
} }
CodeVar::operator bool() inline CodeVar::operator bool()
{ {
return ast != nullptr; return ast != nullptr;
} }
@ -2424,7 +2424,7 @@ inline AST* CodeVar::raw()
return rcast( AST*, ast ); return rcast( AST*, ast );
} }
CodeVar::operator Code() inline CodeVar::operator Code()
{ {
return *rcast( Code*, this ); return *rcast( Code*, this );
} }
@ -2443,282 +2443,282 @@ inline AST_Var* CodeVar::operator->()
#pragma region generated AST/Code cast implementation #pragma region generated AST/Code cast implementation
AST::operator CodeBody() inline AST::operator CodeBody()
{ {
return { rcast( AST_Body*, this ) }; return { rcast( AST_Body*, this ) };
} }
Code::operator CodeBody() const inline Code::operator CodeBody() const
{ {
return { (AST_Body*)ast }; return { (AST_Body*)ast };
} }
AST::operator CodeAttributes() inline AST::operator CodeAttributes()
{ {
return { rcast( AST_Attributes*, this ) }; return { rcast( AST_Attributes*, this ) };
} }
Code::operator CodeAttributes() const inline Code::operator CodeAttributes() const
{ {
return { (AST_Attributes*)ast }; return { (AST_Attributes*)ast };
} }
AST::operator CodeComment() inline AST::operator CodeComment()
{ {
return { rcast( AST_Comment*, this ) }; return { rcast( AST_Comment*, this ) };
} }
Code::operator CodeComment() const inline Code::operator CodeComment() const
{ {
return { (AST_Comment*)ast }; return { (AST_Comment*)ast };
} }
AST::operator CodeConstructor() inline AST::operator CodeConstructor()
{ {
return { rcast( AST_Constructor*, this ) }; return { rcast( AST_Constructor*, this ) };
} }
Code::operator CodeConstructor() const inline Code::operator CodeConstructor() const
{ {
return { (AST_Constructor*)ast }; return { (AST_Constructor*)ast };
} }
AST::operator CodeClass() inline AST::operator CodeClass()
{ {
return { rcast( AST_Class*, this ) }; return { rcast( AST_Class*, this ) };
} }
Code::operator CodeClass() const inline Code::operator CodeClass() const
{ {
return { (AST_Class*)ast }; return { (AST_Class*)ast };
} }
AST::operator CodeDefine() inline AST::operator CodeDefine()
{ {
return { rcast( AST_Define*, this ) }; return { rcast( AST_Define*, this ) };
} }
Code::operator CodeDefine() const inline Code::operator CodeDefine() const
{ {
return { (AST_Define*)ast }; return { (AST_Define*)ast };
} }
AST::operator CodeDestructor() inline AST::operator CodeDestructor()
{ {
return { rcast( AST_Destructor*, this ) }; return { rcast( AST_Destructor*, this ) };
} }
Code::operator CodeDestructor() const inline Code::operator CodeDestructor() const
{ {
return { (AST_Destructor*)ast }; return { (AST_Destructor*)ast };
} }
AST::operator CodeEnum() inline AST::operator CodeEnum()
{ {
return { rcast( AST_Enum*, this ) }; return { rcast( AST_Enum*, this ) };
} }
Code::operator CodeEnum() const inline Code::operator CodeEnum() const
{ {
return { (AST_Enum*)ast }; return { (AST_Enum*)ast };
} }
AST::operator CodeExec() inline AST::operator CodeExec()
{ {
return { rcast( AST_Exec*, this ) }; return { rcast( AST_Exec*, this ) };
} }
Code::operator CodeExec() const inline Code::operator CodeExec() const
{ {
return { (AST_Exec*)ast }; return { (AST_Exec*)ast };
} }
AST::operator CodeExtern() inline AST::operator CodeExtern()
{ {
return { rcast( AST_Extern*, this ) }; return { rcast( AST_Extern*, this ) };
} }
Code::operator CodeExtern() const inline Code::operator CodeExtern() const
{ {
return { (AST_Extern*)ast }; return { (AST_Extern*)ast };
} }
AST::operator CodeFriend() inline AST::operator CodeFriend()
{ {
return { rcast( AST_Friend*, this ) }; return { rcast( AST_Friend*, this ) };
} }
Code::operator CodeFriend() const inline Code::operator CodeFriend() const
{ {
return { (AST_Friend*)ast }; return { (AST_Friend*)ast };
} }
AST::operator CodeFn() inline AST::operator CodeFn()
{ {
return { rcast( AST_Fn*, this ) }; return { rcast( AST_Fn*, this ) };
} }
Code::operator CodeFn() const inline Code::operator CodeFn() const
{ {
return { (AST_Fn*)ast }; return { (AST_Fn*)ast };
} }
AST::operator CodeInclude() inline AST::operator CodeInclude()
{ {
return { rcast( AST_Include*, this ) }; return { rcast( AST_Include*, this ) };
} }
Code::operator CodeInclude() const inline Code::operator CodeInclude() const
{ {
return { (AST_Include*)ast }; return { (AST_Include*)ast };
} }
AST::operator CodeModule() inline AST::operator CodeModule()
{ {
return { rcast( AST_Module*, this ) }; return { rcast( AST_Module*, this ) };
} }
Code::operator CodeModule() const inline Code::operator CodeModule() const
{ {
return { (AST_Module*)ast }; return { (AST_Module*)ast };
} }
AST::operator CodeNS() inline AST::operator CodeNS()
{ {
return { rcast( AST_NS*, this ) }; return { rcast( AST_NS*, this ) };
} }
Code::operator CodeNS() const inline Code::operator CodeNS() const
{ {
return { (AST_NS*)ast }; return { (AST_NS*)ast };
} }
AST::operator CodeOperator() inline AST::operator CodeOperator()
{ {
return { rcast( AST_Operator*, this ) }; return { rcast( AST_Operator*, this ) };
} }
Code::operator CodeOperator() const inline Code::operator CodeOperator() const
{ {
return { (AST_Operator*)ast }; return { (AST_Operator*)ast };
} }
AST::operator CodeOpCast() inline AST::operator CodeOpCast()
{ {
return { rcast( AST_OpCast*, this ) }; return { rcast( AST_OpCast*, this ) };
} }
Code::operator CodeOpCast() const inline Code::operator CodeOpCast() const
{ {
return { (AST_OpCast*)ast }; return { (AST_OpCast*)ast };
} }
AST::operator CodeParam() inline AST::operator CodeParam()
{ {
return { rcast( AST_Param*, this ) }; return { rcast( AST_Param*, this ) };
} }
Code::operator CodeParam() const inline Code::operator CodeParam() const
{ {
return { (AST_Param*)ast }; return { (AST_Param*)ast };
} }
AST::operator CodePragma() inline AST::operator CodePragma()
{ {
return { rcast( AST_Pragma*, this ) }; return { rcast( AST_Pragma*, this ) };
} }
Code::operator CodePragma() const inline Code::operator CodePragma() const
{ {
return { (AST_Pragma*)ast }; return { (AST_Pragma*)ast };
} }
AST::operator CodePreprocessCond() inline AST::operator CodePreprocessCond()
{ {
return { rcast( AST_PreprocessCond*, this ) }; return { rcast( AST_PreprocessCond*, this ) };
} }
Code::operator CodePreprocessCond() const inline Code::operator CodePreprocessCond() const
{ {
return { (AST_PreprocessCond*)ast }; return { (AST_PreprocessCond*)ast };
} }
AST::operator CodeSpecifiers() inline AST::operator CodeSpecifiers()
{ {
return { rcast( AST_Specifiers*, this ) }; return { rcast( AST_Specifiers*, this ) };
} }
Code::operator CodeSpecifiers() const inline Code::operator CodeSpecifiers() const
{ {
return { (AST_Specifiers*)ast }; return { (AST_Specifiers*)ast };
} }
AST::operator CodeStruct() inline AST::operator CodeStruct()
{ {
return { rcast( AST_Struct*, this ) }; return { rcast( AST_Struct*, this ) };
} }
Code::operator CodeStruct() const inline Code::operator CodeStruct() const
{ {
return { (AST_Struct*)ast }; return { (AST_Struct*)ast };
} }
AST::operator CodeTemplate() inline AST::operator CodeTemplate()
{ {
return { rcast( AST_Template*, this ) }; return { rcast( AST_Template*, this ) };
} }
Code::operator CodeTemplate() const inline Code::operator CodeTemplate() const
{ {
return { (AST_Template*)ast }; return { (AST_Template*)ast };
} }
AST::operator CodeType() inline AST::operator CodeType()
{ {
return { rcast( AST_Type*, this ) }; return { rcast( AST_Type*, this ) };
} }
Code::operator CodeType() const inline Code::operator CodeType() const
{ {
return { (AST_Type*)ast }; return { (AST_Type*)ast };
} }
AST::operator CodeTypedef() inline AST::operator CodeTypedef()
{ {
return { rcast( AST_Typedef*, this ) }; return { rcast( AST_Typedef*, this ) };
} }
Code::operator CodeTypedef() const inline Code::operator CodeTypedef() const
{ {
return { (AST_Typedef*)ast }; return { (AST_Typedef*)ast };
} }
AST::operator CodeUnion() inline AST::operator CodeUnion()
{ {
return { rcast( AST_Union*, this ) }; return { rcast( AST_Union*, this ) };
} }
Code::operator CodeUnion() const inline Code::operator CodeUnion() const
{ {
return { (AST_Union*)ast }; return { (AST_Union*)ast };
} }
AST::operator CodeUsing() inline AST::operator CodeUsing()
{ {
return { rcast( AST_Using*, this ) }; return { rcast( AST_Using*, this ) };
} }
Code::operator CodeUsing() const inline Code::operator CodeUsing() const
{ {
return { (AST_Using*)ast }; return { (AST_Using*)ast };
} }
AST::operator CodeVar() inline AST::operator CodeVar()
{ {
return { rcast( AST_Var*, this ) }; return { rcast( AST_Var*, this ) };
} }
Code::operator CodeVar() const inline Code::operator CodeVar() const
{ {
return { (AST_Var*)ast }; return { (AST_Var*)ast };
} }

View File

@ -1850,7 +1850,7 @@ CodeBody parse_global_nspace( CodeT which )
if ( found_operator_cast_outside_class_implmentation ) if ( found_operator_cast_outside_class_implmentation )
{ {
member = parse_operator_cast(); member = parse_operator_cast( specifiers );
// <Attributes> <Specifiers> <Name>::operator <Type>() { ... } // <Attributes> <Specifiers> <Name>::operator <Type>() { ... }
break; break;
} }
@ -4080,8 +4080,6 @@ CodeOpCast parse_operator_cast( CodeSpecifiers specifiers )
{ {
push_scope(); push_scope();
// TODO : Specifiers attributed to the cast
// Operator's namespace if not within same class. // Operator's namespace if not within same class.
Token name = NullToken; Token name = NullToken;
if ( check( TokType::Identifier ) ) if ( check( TokType::Identifier ) )

View File

@ -9,4 +9,3 @@
#ifndef GEN_ROLL_OWN_DEPENDENCIES #ifndef GEN_ROLL_OWN_DEPENDENCIES
# include "gen.dep.cpp" # include "gen.dep.cpp"
#endif #endif

View File

@ -399,7 +399,7 @@ struct HashTable
sw last_added_index; sw last_added_index;
HashTable<Type> new_ht = init_reserve( Hashes.get_header()->Allocator, new_num ); HashTable<Type> new_ht = init_reserve( Hashes.get_header()->Allocator, new_num );
for ( sw idx = 0; idx < Entries.num(); ++idx ) for ( sw idx = 0; idx < sw(Entries.num()); ++idx )
{ {
FindResult find_result; FindResult find_result;
@ -424,13 +424,13 @@ struct HashTable
{ {
sw idx; sw idx;
for ( idx = 0; idx < Entries.num(); idx++ ) for ( idx = 0; idx < sw(Entries.num()); idx++ )
Entries[ idx ].Next = -1; Entries[ idx ].Next = -1;
for ( idx = 0; idx < Hashes.num(); idx++ ) for ( idx = 0; idx < sw(Hashes.num()); idx++ )
Hashes[ idx ] = -1; Hashes[ idx ] = -1;
for ( idx = 0; idx < Entries.num(); idx++ ) for ( idx = 0; idx < sw(Entries.num()); idx++ )
{ {
Entry* entry; Entry* entry;
FindResult find_result; FindResult find_result;
@ -496,7 +496,7 @@ struct HashTable
sw slot( u64 key ) sw slot( u64 key )
{ {
for ( sw idx = 0; idx < Hashes.num(); ++idx ) for ( sw idx = 0; idx < sw(Hashes.num()); ++idx )
if ( Hashes[ idx ] == key ) if ( Hashes[ idx ] == key )
return idx; return idx;

View File

@ -500,13 +500,11 @@ CodeBody gen_ast_inlines()
impl_code_var. append( parse_global_body( token_fmt( "typename", StrC name(Var), codetype_impl_tmpl ))); impl_code_var. append( parse_global_body( token_fmt( "typename", StrC name(Var), codetype_impl_tmpl )));
char const* cast_tmpl = stringize( char const* cast_tmpl = stringize(
inline inline AST::operator Code<typename>()
AST::operator Code<typename>()
{ {
return { rcast( AST_<typename>*, this ) }; return { rcast( AST_<typename>*, this ) };
} }
inline inline Code::operator Code<typename>() const
Code::operator Code<typename>() const
{ {
return { (AST_<typename>*) ast }; return { (AST_<typename>*) ast };
} }