mirror of
				https://github.com/Ed94/gencpp.git
				synced 2025-10-30 14:30:53 -07:00 
			
		
		
		
	enum base case parsing api passed
This commit is contained in:
		| @@ -391,7 +391,7 @@ namespace gen | |||||||
| 					); | 					); | ||||||
| 				} | 				} | ||||||
|  |  | ||||||
| 				result.append_fmt( "%s};" | 				result.append_fmt( "%s};\n" | ||||||
| 					, body()->to_string() | 					, body()->to_string() | ||||||
| 				); | 				); | ||||||
| 			} | 			} | ||||||
| @@ -3207,6 +3207,12 @@ namespace gen | |||||||
| 			{ | 			{ | ||||||
| 				return Arr[Idx]; | 				return Arr[Idx]; | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
|  | 			inline | ||||||
|  | 			Token& previous() | ||||||
|  | 			{ | ||||||
|  | 				return Arr[Idx - 1]; | ||||||
|  | 			} | ||||||
| 		}; | 		}; | ||||||
|  |  | ||||||
| 		TokArray lex( StrC content ) | 		TokArray lex( StrC content ) | ||||||
| @@ -3651,6 +3657,7 @@ namespace gen | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| #	define currtok      toks.current() | #	define currtok      toks.current() | ||||||
|  | #	define prevtok      toks.previous() | ||||||
| #	define eat( Type_ ) toks.__eat( Type_, context ) | #	define eat( Type_ ) toks.__eat( Type_, context ) | ||||||
| #	define left         ( array_count(toks.Arr) - toks.Idx ) | #	define left         ( array_count(toks.Arr) - toks.Idx ) | ||||||
|  |  | ||||||
| @@ -4294,12 +4301,29 @@ namespace gen | |||||||
|  |  | ||||||
| 			while ( currtok.Type != TokType::BraceCurly_Close ) | 			while ( currtok.Type != TokType::BraceCurly_Close ) | ||||||
| 			{ | 			{ | ||||||
| 				body.Length += currtok.Length; | 				eat( TokType::Identifier); | ||||||
|  |  | ||||||
|  | 				if ( currtok.Type == TokType::Operator && currtok.Text[0] == '=' ) | ||||||
|  | 				{ | ||||||
|  | 					eat( TokType::Operator ); | ||||||
|  |  | ||||||
|  | 					while ( currtok.Type != TokType::Comma || currtok.Type != TokType::BraceCurly_Close ) | ||||||
|  | 					{ | ||||||
| 						eat( currtok.Type ); | 						eat( currtok.Type ); | ||||||
| 					} | 					} | ||||||
|  |  | ||||||
|  | 				} | ||||||
|  |  | ||||||
|  | 				if ( currtok.Type == TokType::Comma ) | ||||||
|  | 				{ | ||||||
|  | 					eat( TokType::Comma ); | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			body.Length = ( (sptr)prevtok.Text + prevtok.Length ) - (sptr)body.Text; | ||||||
|  |  | ||||||
| 			eat( TokType::BraceCurly_Close ); | 			eat( TokType::BraceCurly_Close ); | ||||||
|  | 			eat( TokType::Statement_End ); | ||||||
| 		} | 		} | ||||||
| 		else | 		else | ||||||
| 		{ | 		{ | ||||||
| @@ -4313,9 +4337,9 @@ namespace gen | |||||||
|  |  | ||||||
| 		if ( body.Length ) | 		if ( body.Length ) | ||||||
| 		{ | 		{ | ||||||
| 			mem_copy( entries_code, body.Text, body.Length ); | 			// mem_copy( entries_code, body.Text, body.Length ); | ||||||
|  |  | ||||||
| 			Code untyped_body = untyped_str( { entries_length, entries_code } ); | 			Code untyped_body = untyped_str( body ); | ||||||
|  |  | ||||||
| 			result->Type = is_enum_class ? Enum_Class : Enum; | 			result->Type = is_enum_class ? Enum_Class : Enum; | ||||||
| 			result->add_entry( untyped_body ); | 			result->add_entry( untyped_body ); | ||||||
|   | |||||||
| @@ -45,7 +45,6 @@ void gen_sanity() | |||||||
| 	gen_sanity_file.print_fmt("\n"); | 	gen_sanity_file.print_fmt("\n"); | ||||||
|  |  | ||||||
| 	// Enum | 	// Enum | ||||||
| 	if (0) |  | ||||||
| 	{ | 	{ | ||||||
| 		Code fwd = parse_enum( code( | 		Code fwd = parse_enum( code( | ||||||
| 			enum ETestEnum : u8; | 			enum ETestEnum : u8; | ||||||
| @@ -61,7 +60,7 @@ void gen_sanity() | |||||||
| 		)); | 		)); | ||||||
|  |  | ||||||
| 		Code fwd_enum_class = parse_enum( code( | 		Code fwd_enum_class = parse_enum( code( | ||||||
| 			enum class ETestEnum : u8; | 			enum class ETestEnumClass : u8; | ||||||
| 		)); | 		)); | ||||||
|  |  | ||||||
| 		gen_sanity_file.print(fwd); | 		gen_sanity_file.print(fwd); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user