diff --git a/gen_c_library/c_library.cpp b/gen_c_library/c_library.cpp index 79baf1c..0f9c3bd 100644 --- a/gen_c_library/c_library.cpp +++ b/gen_c_library/c_library.cpp @@ -136,7 +136,7 @@ int gen_main() case ECode::Using: { log_fmt("REPLACE THIS MANUALLY: %S\n", entry->Name); - CodeUsing using_ver = entry.code_cast(); + CodeUsing using_ver = cast(CodeUsing, entry); CodeTypedef typedef_ver = def_typedef(using_ver->Name, using_ver->UnderlyingType); memory.append(typedef_ver); @@ -144,7 +144,7 @@ int gen_main() break; case ECode::Function_Fwd: { - CodeFn fn = entry.code_cast(); + CodeFn fn = cast(CodeFn, entry); if ( fn->Name.is_equal(txt("free")) ) { fn->Name = get_cached_string(txt("gen_free_ptr")); @@ -154,7 +154,7 @@ int gen_main() break; case ECode::Function: { - CodeFn fn = entry.code_cast(); + CodeFn fn = cast(CodeFn, entry); s32 constexpr_found = fn->Specs.remove( ESpecifier::Constexpr ); if (constexpr_found > -1) { log_fmt("Found constexpr: %S\n", entry->to_string()); @@ -169,7 +169,7 @@ int gen_main() break; case ECode::Template: { - CodeTemplate tmpl = entry.code_cast(); + CodeTemplate tmpl = cast(CodeTemplate, entry); if ( tmpl->Declaration->Name.contains(txt("swap"))) { CodeBody macro_swap = parse_global_body( txt(R"( diff --git a/gen_c_library/components/misc.hpp b/gen_c_library/components/misc.hpp index c323713..b383041 100644 --- a/gen_c_library/components/misc.hpp +++ b/gen_c_library/components/misc.hpp @@ -8,7 +8,7 @@ using SwapContentProc = CodeBody(void); b32 ignore_preprocess_cond_block( StrC cond_sig, Code& entry_iter, CodeBody& body ) { b32 found = false; - CodePreprocessCond cond = entry_iter.code_cast(); + CodePreprocessCond cond = cast(CodePreprocessCond, entry_iter); if ( cond->Content.contains(cond_sig) ) { log_fmt("Preprocess cond found: %S\n", cond->Content); @@ -44,7 +44,7 @@ b32 ignore_preprocess_cond_block( StrC cond_sig, Code& entry_iter, CodeBody& bod bool swap_pragma_region_implementation( StrC region_name, SwapContentProc* swap_content, Code& entry_iter, CodeBody& body ) { bool found = false; - CodePragma possible_region = entry_iter.code_cast(); + CodePragma possible_region = cast(CodePragma, entry_iter); String region_sig = string_fmt_buf(GlobalAllocator, "region %s", region_name.Ptr); String endregion_sig = string_fmt_buf(GlobalAllocator, "endregion %s", region_name.Ptr); @@ -58,7 +58,7 @@ bool swap_pragma_region_implementation( StrC region_name, SwapContentProc* swap_ (entry_iter->Type) { case ECode::Preprocess_Pragma: { - CodePragma possible_end_region = entry_iter.code_cast(); + CodePragma possible_end_region = cast(CodePragma, entry_iter); if ( possible_end_region->Content.contains(endregion_sig) ) { // body.append(possible_end_region); continue_for = false; diff --git a/project/components/ast.cpp b/project/components/ast.cpp index 3d20a7b..6948866 100644 --- a/project/components/ast.cpp +++ b/project/components/ast.cpp @@ -1159,12 +1159,12 @@ bool AST::validate_body() #define CheckEntries( Unallowed_Types ) \ do \ { \ - for ( Code entry : code_cast() ) \ + for ( Code entry : code_cast() ) \ { \ switch ( entry->Type ) \ { \ Unallowed_Types \ - log_failure( "AST::validate_body: Invalid entry in body %s", entry.debug_str() ); \ + log_failure( "AST::validate_body: Invalid entry in body %s", GEN_NS debug_str(entry) ); \ return false; \ } \ } \ @@ -1181,7 +1181,7 @@ bool AST::validate_body() { if ( entry->Type != Untyped ) { - log_failure( "AST::validate_body: Invalid entry in enum body (needs to be untyped or comment) %s", entry.debug_str() ); + log_failure( "AST::validate_body: Invalid entry in enum body (needs to be untyped or comment) %s", GEN_NS debug_str(entry) ); return false; } } @@ -1217,7 +1217,7 @@ bool AST::validate_body() case Specifiers: case Struct_Body: case Typename: - log_failure("AST::validate_body: Invalid entry in body %s", entry.debug_str()); + log_failure("AST::validate_body: Invalid entry in body %s", GEN_NS debug_str(entry)); return false; } } @@ -1233,7 +1233,7 @@ bool AST::validate_body() { if ( entry->Type != Untyped ) { - log_failure( "AST::validate_body: Invalid entry in union body (needs to be untyped or comment) %s", entry.debug_str() ); + log_failure( "AST::validate_body: Invalid entry in union body (needs to be untyped or comment) %s", GEN_NS debug_str(entry) ); return false; } } diff --git a/project/components/ast.hpp b/project/components/ast.hpp index 2d1fe0a..9e8f8d7 100644 --- a/project/components/ast.hpp +++ b/project/components/ast.hpp @@ -157,9 +157,8 @@ namespace parser struct Token; } -template< class Type> forceinline Type tmpl_cast( Code* self ) { return * rcast( Type*, self ); } -#if ! GEN_COMPILER_C && 0 -template< class Type> forceinline Type tmpl_cast( Code& self ) { return * rcast( Type*, & self ); } +#if ! GEN_COMPILER_C +template< class Type> forceinline Type tmpl_cast( Code self ) { return * rcast( Type*, & self ); } #endif char const* debug_str (Code code); @@ -195,16 +194,13 @@ struct Code bool operator !=( Code other ) { return (AST*)ast != other.ast; } \ operator bool(); -#if GEN_SUPPORT_CPP_MEMBER_FEATURES || 1 +#if GEN_SUPPORT_CPP_MEMBER_FEATURES Using_Code( Code ); String to_string() { return GEN_NS to_string(* this); } #endif Using_CodeOps( Code ); - template< class Type > - forceinline Type code_cast() { return * rcast( Type*, this ); } - AST* operator ->() { return ast; } Code& operator ++(); diff --git a/project/components/code_serialization.cpp b/project/components/code_serialization.cpp index c08144b..734fd24 100644 --- a/project/components/code_serialization.cpp +++ b/project/components/code_serialization.cpp @@ -53,7 +53,7 @@ void CodeBody::to_string( String& result ) s32 left = ast->NumEntries; while ( left -- ) { - append_fmt( & result, "%S", curr.to_string() ); + append_fmt( & result, "%S", GEN_NS to_string(curr) ); ++curr; } } @@ -66,7 +66,7 @@ void CodeBody::to_string_export( String& result ) s32 left = ast->NumEntries; while ( left-- ) { - append_fmt( & result, "%S", curr.to_string() ); + append_fmt( & result, "%S", GEN_NS to_string(curr) ); ++curr; } @@ -110,12 +110,12 @@ void CodeConstructor::to_string_def( String& result ) append( & result, "()" ); if ( ast->InitializerList ) - append_fmt( & result, " : %S", ast->InitializerList.to_string() ); + append_fmt( & result, " : %S", GEN_NS to_string(ast->InitializerList) ); if ( ast->InlineCmt ) append_fmt( & result, " // %S", ast->InlineCmt->Content ); - append_fmt( & result, "\n{\n%S\n}\n", ast->Body.to_string() ); + append_fmt( & result, "\n{\n%S\n}\n", GEN_NS to_string(ast->Body) ); } void CodeConstructor::to_string_fwd( String& result ) @@ -134,7 +134,7 @@ void CodeConstructor::to_string_fwd( String& result ) append_fmt( & result, "()"); if (ast->Body) - append_fmt( & result, " = %S", ast->Body.to_string() ); + append_fmt( & result, " = %S", GEN_NS to_string(ast->Body) ); if ( ast->InlineCmt ) append_fmt( & result, "; // %S\n", ast->InlineCmt->Content ); @@ -264,7 +264,7 @@ void CodeDestructor::to_string_def( String& result ) else append_fmt( & result, "~%S()", ast->Parent->Name ); - append_fmt( & result, "\n{\n%S\n}\n", ast->Body.to_string() ); + append_fmt( & result, "\n{\n%S\n}\n", GEN_NS to_string(ast->Body) ); } void CodeDestructor::to_string_fwd( String& result ) @@ -279,7 +279,7 @@ void CodeDestructor::to_string_fwd( String& result ) if ( ast->Specs.has( ESpecifier::Pure ) ) append( & result, " = 0;" ); else if (ast->Body) - append_fmt( & result, " = %S;", ast->Body.to_string() ); + append_fmt( & result, " = %S;", GEN_NS to_string(ast->Body) ); } else append_fmt( & result, "~%S();", ast->Parent->Name ); @@ -333,7 +333,7 @@ void CodeEnum::to_string_def( String& result ) else if ( ast->UnderlyingTypeMacro ) append_fmt( & result, "%S : %S\n{\n%S\n}" , ast->Name - , ast->UnderlyingTypeMacro.to_string() + , GEN_NS to_string(ast->UnderlyingTypeMacro) , ast->Body.to_string() ); @@ -872,11 +872,11 @@ void CodeParam::to_string( String& result ) if ( ast->PostNameMacro ) { - append_fmt( & result, " %S", ast->PostNameMacro.to_string() ); + append_fmt( & result, " %S", GEN_NS to_string(ast->PostNameMacro) ); } if ( ast->Value ) - append_fmt( & result, " = %S", ast->Value.to_string() ); + append_fmt( & result, " = %S", GEN_NS to_string(ast->Value) ); if ( ast->NumEntries - 1 > 0 ) { @@ -1068,9 +1068,9 @@ void CodeTemplate::to_string( String& result ) append( & result, "export " ); if ( ast->Params ) - append_fmt( & result, "template< %S >\n%S", ast->Params.to_string(), ast->Declaration.to_string() ); + append_fmt( & result, "template< %S >\n%S", GEN_NS to_string(ast->Params), GEN_NS to_string(ast->Declaration) ); else - append_fmt( & result, "template<>\n%S", ast->Declaration.to_string() ); + append_fmt( & result, "template<>\n%S", GEN_NS to_string(ast->Declaration) ); } String CodeTypedef::to_string() @@ -1089,9 +1089,9 @@ void CodeTypedef::to_string( String& result ) // Determines if the typedef is a function typename if ( ast->UnderlyingType->ReturnType ) - append( & result, ast->UnderlyingType.to_string() ); + append( & result, GEN_NS to_string(ast->UnderlyingType) ); else - append_fmt( & result, "%S %S", ast->UnderlyingType.to_string(), ast->Name ); + append_fmt( & result, "%S %S", GEN_NS to_string(ast->UnderlyingType), ast->Name ); if ( ast->UnderlyingType->Type == ECode::Typename && ast->UnderlyingType->ArrExpr ) { @@ -1234,7 +1234,7 @@ void CodeUsing::to_string( String& result ) if ( ast->UnderlyingType->ArrExpr ) { - append_fmt( & result, "[ %S ]", ast->UnderlyingType->ArrExpr.to_string() ); + append_fmt( & result, "[ %S ]", GEN_NS to_string(ast->UnderlyingType->ArrExpr) ); AST* next_arr_expr = ast->UnderlyingType->ArrExpr->Next; while ( next_arr_expr ) @@ -1283,7 +1283,7 @@ void CodeVar::to_string( String& result ) if ( ast->ValueType->ArrExpr ) { - append_fmt( & result, "[ %S ]", ast->ValueType->ArrExpr.to_string() ); + append_fmt( & result, "[ %S ]", GEN_NS to_string(ast->ValueType->ArrExpr) ); AST* next_arr_expr = ast->ValueType->ArrExpr->Next; while ( next_arr_expr ) @@ -1296,9 +1296,9 @@ void CodeVar::to_string( String& result ) if ( ast->Value ) { if ( ast->VarConstructorInit ) - append_fmt( & result, "( %S ", ast->Value.to_string() ); + append_fmt( & result, "( %S ", GEN_NS to_string(ast->Value) ); else - append_fmt( & result, " = %S", ast->Value.to_string() ); + append_fmt( & result, " = %S", GEN_NS to_string(ast->Value) ); } // Keep the chain going... @@ -1326,7 +1326,7 @@ void CodeVar::to_string( String& result ) if ( ast->ValueType->ArrExpr ) { - append_fmt( & result, "[ %S ]", ast->ValueType->ArrExpr.to_string() ); + append_fmt( & result, "[ %S ]", GEN_NS to_string(ast->ValueType->ArrExpr) ); AST* next_arr_expr = ast->ValueType->ArrExpr->Next; while ( next_arr_expr ) @@ -1337,14 +1337,14 @@ void CodeVar::to_string( String& result ) } if ( ast->BitfieldSize ) - append_fmt( & result, " : %S", ast->BitfieldSize.to_string() ); + append_fmt( & result, " : %S", GEN_NS to_string(ast->BitfieldSize) ); if ( ast->Value ) { if ( ast->VarConstructorInit ) - append_fmt( & result, "( %S ", ast->Value.to_string() ); + append_fmt( & result, "( %S ", GEN_NS to_string(ast->Value) ); else - append_fmt( & result, " = %S", ast->Value.to_string() ); + append_fmt( & result, " = %S", GEN_NS to_string(ast->Value) ); } if ( ast->NextVar ) @@ -1362,11 +1362,11 @@ void CodeVar::to_string( String& result ) } if ( ast->BitfieldSize ) - append_fmt( & result, "%S %S : %S", ast->ValueType.to_string(), ast->Name, ast->BitfieldSize.to_string() ); + append_fmt( & result, "%S %S : %S", ast->ValueType.to_string(), ast->Name, GEN_NS to_string(ast->BitfieldSize) ); else if ( ast->ValueType->ArrExpr ) { - append_fmt( & result, "%S %S[ %S ]", ast->ValueType.to_string(), ast->Name, ast->ValueType->ArrExpr.to_string() ); + append_fmt( & result, "%S %S[ %S ]", ast->ValueType.to_string(), ast->Name, GEN_NS to_string(ast->ValueType->ArrExpr) ); AST* next_arr_expr = ast->ValueType->ArrExpr->Next; while ( next_arr_expr ) @@ -1382,9 +1382,9 @@ void CodeVar::to_string( String& result ) if ( ast->Value ) { if ( ast->VarConstructorInit ) - append_fmt( & result, "( %S ", ast->Value.to_string() ); + append_fmt( & result, "( %S ", GEN_NS to_string(ast->Value) ); else - append_fmt( & result, " = %S", ast->Value.to_string() ); + append_fmt( & result, " = %S", GEN_NS to_string(ast->Value) ); } if ( ast->NextVar ) diff --git a/project/components/code_types.hpp b/project/components/code_types.hpp index d823de8..997ec07 100644 --- a/project/components/code_types.hpp +++ b/project/components/code_types.hpp @@ -17,8 +17,8 @@ struct CodeBody { GEN_ASSERT(other.ast != nullptr); - if (other.is_body()) { - append( cast(CodeBody, & other) ); + if (GEN_NS is_body(other)) { + append( cast(CodeBody, other) ); } GEN_NS append( raw(), other.ast ); diff --git a/project/components/interface.cpp b/project/components/interface.cpp index 425b921..f709dc4 100644 --- a/project/components/interface.cpp +++ b/project/components/interface.cpp @@ -79,69 +79,69 @@ void define_constants() scast(String, Code_Global->Content) = Code_Global->Name; Code_Invalid = make_code(); - Code_Invalid.set_global(); + set_global(Code_Invalid); t_empty = (CodeType) make_code(); t_empty->Type = ECode::Typename; t_empty->Name = get_cached_string( txt("") ); - t_empty.set_global(); + set_global(t_empty); access_private = make_code(); access_private->Type = ECode::Access_Private; access_private->Name = get_cached_string( txt("private:\n") ); - access_private.set_global(); + set_global(access_private); access_protected = make_code(); access_protected->Type = ECode::Access_Protected; access_protected->Name = get_cached_string( txt("protected:\n") ); - access_protected.set_global(); + set_global(access_protected); access_public = make_code(); access_public->Type = ECode::Access_Public; access_public->Name = get_cached_string( txt("public:\n") ); - access_public.set_global(); + set_global(access_public); attrib_api_export = def_attributes( code(GEN_API_Export_Code)); - attrib_api_export.set_global(); + set_global(attrib_api_export); attrib_api_import = def_attributes( code(GEN_API_Import_Code)); - attrib_api_import.set_global(); + set_global(attrib_api_import); module_global_fragment = make_code(); module_global_fragment->Type = ECode::Untyped; module_global_fragment->Name = get_cached_string( txt("module;") ); module_global_fragment->Content = module_global_fragment->Name; - module_global_fragment.set_global(); + set_global(module_global_fragment); module_private_fragment = make_code(); module_private_fragment->Type = ECode::Untyped; module_private_fragment->Name = get_cached_string( txt("module : private;") ); module_private_fragment->Content = module_private_fragment->Name; - module_private_fragment.set_global(); + set_global(module_private_fragment); fmt_newline = make_code(); fmt_newline->Type = ECode::NewLine; - fmt_newline.set_global(); + set_global(fmt_newline); pragma_once = (CodePragma) make_code(); pragma_once->Type = ECode::Preprocess_Pragma; pragma_once->Name = get_cached_string( txt("once") ); pragma_once->Content = pragma_once->Name; - pragma_once.set_global(); + set_global(pragma_once); param_varadic = (CodeType) make_code(); param_varadic->Type = ECode::Parameters; param_varadic->Name = get_cached_string( txt("...") ); param_varadic->ValueType = t_empty; - param_varadic.set_global(); + set_global(param_varadic); preprocess_else = (CodePreprocessCond) make_code(); preprocess_else->Type = ECode::Preprocess_Else; - preprocess_else.set_global(); + set_global(preprocess_else); preprocess_endif = (CodePreprocessCond) make_code(); preprocess_endif->Type = ECode::Preprocess_EndIf; - preprocess_endif.set_global(); + set_global(preprocess_endif); # define def_constant_code_type( Type_ ) \ t_##Type_ = def_type( name(Type_) ); \ diff --git a/project/components/interface.upfront.cpp b/project/components/interface.upfront.cpp index af72be6..9a19a6b 100644 --- a/project/components/interface.upfront.cpp +++ b/project/components/interface.upfront.cpp @@ -527,7 +527,7 @@ CodeConstructor def_constructor( CodeParam params, Code initializer_list, Code b break; default: - log_failure("gen::def_constructor: body must be either of Function_Body or Untyped type - %s", body.debug_str()); + log_failure("gen::def_constructor: body must be either of Function_Body or Untyped type - %s", debug_str(body)); return InvalidCode; } @@ -579,7 +579,7 @@ CodeClass def_class( StrC name break; default: - log_failure("gen::def_class: body must be either of Class_Body or Untyped type - %s", body.debug_str()); + log_failure("gen::def_class: body must be either of Class_Body or Untyped type - %s", debug_str(body)); return InvalidCode; } @@ -665,7 +665,7 @@ CodeDestructor def_destructor( Code body, CodeSpecifiers specifiers ) break; default: - log_failure("gen::def_destructor: body must be either of Function_Body or Untyped type - %s", body.debug_str()); + log_failure("gen::def_destructor: body must be either of Function_Body or Untyped type - %s", debug_str(body)); return InvalidCode; } @@ -715,7 +715,7 @@ CodeEnum def_enum( StrC name break; default: - log_failure( "gen::def_enum: body must be of Enum_Body or Untyped type %s", body.debug_str()); + log_failure( "gen::def_enum: body must be of Enum_Body or Untyped type %s", debug_str(body)); return InvalidCode; } @@ -944,7 +944,7 @@ CodeNS def_namespace( StrC name, Code body, ModuleFlag mflags ) if ( body->Type != Namespace_Body && body->Type != Untyped ) { - log_failure("gen::def_namespace: body is not of namespace or untyped type %s", body.debug_str()); + log_failure("gen::def_namespace: body is not of namespace or untyped type %s", debug_str(body)); return InvalidCode; } @@ -1057,7 +1057,7 @@ CodeOpCast def_operator_cast( CodeType type, Code body, CodeSpecifiers const_spe if ( body->Type != Function_Body && body->Type != Execution ) { - log_failure( "gen::def_operator_cast: body is not of function body or execution type - %s", body.debug_str() ); + log_failure( "gen::def_operator_cast: body is not of function body or execution type - %s", debug_str(body) ); return InvalidCode; } @@ -1086,13 +1086,13 @@ CodeParam def_param( CodeType type, StrC name, Code value ) if ( type->Type != Typename ) { - log_failure( "gen::def_param: type is not a typename - %s", type.debug_str() ); + log_failure( "gen::def_param: type is not a typename - %s", debug_str(type) ); return InvalidCode; } if ( value && value->Type != Untyped ) { - log_failure( "gen::def_param: value is not untyped - %s", value.debug_str() ); + log_failure( "gen::def_param: value is not untyped - %s", debug_str(value) ); return InvalidCode; } @@ -1189,13 +1189,13 @@ CodeStruct def_struct( StrC name if ( parent && parent->Type != Typename ) { - log_failure( "gen::def_struct: parent was not a `Struct` type - %s", parent.debug_str() ); + log_failure( "gen::def_struct: parent was not a `Struct` type - %s", debug_str(parent) ); return InvalidCode; } if ( body && body->Type != Struct_Body ) { - log_failure( "gen::def_struct: body was not a Struct_Body type - %s", body.debug_str() ); + log_failure( "gen::def_struct: body was not a Struct_Body type - %s", debug_str(body) ); return InvalidCode; } @@ -1256,7 +1256,7 @@ CodeTemplate def_template( CodeParam params, Code declaration, ModuleFlag mflags break; default: - log_failure( "gen::def_template: declaration is not of class, function, struct, variable, or using type - %s", declaration.debug_str() ); + log_failure( "gen::def_template: declaration is not of class, function, struct, variable, or using type - %s", debug_str(declaration) ); } CodeTemplate @@ -1329,13 +1329,13 @@ CodeTypedef def_typedef( StrC name, Code type, CodeAttributes attributes, Module case Typename: break; default: - log_failure( "gen::def_typedef: type was not a Class, Enum, Function Forward, Struct, Typename, or Union - %s", type.debug_str() ); + log_failure( "gen::def_typedef: type was not a Class, Enum, Function Forward, Struct, Typename, or Union - %s", debug_str(type) ); return InvalidCode; } if ( attributes && attributes->Type != ECode::PlatformAttributes ) { - log_failure( "gen::def_typedef: attributes was not a PlatformAttributes - %s", attributes.debug_str() ); + log_failure( "gen::def_typedef: attributes was not a PlatformAttributes - %s", debug_str(attributes) ); return InvalidCode; } @@ -1359,7 +1359,7 @@ CodeTypedef def_typedef( StrC name, Code type, CodeAttributes attributes, Module { if (type->Type != Untyped) { - log_failure( "gen::def_typedef: name was empty and type was not untyped (indicating its a function typedef) - %s", type.debug_str() ); + log_failure( "gen::def_typedef: name was empty and type was not untyped (indicating its a function typedef) - %s", debug_str(type) ); return InvalidCode; } @@ -1381,7 +1381,7 @@ CodeUnion def_union( StrC name, Code body, CodeAttributes attributes, ModuleFlag if ( body->Type != ECode::Union_Body ) { - log_failure( "gen::def_union: body was not a Union_Body type - %s", body.debug_str() ); + log_failure( "gen::def_union: body was not a Union_Body type - %s", debug_str(body) ); return InvalidCode; } @@ -1482,7 +1482,7 @@ CodeVar def_variable( CodeType type, StrC name, Code value if ( value && value->Type != ECode::Untyped ) { - log_failure( "gen::def_variable: value was not a `Untyped` type - %s", value.debug_str() ); + log_failure( "gen::def_variable: value was not a `Untyped` type - %s", debug_str(value) ); return InvalidCode; } @@ -1558,7 +1558,7 @@ CodeBody def_class_body( s32 num, ... ) switch (entry->Type) { GEN_AST_BODY_CLASS_UNALLOWED_TYPES - log_failure("gen::" "def_class_body" ": Entry type is not allowed: %s", entry.debug_str()); + log_failure("gen::" "def_class_body" ": Entry type is not allowed: %s", debug_str(entry)); return InvalidCode; default: @@ -1595,7 +1595,7 @@ CodeBody def_class_body( s32 num, Code* codes ) switch (entry->Type) { GEN_AST_BODY_CLASS_UNALLOWED_TYPES - log_failure("gen::" "def_class_body" ": Entry type is not allowed: %s", entry.debug_str()); + log_failure("gen::" "def_class_body" ": Entry type is not allowed: %s", debug_str(entry)); return InvalidCode; default: @@ -1632,7 +1632,7 @@ CodeBody def_enum_body( s32 num, ... ) if ( entry->Type != Untyped && entry->Type != Comment ) { - log_failure("gen::def_enum_body: Entry type is not allowed - %s. Must be of untyped or comment type.", entry.debug_str() ); + log_failure("gen::def_enum_body: Entry type is not allowed - %s. Must be of untyped or comment type.", debug_str(entry) ); return InvalidCode; } @@ -1664,7 +1664,7 @@ CodeBody def_enum_body( s32 num, Code* codes ) if ( entry->Type != Untyped && entry->Type != Comment ) { - log_failure("gen::def_enum_body: Entry type is not allowed: %s", entry.debug_str() ); + log_failure("gen::def_enum_body: Entry type is not allowed: %s", debug_str(entry) ); return InvalidCode; } @@ -1699,7 +1699,7 @@ CodeBody def_export_body( s32 num, ... ) switch (entry->Type) { GEN_AST_BODY_EXPORT_UNALLOWED_TYPES - log_failure("gen::" "def_export_body" ": Entry type is not allowed: %s", entry.debug_str()); + log_failure("gen::" "def_export_body" ": Entry type is not allowed: %s", debug_str(entry)); return InvalidCode; default: @@ -1736,7 +1736,7 @@ CodeBody def_export_body( s32 num, Code* codes ) switch (entry->Type) { GEN_AST_BODY_EXPORT_UNALLOWED_TYPES - log_failure("gen::" "def_export_body" ": Entry type is not allowed: %s", entry.debug_str()); + log_failure("gen::" "def_export_body" ": Entry type is not allowed: %s", debug_str(entry)); return InvalidCode; default: @@ -1774,7 +1774,7 @@ CodeBody def_extern_link_body( s32 num, ... ) switch (entry->Type) { GEN_AST_BODY_EXTERN_LINKAGE_UNALLOWED_TYPES - log_failure("gen::" "def_extern_linkage_body" ": Entry type is not allowed: %s", entry.debug_str()); + log_failure("gen::" "def_extern_linkage_body" ": Entry type is not allowed: %s", debug_str(entry)); return InvalidCode; default: @@ -1811,7 +1811,7 @@ CodeBody def_extern_link_body( s32 num, Code* codes ) switch (entry->Type) { GEN_AST_BODY_EXTERN_LINKAGE_UNALLOWED_TYPES - log_failure("gen::" "def_extern_linkage_body" ": Entry type is not allowed: %s", entry.debug_str()); + log_failure("gen::" "def_extern_linkage_body" ": Entry type is not allowed: %s", debug_str(entry)); return InvalidCode; default: @@ -1851,7 +1851,7 @@ CodeBody def_function_body( s32 num, ... ) { GEN_AST_BODY_FUNCTION_UNALLOWED_TYPES - log_failure("gen::" stringize(def_function_body) ": Entry type is not allowed: %s", entry.debug_str()); + log_failure("gen::" stringize(def_function_body) ": Entry type is not allowed: %s", debug_str(entry)); return InvalidCode; default: @@ -1888,7 +1888,7 @@ CodeBody def_function_body( s32 num, Code* codes ) switch (entry->Type) { GEN_AST_BODY_FUNCTION_UNALLOWED_TYPES - log_failure("gen::" "def_function_body" ": Entry type is not allowed: %s", entry.debug_str()); + log_failure("gen::" "def_function_body" ": Entry type is not allowed: %s", debug_str(entry)); return InvalidCode; default: @@ -1925,11 +1925,12 @@ CodeBody def_global_body( s32 num, ... ) switch (entry->Type) { case Global_Body: - result.append( entry.code_cast() ) ; + // result.append( entry.code_cast() ) ; + result.append( cast(CodeBody, entry) ) ; continue; GEN_AST_BODY_GLOBAL_UNALLOWED_TYPES - log_failure("gen::" "def_global_body" ": Entry type is not allowed: %s", entry.debug_str()); + log_failure("gen::" "def_global_body" ": Entry type is not allowed: %s", debug_str(entry)); return InvalidCode; default: @@ -1966,11 +1967,11 @@ CodeBody def_global_body( s32 num, Code* codes ) switch (entry->Type) { case Global_Body: - result.append( entry.code_cast() ) ; + result.append( cast(CodeBody, entry) ); continue; GEN_AST_BODY_GLOBAL_UNALLOWED_TYPES - log_failure("gen::" "def_global_body" ": Entry type is not allowed: %s", entry.debug_str()); + log_failure("gen::" "def_global_body" ": Entry type is not allowed: %s", debug_str(entry)); return InvalidCode; default: @@ -2008,7 +2009,7 @@ CodeBody def_namespace_body( s32 num, ... ) switch (entry->Type) { GEN_AST_BODY_NAMESPACE_UNALLOWED_TYPES - log_failure("gen::" "def_namespace_body" ": Entry type is not allowed: %s", entry.debug_str()); + log_failure("gen::" "def_namespace_body" ": Entry type is not allowed: %s", debug_str(entry)); return InvalidCode; default: @@ -2045,7 +2046,7 @@ CodeBody def_namespace_body( s32 num, Code* codes ) switch (entry->Type) { GEN_AST_BODY_NAMESPACE_UNALLOWED_TYPES - log_failure("gen::" "def_namespace_body" ": Entry type is not allowed: %s", entry.debug_str() ); + log_failure("gen::" "def_namespace_body" ": Entry type is not allowed: %s", debug_str(entry) ); return InvalidCode; default: break; @@ -2217,7 +2218,7 @@ CodeBody def_struct_body( s32 num, ... ) switch (entry->Type) { GEN_AST_BODY_STRUCT_UNALLOWED_TYPES - log_failure("gen::" "def_struct_body" ": Entry type is not allowed: %s", entry.debug_str()); + log_failure("gen::" "def_struct_body" ": Entry type is not allowed: %s", debug_str(entry)); return InvalidCode; default: @@ -2254,7 +2255,7 @@ CodeBody def_struct_body( s32 num, Code* codes ) switch (entry->Type) { GEN_AST_BODY_STRUCT_UNALLOWED_TYPES - log_failure("gen::" "def_struct_body" ": Entry type is not allowed: %s", entry.debug_str() ); + log_failure("gen::" "def_struct_body" ": Entry type is not allowed: %s", debug_str(entry) ); return InvalidCode; default: @@ -2291,7 +2292,7 @@ CodeBody def_union_body( s32 num, ... ) if ( entry->Type != Untyped && entry->Type != Comment ) { - log_failure("gen::def_union_body: Entry type is not allowed - %s. Must be of untyped or comment type.", entry.debug_str() ); + log_failure("gen::def_union_body: Entry type is not allowed - %s. Must be of untyped or comment type.", debug_str(entry) ); return InvalidCode; } @@ -2323,7 +2324,7 @@ CodeBody def_union_body( s32 num, CodeUnion* codes ) if ( entry->Type != Untyped && entry->Type != Comment ) { - log_failure("gen::def_union_body: Entry type is not allowed: %s", entry.debug_str() ); + log_failure("gen::def_union_body: Entry type is not allowed: %s", debug_str(entry) ); return InvalidCode; } diff --git a/project/components/parser.cpp b/project/components/parser.cpp index 196a3d1..c024bc2 100644 --- a/project/components/parser.cpp +++ b/project/components/parser.cpp @@ -5067,7 +5067,7 @@ CodeTypedef parse_typedef() // Type needs to be aware of its parent so that it can be serialized properly. if ( type->Type == Typename && array_expr && array_expr->Type != Invalid ) - type.code_cast()->ArrExpr = array_expr; + cast(CodeType, type)->ArrExpr = array_expr; if ( inline_cmt ) result->InlineCmt = inline_cmt;