mirror of
				https://github.com/Ed94/gencpp.git
				synced 2025-11-03 15:26:12 -08:00 
			
		
		
		
	
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#define GEN_IMPLEMENTATION
 | 
						|
#define GEN_DEFINE_LIBRARY_CODE_CONSTANTS
 | 
						|
#include "gen_singleheader.h"
 | 
						|
 | 
						|
#define gen_iterator( Type, container, iter )   \
 | 
						|
	        gen_begin_ ## Type(container);      \
 | 
						|
	iter != gen_end_   ## Type(container);      \
 | 
						|
	code  = gen_next_  ## Type(container, iter)
 | 
						|
 | 
						|
int main()
 | 
						|
{
 | 
						|
	gen_Context ctx = {0};
 | 
						|
	gen_init(& ctx);
 | 
						|
 | 
						|
	gen_register_macros( args(
 | 
						|
		((gen_Macro){ txt("USERN"),     MT_Expression, MF_Functional }),
 | 
						|
		((gen_Macro){ txt("USERI"),     MT_Expression, MF_Functional }),
 | 
						|
		((gen_Macro){ txt("USERI"),     MT_Expression, MF_Functional }),
 | 
						|
		((gen_Macro){ txt("FOR_USERS"), MT_Statement,  MF_Functional }),
 | 
						|
		((gen_Macro){ txt("FOR_SUCC"),  MT_Statement,  MF_Functional })
 | 
						|
	));
 | 
						|
 | 
						|
	gen_CodeBody h_passes = gen_parse_file("Cuik/tb/opt/passes.h");
 | 
						|
	for (gen_Code code = gen_iterator(CodeBody, h_passes, code)) switch (code->Type) {
 | 
						|
		case CT_Function_Fwd:
 | 
						|
		case CT_Function:
 | 
						|
			gen_log_fmt("%S:\t%S RETURN_TYPE: %S PARAMS:%S\n"
 | 
						|
				, gen_codetype_to_str(code->Type)
 | 
						|
				, code->Name
 | 
						|
				, gen_strbuilder_to_str( gen_typename_to_strbuilder((gen_CodeTypename) code->ReturnType))
 | 
						|
				, gen_strbuilder_to_str( gen_params_to_strbuilder( (gen_CodeParams) code->Params))
 | 
						|
			);
 | 
						|
		break;
 | 
						|
 | 
						|
		case CT_Variable:
 | 
						|
			gen_log_fmt("%S:\t%S Type:%S\n", gen_codetype_to_str(code->Type), code->Name, code->ValueType);
 | 
						|
		break;
 | 
						|
 | 
						|
		case CT_Struct_Fwd:
 | 
						|
		case CT_Struct:
 | 
						|
		case CT_Typedef:
 | 
						|
			gen_log_fmt("%S: %S\n", gen_codetype_to_str(code->Type), code->Name);
 | 
						|
		break;
 | 
						|
	}
 | 
						|
 | 
						|
	gen_deinit(& ctx);
 | 
						|
	return 0;
 | 
						|
}
 |