|  |  |  | @@ -65,19 +65,123 @@ int gen_main() | 
		
	
		
			
				|  |  |  |  | 	Context ctx {}; | 
		
	
		
			
				|  |  |  |  | 	gen::init(& ctx); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	ctx.PreprocessorDefines.append(txt("GEN_API_C_BEGIN")); | 
		
	
		
			
				|  |  |  |  | 	ctx.PreprocessorDefines.append(txt("GEN_API_C_END")); | 
		
	
		
			
				|  |  |  |  | 	ctx.PreprocessorDefines.append(txt("Array(")); | 
		
	
		
			
				|  |  |  |  | 	ctx.PreprocessorDefines.append(txt("HashTable(")); | 
		
	
		
			
				|  |  |  |  | 	ctx.PreprocessorDefines.append(txt("GEN_NS_PARSER")); | 
		
	
		
			
				|  |  |  |  | 	ctx.PreprocessorDefines.append(txt("GEN_NS_PARSER_BEGIN")); | 
		
	
		
			
				|  |  |  |  | 	ctx.PreprocessorDefines.append(txt("GEN_NS_PARSER_END")); | 
		
	
		
			
				|  |  |  |  | 	ctx.PreprocessorDefines.append(txt("Using_Code(")); | 
		
	
		
			
				|  |  |  |  | 	ctx.PreprocessorDefines.append(txt("Using_CodeOps(")); | 
		
	
		
			
				|  |  |  |  | 	ctx.PreprocessorDefines.append(txt("GEN_OPTIMIZE_MAPPINGS_BEGIN")); | 
		
	
		
			
				|  |  |  |  | 	ctx.PreprocessorDefines.append(txt("GEN_OPITMIZE_MAPPINGS_END")); | 
		
	
		
			
				|  |  |  |  | 	ctx.PreprocessorDefines.append(txt("GEN_PARAM_DEFAULT")); | 
		
	
		
			
				|  |  |  |  | 	//PreprocessorDefines.append(txt("GEN_EXECUTION_EXPRESSION_SUPPORT")); | 
		
	
		
			
				|  |  |  |  | 	register_preprocess_macros( args( | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("bit"),                          MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("bitfield_is_set"),              MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("GEN_C_LIKE_CPP"),               MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("cast"),                         MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("ccast"),                        MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("rcast"),                        MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("pcast"),                        MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("scast"),                        MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("stringize_va"),                 MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("stringize"),                    MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("do_once"),                      MT_Expression, MF_Functional }),  | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("do_once_defer"),                MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("do_once_start"),                MT_Statement,  MF_Null       }),  | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("do_once_end"),                  MT_Statement,  MF_Null       }),  | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("labeled_scope_start"),          MT_Statement,  MF_Null       }),  | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("labeled_scope_end"),            MT_Statement,  MF_Null       }),  | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("compiler_decorated_func_name"), MT_Expression, MF_Null       }),  | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("num_args_impl"),                MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("num_args"),                     MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("count_of"),                     MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("clamp"),                        MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("is_between"),                   MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("size_of"),                      MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("min"),                          MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("max"),                          MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("offset_of"),                    MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("static_assert"),                MT_Statement,  MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("typeof"),                       MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("GEN_API_C_BEGIN"),              MT_Statement,  MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("GEN_API_C_END"),                MT_Statement,  MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("nullptr"),                      MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("GEN_REMOVE_PTR"),               MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("GEN_PARAM_DEFAULT"),            MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("struct_init"),                  MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("GEN_OPTIMIZE_MAPPINGS_BEGIN"),  MT_Statement,  MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("GEN_OPITMIZE_MAPPINGS_END"),    MT_Statement,  MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("Array"),                        MT_Typename,   MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("HashTable"),                    MT_Typename,   MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("Using_Code"),                   MT_Statement,  MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("Using_CodeOps"),                MT_Statement,  MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("kilobytes"),                    MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("megabytes"),                    MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("gigabytes"),                    MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("terabytes"),                    MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("GEN__ONES"),                    MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("GEN__HIGHS"),                   MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("GEN__HAS_ZERO"),                MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("zero_item"),                    MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("zero_array"),                   MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("GEN_DEFAULT_MEMORY_ALIGNMENT"), MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("GEN_DEFAULT_ALLOCATOR_FLAGS"),  MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("alloc_item"),                   MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("alloc_array"),                  MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("malloc"),                       MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("mfree"),                        MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("GEN_PRINTF_MAXLEN"),            MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("cast_to_str"),                  MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("current"),                      MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("txt"),                          MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("GEN_FILE_OPEN_PROC"),           MT_Statement,  MF_Functional | MF_Expects_Body }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("GEN_FILE_READ_AT_PROC"),        MT_Statement,  MF_Functional | MF_Expects_Body }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("GEN_FILE_WRITE_AT_PROC"),       MT_Statement,  MF_Functional | MF_Expects_Body }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("GEN_FILE_SEEK_PROC"),           MT_Statement,  MF_Functional | MF_Expects_Body }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("GEN_FILE_CLOSE_PROC"),          MT_Statement,  MF_Functional | MF_Expects_Body }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("log_failure"),                  MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("operator"),                     MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("InvalidCode"),                  MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("NullCode"),                     MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("Verify_POD"),                   MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("gen_main"),                     MT_Statement,  MF_Null       }) | 
		
	
		
			
				|  |  |  |  | 	)); | 
		
	
		
			
				|  |  |  |  | 	register_preprocess_macros( args( | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("name"),                         MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("code"),                         MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("args"),                         MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("code_str"),                     MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("code_fmt"),                     MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("parse_fmt"),                    MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("token_fmt"),                    MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("check_member_val"),             MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("check_member_str"),             MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("check_member_content"),         MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("check_member_ast"),             MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("check_params"),                 MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("check_param_eq_ret"),           MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("specs"),                        MT_Expression, MF_Functional | MF_Allow_As_Identifier }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("name_check"),                   MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("null_check"),                   MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("def_body_start"),               MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("def_body_code_array_start"),    MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("move_forward"),                 MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("skip_whitespace"),              MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("end_line"),                     MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("check_parse_args"),             MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("currtok_noskip"),               MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("currtok"),                      MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("peektok"),                      MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("prevtok"),                      MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("nexttok"),                      MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("nexttok_noskip"),               MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("eat"),                          MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("left"),                         MT_Expression, MF_Null       | MF_Allow_As_Identifier }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("def_assign"),                   MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("CHECK_WAS_DEFINED"),            MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("check_noskip"),                 MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("check"),                        MT_Expression, MF_Functional | MF_Allow_As_Identifier }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("push_scope"),                   MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("cut_length"),                   MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("cut_ptr"),                      MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("pos"),                          MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("move_fwd"),                     MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("Entry"),                        MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("CheckEndParams"),               MT_Expression, MF_Functional }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("UseTemplateCapture"),           MT_Expression, MF_Null       }), | 
		
	
		
			
				|  |  |  |  | 		(PreprocessorMacro { txt("check_current"),                MT_Expression, MF_Functional }) | 
		
	
		
			
				|  |  |  |  | 	)); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	Code push_ignores           = scan_file( path_base "helpers/push_ignores.inline.hpp" ); | 
		
	
		
			
				|  |  |  |  | 	Code pop_ignores            = scan_file( path_base "helpers/pop_ignores.inline.hpp" ); | 
		
	
	
		
			
				
					
					|  |  |  | @@ -139,8 +243,8 @@ int gen_main() | 
		
	
		
			
				|  |  |  |  | 			CodeTemplate tmpl = cast(CodeTemplate, entry); | 
		
	
		
			
				|  |  |  |  | 			if ( tmpl->Declaration->Name.contains(txt("swap"))) | 
		
	
		
			
				|  |  |  |  | 			{ | 
		
	
		
			
				|  |  |  |  | 				log_fmt("SWAPPED"); | 
		
	
		
			
				|  |  |  |  | 				CodeBody macro_swap = parse_global_body( txt(R"( | 
		
	
		
			
				|  |  |  |  | 				register_preprocess_macro({ txt("swap"), MT_Expression, MF_Functional }); | 
		
	
		
			
				|  |  |  |  | 				CodeDefine macro_swap = parse_define( txt(R"( | 
		
	
		
			
				|  |  |  |  | #define swap( a, b )        \ | 
		
	
		
			
				|  |  |  |  | do                          \ | 
		
	
		
			
				|  |  |  |  | {                           \ | 
		
	
	
		
			
				
					
					|  |  |  | @@ -241,7 +345,8 @@ do                          \ | 
		
	
		
			
				|  |  |  |  | 		{ | 
		
	
		
			
				|  |  |  |  | 			if ( str_contains(entry->Name, txt("Msg_Invalid_Value"))) | 
		
	
		
			
				|  |  |  |  | 			{ | 
		
	
		
			
				|  |  |  |  | 				CodeDefine define = def_define(entry->Name, entry->Value->Content); | 
		
	
		
			
				|  |  |  |  | 				Opts_def_define opts = { {}, entry->Value->Content }; | 
		
	
		
			
				|  |  |  |  | 				CodeDefine define = def_define(entry->Name, MT_Expression, opts ); | 
		
	
		
			
				|  |  |  |  | 				header_printing.append(define); | 
		
	
		
			
				|  |  |  |  | 				continue; | 
		
	
		
			
				|  |  |  |  | 			} | 
		
	
	
		
			
				
					
					|  |  |  | @@ -407,7 +512,8 @@ do                          \ | 
		
	
		
			
				|  |  |  |  | 			CodeVar var = cast(CodeVar, entry); | 
		
	
		
			
				|  |  |  |  | 			if (var->Specs.has(Spec_Constexpr) > -1) | 
		
	
		
			
				|  |  |  |  | 			{ | 
		
	
		
			
				|  |  |  |  | 				CodeDefine define = def_define(entry->Name, entry->Value->Content); | 
		
	
		
			
				|  |  |  |  | 				Opts_def_define opts = { {}, entry->Value->Content }; | 
		
	
		
			
				|  |  |  |  | 				CodeDefine define = def_define(entry->Name, MT_Expression, opts); | 
		
	
		
			
				|  |  |  |  | 				header_filesystem.append(define); | 
		
	
		
			
				|  |  |  |  | 				continue; | 
		
	
		
			
				|  |  |  |  | 			} | 
		
	
	
		
			
				
					
					|  |  |  | @@ -811,7 +917,8 @@ R"(#define AST_ArrSpecs_Cap \ | 
		
	
		
			
				|  |  |  |  | 					ast.append(def); | 
		
	
		
			
				|  |  |  |  | 					break; | 
		
	
		
			
				|  |  |  |  | 				} | 
		
	
		
			
				|  |  |  |  | 				CodeDefine def = def_define(var->Name, var->Value.to_strbuilder()); | 
		
	
		
			
				|  |  |  |  | 				Opts_def_define opts = { {}, var->Value.to_strbuilder() }; | 
		
	
		
			
				|  |  |  |  | 				CodeDefine def = def_define(var->Name, MT_Expression, opts ); | 
		
	
		
			
				|  |  |  |  | 				ast.append(def); | 
		
	
		
			
				|  |  |  |  | 				break; | 
		
	
		
			
				|  |  |  |  | 			} | 
		
	
	
		
			
				
					
					|  |  |  | @@ -832,6 +939,7 @@ R"(#define AST_ArrSpecs_Cap \ | 
		
	
		
			
				|  |  |  |  | 		txt("CodeClass"), | 
		
	
		
			
				|  |  |  |  | 		txt("CodeConstructor"), | 
		
	
		
			
				|  |  |  |  | 		txt("CodeDefine"), | 
		
	
		
			
				|  |  |  |  | 		txt("CodeDefineParams"), | 
		
	
		
			
				|  |  |  |  | 		txt("CodeDestructor"), | 
		
	
		
			
				|  |  |  |  | 		txt("CodeEnum"), | 
		
	
		
			
				|  |  |  |  | 		txt("CodeExec"), | 
		
	
	
		
			
				
					
					|  |  |  | @@ -1209,8 +1317,10 @@ R"(#define <interface_name>( code ) _Generic( (code), \ | 
		
	
		
			
				|  |  |  |  | 			if (var->Specs) | 
		
	
		
			
				|  |  |  |  | 			{ | 
		
	
		
			
				|  |  |  |  | 				s32 constexpr_found = var->Specs.remove( Spec_Constexpr ); | 
		
	
		
			
				|  |  |  |  | 				if (constexpr_found > -1) { | 
		
	
		
			
				|  |  |  |  | 					CodeDefine define = def_define(entry->Name, entry->Value->Content); | 
		
	
		
			
				|  |  |  |  | 				if (constexpr_found > -1) | 
		
	
		
			
				|  |  |  |  | 				{ | 
		
	
		
			
				|  |  |  |  | 					Opts_def_define opts = { {},  entry->Value->Content }; | 
		
	
		
			
				|  |  |  |  | 					CodeDefine define = def_define(entry->Name, MT_Expression, opts ); | 
		
	
		
			
				|  |  |  |  | 					header_end.append(define); | 
		
	
		
			
				|  |  |  |  | 					continue; | 
		
	
		
			
				|  |  |  |  | 				} | 
		
	
	
		
			
				
					
					|  |  |  |   |