| 
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -32,14 +32,14 @@ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			      | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			       <desc> | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			       typedef enum { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			           <valueName[0]> = <valueInt[0]>, <valueDesc[0]> | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			           <valueName[0]> = <valueInteger[0]>, <valueDesc[0]> | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			           <valueName[1]>, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			           <valueName[2]>, <valueDesc[2]> | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			           <valueName[3]>  <valueDesc[3]> | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			       } <name>; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			       NOTE: Multiple options are supported:  | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			          - If value is not provided, (<valueInt[i -1]> + 1) is assigned | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			          - If value is not provided, (<valueInteger[i -1]> + 1) is assigned | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			          - Value description can be provided or not | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			           | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    This parser could work with other C header files if mentioned constraints are followed. | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -95,7 +95,7 @@ typedef struct EnumInfo { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    char desc[64];              // Enum description | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    int valueCount;             // Number of values in enumerator | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    char valueName[128][64];    // Value name definition (max: 128 values) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    int valueInt[128];          // Value integer (max: 128 values) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    int valueInteger[128];      // Value integer (max: 128 values) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    char valueDesc[128][64];    // Value description (max: 128 values) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} EnumInfo; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -362,14 +362,14 @@ int main() | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                            c++; n++; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                        } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                         | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                        if (integer[1] == 'x') enums[i].valueInt[enums[i].valueCount] = (int)strtol(integer, NULL, 16); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                        else enums[i].valueInt[enums[i].valueCount] = atoi(integer); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                        if (integer[1] == 'x') enums[i].valueInteger[enums[i].valueCount] = (int)strtol(integer, NULL, 16); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                        else enums[i].valueInteger[enums[i].valueCount] = atoi(integer); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                    else enums[i].valueInt[enums[i].valueCount] = (enums[i].valueInt[enums[i].valueCount - 1] + 1); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                    else enums[i].valueInteger[enums[i].valueCount] = (enums[i].valueInteger[enums[i].valueCount - 1] + 1); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                     | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                    // TODO: Parse value description if any | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                else enums[i].valueInt[enums[i].valueCount] = (enums[i].valueInt[enums[i].valueCount - 1] + 1); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                else enums[i].valueInteger[enums[i].valueCount] = (enums[i].valueInteger[enums[i].valueCount - 1] + 1); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                enums[i].valueCount++; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            } | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -480,7 +480,7 @@ int main() | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        printf("Enum %02i: %s (%i values)\n", i + 1, enums[i].name, enums[i].valueCount); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        //printf("Description: %s\n", enums[i].desc); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        for (int e = 0; e < enums[i].valueCount; e++) printf("  Value %s: %i\n", enums[i].valueName[e], enums[i].valueInt[e]); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        for (int e = 0; e < enums[i].valueCount; e++) printf("  Value %s: %i\n", enums[i].valueName[e], enums[i].valueInteger[e]); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // Print function info  | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
				
				 | 
			
			 | 
			
			
 |