mirror of
				https://github.com/Ed94/gencpp.git
				synced 2025-11-03 23:36:12 -08:00 
			
		
		
		
	
		
			
				
	
	
		
			69 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#define GEN_DEFINE_LIBRARY_CODE_CONSTANTS
 | 
						|
#define GEN_ENFORCE_STRONG_CODE_TYPES
 | 
						|
#define GEN_EXPOSE_BACKEND
 | 
						|
#define GEN_C_LIKE_CPP 1
 | 
						|
#include "gen.cpp"
 | 
						|
#include "helpers/push_ignores.inline.hpp"
 | 
						|
 | 
						|
#include <stdlib.h>
 | 
						|
 | 
						|
GEN_NS_BEGIN
 | 
						|
#include "helpers/base_codegen.hpp"
 | 
						|
#include "helpers/misc.hpp"
 | 
						|
GEN_NS_END
 | 
						|
 | 
						|
using namespace gen;
 | 
						|
 | 
						|
constexpr char const* path_format_style = "../scripts/.clang-format";
 | 
						|
constexpr char const* scratch_file      = "build/scratch.hpp";
 | 
						|
 | 
						|
Code format( Code code ) {
 | 
						|
	return code_refactor_and_format(code, scratch_file, nullptr, path_format_style );
 | 
						|
}
 | 
						|
 | 
						|
constexpr char const* generation_notice =
 | 
						|
"// This file was generated automatially by gencpp's bootstrap.cpp "
 | 
						|
"(See: https://github.com/Ed94/gencpp)\n\n";
 | 
						|
 | 
						|
int gen_main()
 | 
						|
{
 | 
						|
	gen::init();
 | 
						|
 | 
						|
	CodeBody gen_component_header = def_global_body( args(
 | 
						|
		def_preprocess_cond( PreprocessCond_IfDef, txt("GEN_INTELLISENSE_DIRECTIVES") ),
 | 
						|
		pragma_once,
 | 
						|
		def_include(txt("components/types.hpp")),
 | 
						|
		preprocess_endif,
 | 
						|
		fmt_newline,
 | 
						|
		untyped_str( to_strc_from_c_str(generation_notice) )
 | 
						|
	));
 | 
						|
 | 
						|
	CodeBody ecode       = gen_ecode     ( "enums/ECodeTypes.csv" );
 | 
						|
	CodeBody eoperator   = gen_eoperator ( "enums/EOperator.csv" );
 | 
						|
	CodeBody especifier  = gen_especifier( "enums/ESpecifier.csv" );
 | 
						|
	CodeBody ast_inlines = gen_ast_inlines();
 | 
						|
 | 
						|
	Builder header_ecode = builder_open( "components/gen/ecode.hpp" );
 | 
						|
	builder_print( & header_ecode, gen_component_header );
 | 
						|
	builder_print( & header_ecode, format(ecode) );
 | 
						|
	builder_write( & header_ecode);
 | 
						|
 | 
						|
	Builder header_eoperator = builder_open( "components/gen/eoperator.hpp" );
 | 
						|
	builder_print( & header_eoperator, gen_component_header );
 | 
						|
	builder_print( & header_eoperator, format(eoperator) );
 | 
						|
	builder_write( & header_eoperator );
 | 
						|
 | 
						|
	Builder header_especifier = builder_open( "components/gen/especifier.hpp" );
 | 
						|
	builder_print( & header_especifier, gen_component_header );
 | 
						|
	builder_print( & header_especifier, format(especifier) );
 | 
						|
	builder_write( & header_especifier);
 | 
						|
 | 
						|
	Builder header_ast_inlines = builder_open( "components/gen/ast_inlines.hpp" );
 | 
						|
	builder_print( & header_ast_inlines, gen_component_header );
 | 
						|
	builder_print( & header_ast_inlines, format(ast_inlines) );
 | 
						|
	builder_write( & header_ast_inlines);
 | 
						|
 | 
						|
	gen::deinit();
 | 
						|
	return 0;
 | 
						|
}
 |