mirror of
				https://github.com/Ed94/gencpp.git
				synced 2025-10-31 06:50:53 -07:00 
			
		
		
		
	Various fixes and adjustments
* moved constants to components/constants.hpp (adjsuted generators accordingly) * parser accepts include & defineas parameter identifiers (will add more flags for keywords when necessary
This commit is contained in:
		| @@ -0,0 +1,85 @@ | ||||
| #ifdef GEN_INTELLISENSE_DIRECTIVES | ||||
| #	pragma once | ||||
| #	include "interface.hpp" | ||||
| #endif | ||||
|  | ||||
| #pragma region Constants | ||||
| // Predefined typename codes. Are set to readonly and are setup during gen::init() | ||||
|  | ||||
| GEN_API extern Macro enum_underlying_macro; | ||||
|  | ||||
| GEN_API extern Code access_public; | ||||
| GEN_API extern Code access_protected; | ||||
| GEN_API extern Code access_private; | ||||
|  | ||||
| GEN_API extern CodeAttributes attrib_api_export; | ||||
| GEN_API extern CodeAttributes attrib_api_import; | ||||
|  | ||||
| GEN_API extern Code module_global_fragment; | ||||
| GEN_API extern Code module_private_fragment; | ||||
|  | ||||
| GEN_API extern Code fmt_newline; | ||||
|  | ||||
| GEN_API extern CodePragma pragma_once; | ||||
|  | ||||
| GEN_API extern CodeParams param_varadic; | ||||
|  | ||||
| GEN_API extern CodePreprocessCond preprocess_else; | ||||
| GEN_API extern CodePreprocessCond preprocess_endif; | ||||
|  | ||||
| GEN_API extern CodeSpecifiers spec_const; | ||||
| GEN_API extern CodeSpecifiers spec_consteval; | ||||
| GEN_API extern CodeSpecifiers spec_constexpr; | ||||
| GEN_API extern CodeSpecifiers spec_constinit; | ||||
| GEN_API extern CodeSpecifiers spec_extern_linkage; | ||||
| GEN_API extern CodeSpecifiers spec_final; | ||||
| GEN_API extern CodeSpecifiers spec_forceinline; | ||||
| GEN_API extern CodeSpecifiers spec_global; | ||||
| GEN_API extern CodeSpecifiers spec_inline; | ||||
| GEN_API extern CodeSpecifiers spec_internal_linkage; | ||||
| GEN_API extern CodeSpecifiers spec_local_persist; | ||||
| GEN_API extern CodeSpecifiers spec_mutable; | ||||
| GEN_API extern CodeSpecifiers spec_neverinline; | ||||
| GEN_API extern CodeSpecifiers spec_noexcept; | ||||
| GEN_API extern CodeSpecifiers spec_override; | ||||
| GEN_API extern CodeSpecifiers spec_ptr; | ||||
| GEN_API extern CodeSpecifiers spec_pure; | ||||
| GEN_API extern CodeSpecifiers spec_ref; | ||||
| GEN_API extern CodeSpecifiers spec_register; | ||||
| GEN_API extern CodeSpecifiers spec_rvalue; | ||||
| GEN_API extern CodeSpecifiers spec_static_member; | ||||
| GEN_API extern CodeSpecifiers spec_thread_local; | ||||
| GEN_API extern CodeSpecifiers spec_virtual; | ||||
| GEN_API extern CodeSpecifiers spec_volatile; | ||||
|  | ||||
| GEN_API extern CodeTypename t_empty; // Used with varaidc parameters. (Exposing just in case its useful for another circumstance) | ||||
| GEN_API extern CodeTypename t_auto; | ||||
| GEN_API extern CodeTypename t_void; | ||||
| GEN_API extern CodeTypename t_int; | ||||
| GEN_API extern CodeTypename t_bool; | ||||
| GEN_API extern CodeTypename t_char; | ||||
| GEN_API extern CodeTypename t_wchar_t; | ||||
| GEN_API extern CodeTypename t_class; | ||||
| GEN_API extern CodeTypename t_typename; | ||||
|  | ||||
| #ifdef GEN_DEFINE_LIBRARY_CODE_CONSTANTS | ||||
| 	GEN_API extern CodeTypename t_b32; | ||||
|  | ||||
| 	GEN_API extern CodeTypename t_s8; | ||||
| 	GEN_API extern CodeTypename t_s16; | ||||
| 	GEN_API extern CodeTypename t_s32; | ||||
| 	GEN_API extern CodeTypename t_s64; | ||||
|  | ||||
| 	GEN_API extern CodeTypename t_u8; | ||||
| 	GEN_API extern CodeTypename t_u16; | ||||
| 	GEN_API extern CodeTypename t_u32; | ||||
| 	GEN_API extern CodeTypename t_u64; | ||||
|  | ||||
| 	GEN_API extern CodeTypename t_ssize; | ||||
| 	GEN_API extern CodeTypename t_usize; | ||||
|  | ||||
| 	GEN_API extern CodeTypename t_f32; | ||||
| 	GEN_API extern CodeTypename t_f64; | ||||
| #endif | ||||
|  | ||||
| #pragma endregion Constants | ||||
|   | ||||
| @@ -1,5 +0,0 @@ | ||||
| #ifdef GEN_INTELLISENSE_DIRECTIVES | ||||
| #pragma once | ||||
| #include "inlines.hpp" | ||||
| #include "gen/ast_inlines.hpp" | ||||
| #endif | ||||
|   | ||||
| @@ -15,7 +15,7 @@ | ||||
| 	|  \_____|\___}_l |_|\___} ,__/| ,__/ (_____/ \__\__/_|\__, |\___}\__,_l                       | | ||||
| 	|                        | |   | |                      __} |                                  | | ||||
| 	|                        l_l   l_l                     {___/                                   | | ||||
| 	! ----------------------------------------------------------------------- VERSION: v0.23-Alpha | | ||||
| 	! ----------------------------------------------------------------------- VERSION: v0.25-Alpha | | ||||
| 	! ============================================================================================ | | ||||
| 	! WARNING: THIS IS AN ALPHA VERSION OF THE LIBRARY, USE AT YOUR OWN DISCRETION                 | | ||||
| 	! NEVER DO CODE GENERATION WITHOUT AT LEAST HAVING CONTENT IN A CODEBASE UNDER VERSION CONTROL | | ||||
|   | ||||
| @@ -474,84 +474,3 @@ So the full call for this example would be: | ||||
| #pragma endregion Macros | ||||
|  | ||||
| #pragma endregion Gen Interface | ||||
|  | ||||
| #pragma region Constants | ||||
| // Predefined typename codes. Are set to readonly and are setup during gen::init() | ||||
|  | ||||
| GEN_API extern Macro enum_underlying_macro; | ||||
|  | ||||
| GEN_API extern Code access_public; | ||||
| GEN_API extern Code access_protected; | ||||
| GEN_API extern Code access_private; | ||||
|  | ||||
| GEN_API extern CodeAttributes attrib_api_export; | ||||
| GEN_API extern CodeAttributes attrib_api_import; | ||||
|  | ||||
| GEN_API extern Code module_global_fragment; | ||||
| GEN_API extern Code module_private_fragment; | ||||
|  | ||||
| GEN_API extern Code fmt_newline; | ||||
|  | ||||
| GEN_API extern CodePragma pragma_once; | ||||
|  | ||||
| GEN_API extern CodeParams param_varadic; | ||||
|  | ||||
| GEN_API extern CodePreprocessCond preprocess_else; | ||||
| GEN_API extern CodePreprocessCond preprocess_endif; | ||||
|  | ||||
| GEN_API extern CodeSpecifiers spec_const; | ||||
| GEN_API extern CodeSpecifiers spec_consteval; | ||||
| GEN_API extern CodeSpecifiers spec_constexpr; | ||||
| GEN_API extern CodeSpecifiers spec_constinit; | ||||
| GEN_API extern CodeSpecifiers spec_extern_linkage; | ||||
| GEN_API extern CodeSpecifiers spec_final; | ||||
| GEN_API extern CodeSpecifiers spec_forceinline; | ||||
| GEN_API extern CodeSpecifiers spec_global; | ||||
| GEN_API extern CodeSpecifiers spec_inline; | ||||
| GEN_API extern CodeSpecifiers spec_internal_linkage; | ||||
| GEN_API extern CodeSpecifiers spec_local_persist; | ||||
| GEN_API extern CodeSpecifiers spec_mutable; | ||||
| GEN_API extern CodeSpecifiers spec_neverinline; | ||||
| GEN_API extern CodeSpecifiers spec_noexcept; | ||||
| GEN_API extern CodeSpecifiers spec_override; | ||||
| GEN_API extern CodeSpecifiers spec_ptr; | ||||
| GEN_API extern CodeSpecifiers spec_pure; | ||||
| GEN_API extern CodeSpecifiers spec_ref; | ||||
| GEN_API extern CodeSpecifiers spec_register; | ||||
| GEN_API extern CodeSpecifiers spec_rvalue; | ||||
| GEN_API extern CodeSpecifiers spec_static_member; | ||||
| GEN_API extern CodeSpecifiers spec_thread_local; | ||||
| GEN_API extern CodeSpecifiers spec_virtual; | ||||
| GEN_API extern CodeSpecifiers spec_volatile; | ||||
|  | ||||
| GEN_API extern CodeTypename t_empty; // Used with varaidc parameters. (Exposing just in case its useful for another circumstance) | ||||
| GEN_API extern CodeTypename t_auto; | ||||
| GEN_API extern CodeTypename t_void; | ||||
| GEN_API extern CodeTypename t_int; | ||||
| GEN_API extern CodeTypename t_bool; | ||||
| GEN_API extern CodeTypename t_char; | ||||
| GEN_API extern CodeTypename t_wchar_t; | ||||
| GEN_API extern CodeTypename t_class; | ||||
| GEN_API extern CodeTypename t_typename; | ||||
|  | ||||
| #ifdef GEN_DEFINE_LIBRARY_CODE_CONSTANTS | ||||
| 	GEN_API extern CodeTypename t_b32; | ||||
|  | ||||
| 	GEN_API extern CodeTypename t_s8; | ||||
| 	GEN_API extern CodeTypename t_s16; | ||||
| 	GEN_API extern CodeTypename t_s32; | ||||
| 	GEN_API extern CodeTypename t_s64; | ||||
|  | ||||
| 	GEN_API extern CodeTypename t_u8; | ||||
| 	GEN_API extern CodeTypename t_u16; | ||||
| 	GEN_API extern CodeTypename t_u32; | ||||
| 	GEN_API extern CodeTypename t_u64; | ||||
|  | ||||
| 	GEN_API extern CodeTypename t_ssize; | ||||
| 	GEN_API extern CodeTypename t_usize; | ||||
|  | ||||
| 	GEN_API extern CodeTypename t_f32; | ||||
| 	GEN_API extern CodeTypename t_f64; | ||||
| #endif | ||||
|  | ||||
| #pragma endregion Constants | ||||
|   | ||||
| @@ -488,6 +488,10 @@ void lex_found_token( LexContext* ctx ) | ||||
|  | ||||
| 	TokType type = str_to_toktype( ctx->token.Text ); | ||||
|  | ||||
| 	if (type == Tok_Preprocess_Define || type == Tok_Preprocess_Include) { | ||||
| 		ctx->token.Flags |= TF_Identifier; | ||||
| 	} | ||||
|  | ||||
| 	if (type <= Tok_Access_Public && type >= Tok_Access_Private ) { | ||||
| 		ctx->token.Flags |= TF_AccessSpecifier; | ||||
| 	} | ||||
|   | ||||
| @@ -2788,10 +2788,10 @@ CodeParams parse_params( bool use_template_capture ) | ||||
| 		} | ||||
| 		// ( <Macro> <ValueType> | ||||
|  | ||||
| 		if ( check( Tok_Identifier ) ) | ||||
| 		if ( check( Tok_Identifier ) || bitfield_is_set(u32, currtok.Flags, TF_Identifier) ) | ||||
| 		{ | ||||
| 			name = currtok; | ||||
| 			eat( Tok_Identifier ); | ||||
| 			eat( currtok.Type ); | ||||
| 			// ( <Macro> <ValueType> <Name> | ||||
| 		} | ||||
|  | ||||
| @@ -2899,10 +2899,10 @@ CodeParams parse_params( bool use_template_capture ) | ||||
|  | ||||
| 			name = NullToken; | ||||
|  | ||||
| 			if ( check( Tok_Identifier ) ) | ||||
| 			if ( check( Tok_Identifier ) || bitfield_is_set(u32, currtok.Flags, TF_Identifier) ) | ||||
| 			{ | ||||
| 				name = currtok; | ||||
| 				eat( Tok_Identifier ); | ||||
| 				eat( currtok.Type ); | ||||
| 				// ( <Macro> <ValueType> <Name> = <Expression>, <Macro> <ValueType> <Name> | ||||
| 			} | ||||
|  | ||||
|   | ||||
| @@ -11,17 +11,18 @@ enum TokFlags : u32 | ||||
| { | ||||
| 	TF_Operator              = bit(0), | ||||
| 	TF_Assign                = bit(1), | ||||
| 	TF_Preprocess            = bit(2), | ||||
| 	TF_Preprocess_Cond       = bit(3), | ||||
| 	TF_Attribute             = bit(6), | ||||
| 	TF_AccessOperator        = bit(7), | ||||
| 	TF_AccessSpecifier       = bit(8), | ||||
| 	TF_Specifier             = bit(9), | ||||
| 	TF_EndDefinition         = bit(10),    // Either ; or } | ||||
| 	TF_Formatting            = bit(11), | ||||
| 	TF_Literal               = bit(12), | ||||
| 	TF_Macro_Functional      = bit(13), | ||||
| 	TF_Macro_Expects_Body    = bit(14), | ||||
| 	TF_Identifier            = bit(2), | ||||
| 	TF_Preprocess            = bit(3), | ||||
| 	TF_Preprocess_Cond       = bit(4), | ||||
| 	TF_Attribute             = bit(5), | ||||
| 	TF_AccessOperator        = bit(6), | ||||
| 	TF_AccessSpecifier       = bit(7), | ||||
| 	TF_Specifier             = bit(8), | ||||
| 	TF_EndDefinition         = bit(9),    // Either ; or } | ||||
| 	TF_Formatting            = bit(10), | ||||
| 	TF_Literal               = bit(11), | ||||
| 	TF_Macro_Functional      = bit(12), | ||||
| 	TF_Macro_Expects_Body    = bit(13), | ||||
|  | ||||
| 	TF_Null = 0, | ||||
| 	TF_UnderlyingType = GEN_U32_MAX, | ||||
|   | ||||
| @@ -29,9 +29,9 @@ GEN_NS_BEGIN | ||||
|  | ||||
| #include "components/interface.hpp" | ||||
|  | ||||
| #include "components/constants.hpp" | ||||
| #include "components/inlines.hpp" | ||||
| #include "components/gen/ast_inlines.hpp" | ||||
| #include "components/header_end.hpp" | ||||
|  | ||||
| #include "auxiliary/builder.hpp" | ||||
| #include "auxiliary/scanner.hpp" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user