int main(int argc, char **argv) { // Read the configuration from the arguments Configuration config(argc, argv); // Get the include list and definition list u32 includeCount = config.GetIncludeCount(); const char **pIncludes = new const char * [includeCount]; for (u32 i = 0; i < includeCount; i++) { pIncludes[i] = config.GetInclude(i).c_str(); } u32 definitionCount = config.GetDefinitionCount(); const char **pDefinitions = new const char * [definitionCount]; for (u32 i = 0; i < definitionCount; i++) { pDefinitions[i] = config.GetDefinition(i).c_str(); } // Create a ContextSet to read in all of the contexts from the // header file(s) ContextSet *pContextSet = CreateContextSet(); bool success = true; u32 inputCount = config.GetInputCount(); for (u32 i = 0; i < inputCount; i++) { const char *pInput = config.GetInput(i).c_str(); string tmpFile = config.GetTempFile(); if (!pContextSet->AddHeader(pInput, includeCount, (const char **) pIncludes, definitionCount, (const char **) pDefinitions, tmpFile.c_str())) { fprintf(stderr, "Failed to process header file: %s\n", pInput); fprintf(stderr, pContextSet->GetLastError()); fprintf(stderr, "\n"); success = false; break; } } delete [] pDefinitions; delete [] pIncludes; if (!success) { delete pContextSet; return -1; } { Generator generator(config, *pContextSet); if (!generator.Generate()) { delete pContextSet; return -1; } } delete pContextSet; return 0; }