Add description helper to parser

This commit is contained in:
lazaray 2022-05-03 18:47:37 +02:00
parent ff36f765e6
commit cb815dca3d

View File

@ -164,6 +164,7 @@ static void ProcessCommandLine(int argc, char *argv[]); // Process command l
static char *LoadFileText(const char *fileName, int *length); static char *LoadFileText(const char *fileName, int *length);
static char **GetTextLines(const char *buffer, int length, int *linesCount); static char **GetTextLines(const char *buffer, int length, int *linesCount);
static void GetDataTypeAndName(const char *typeName, int typeNameLen, char *type, char *name); static void GetDataTypeAndName(const char *typeName, int typeNameLen, char *type, char *name);
static void GetDescription(const char *source, char *description);
static unsigned int TextLength(const char *text); // Get text length in bytes, check for \0 character static unsigned int TextLength(const char *text); // Get text length in bytes, check for \0 character
static bool IsTextEqual(const char *text1, const char *text2, unsigned int count); static bool IsTextEqual(const char *text1, const char *text2, unsigned int count);
static void MemoryCopy(void *dest, const void *src, unsigned int count); static void MemoryCopy(void *dest, const void *src, unsigned int count);
@ -312,10 +313,7 @@ int main(int argc, char* argv[])
char **linesPtr = &lines[structLines[i]]; char **linesPtr = &lines[structLines[i]];
// Parse struct description // Parse struct description
if (linesPtr[-1][0] == '/') GetDescription(linesPtr[-1], structs[i].desc);
{
MemoryCopy(structs[i].desc, linesPtr[-1], TextLength(linesPtr[-1]));
}
// Get struct name: typedef struct name { // Get struct name: typedef struct name {
const int TDS_LEN = 15; // length of "typedef struct " const int TDS_LEN = 15; // length of "typedef struct "
@ -350,16 +348,7 @@ int main(int argc, char* argv[])
GetDataTypeAndName(fieldLine, fieldEndPos, structs[i].fieldType[structs[i].fieldCount], structs[i].fieldName[structs[i].fieldCount]); GetDataTypeAndName(fieldLine, fieldEndPos, structs[i].fieldType[structs[i].fieldCount], structs[i].fieldName[structs[i].fieldCount]);
// Get the field description // Get the field description
// We start skipping spaces in front of description comment GetDescription(&fieldLine[fieldEndPos], structs[i].fieldDesc[structs[i].fieldCount]);
int descStart = fieldEndPos;
while ((fieldLine[descStart] != '/') && (fieldLine[descStart] != '\0')) descStart++;
int k = 0;
while ((fieldLine[descStart + k] != '\0') && (fieldLine[descStart + k] != '\n'))
{
structs[i].fieldDesc[structs[i].fieldCount][k] = fieldLine[descStart + k];
k++;
}
structs[i].fieldCount++; structs[i].fieldCount++;
@ -473,8 +462,7 @@ int main(int argc, char* argv[])
for (int i = 0; i < aliasCount; i++) for (int i = 0; i < aliasCount; i++)
{ {
// Description from previous line // Description from previous line
char *previousLinePtr = lines[aliasLines[i] - 1]; GetDescription(lines[aliasLines[i] - 1], aliases[i].desc);
if (previousLinePtr[0] == '/') MemoryCopy(aliases[i].desc, previousLinePtr, MAX_LINE_LENGTH);
char *linePtr = lines[aliasLines[i]]; char *linePtr = lines[aliasLines[i]];
@ -497,8 +485,7 @@ int main(int argc, char* argv[])
MemoryCopy(aliases[i].name, linePtr + nameStart, nameLen); MemoryCopy(aliases[i].name, linePtr + nameStart, nameLen);
// Description // Description
while((linePtr[c] != '\0') && (linePtr[c] != '/')) c++; GetDescription(linePtr + c, aliases[i].desc);
if (linePtr[c] == '/') MemoryCopy(aliases[i].desc, linePtr + c, MAX_LINE_LENGTH);
} }
free(aliasLines); free(aliasLines);
@ -517,7 +504,7 @@ int main(int argc, char* argv[])
char *linePtr = lines[j]; char *linePtr = lines[j];
if ((linePtr[0] != '/') || (linePtr[2] != ' ')) if ((linePtr[0] != '/') || (linePtr[2] != ' '))
{ {
MemoryCopy(enums[i].desc, &lines[j + 1][0], sizeof(enums[i].desc) - 1); GetDescription(&lines[j + 1][0], enums[i].desc);
break; break;
} }
} }
@ -591,13 +578,8 @@ int main(int argc, char* argv[])
} }
else enums[i].valueInteger[enums[i].valueCount] = (enums[i].valueInteger[enums[i].valueCount - 1] + 1); else enums[i].valueInteger[enums[i].valueCount] = (enums[i].valueInteger[enums[i].valueCount - 1] + 1);
// Look for description or end of line // Parse value description
while ((linePtr[c] != '/') && (linePtr[c] != '\0')) c++; GetDescription(&linePtr[c], enums[i].valueDesc[enums[i].valueCount]);
if (linePtr[c] == '/')
{
// Parse value description
MemoryCopy(enums[i].valueDesc[enums[i].valueCount], &linePtr[c], sizeof(enums[0].valueDesc[0]) - c - 1);
}
enums[i].valueCount++; enums[i].valueCount++;
} }
@ -710,8 +692,10 @@ int main(int argc, char* argv[])
if (valueLen > 0) MemoryCopy(defines[defineIndex].value, linePtr + defineValueStart, valueLen); if (valueLen > 0) MemoryCopy(defines[defineIndex].value, linePtr + defineValueStart, valueLen);
// Extracting description // Extracting description
if (linePtr[j] == '/') if ((linePtr[j] == '/') && linePtr[j + 1] == '/')
{ {
j += 2;
while (linePtr[j] == ' ') j++;
int commentStart = j; int commentStart = j;
while ((linePtr[j] != '\\') && (linePtr[j] != '\0')) j++; while ((linePtr[j] != '\\') && (linePtr[j] != '\0')) j++;
int commentEnd = j-1; int commentEnd = j-1;
@ -788,14 +772,7 @@ int main(int argc, char* argv[])
} }
// Get function description // Get function description
for (int c = funcEnd; c < MAX_LINE_LENGTH; c++) GetDescription(&funcLines[i][funcEnd], funcs[i].desc);
{
if ((funcLines[i][c] == '/') && (funcLines[i][c + 1] == '/'))
{
MemoryCopy(funcs[i].desc, &funcLines[i][c], 127); // WARNING: Size could be too long for funcLines[i][c]?
break;
}
}
} }
for (int i = 0; i < linesCount; i++) free(lines[i]); for (int i = 0; i < linesCount; i++) free(lines[i]);
@ -1031,6 +1008,29 @@ static void GetDataTypeAndName(const char *typeName, int typeNameLen, char *type
} }
} }
// Get comment from a line, do nothing if no comment in line
static void GetDescription(const char *line, char *description)
{
int c = 0;
int descStart = -1;
int lastSlash = -2;
bool isValid = false;
while (line[c] != '\0')
{
if (isValid && (descStart == -1) && (line[c] != ' ')) descStart = c;
else if (line[c] == '/')
{
if (lastSlash == c - 1) isValid = true;
lastSlash = c;
}
c++;
}
if (descStart != -1)
{
MemoryCopy(description, &(line[descStart]), c - descStart);
}
}
// Get text length in bytes, check for \0 character // Get text length in bytes, check for \0 character
static unsigned int TextLength(const char *text) static unsigned int TextLength(const char *text)
{ {
@ -1176,8 +1176,13 @@ static void ExportParsedData(const char *fileName, int format)
{ {
fprintf(outFile, "Struct %02i: %s (%i fields)\n", i + 1, structs[i].name, structs[i].fieldCount); fprintf(outFile, "Struct %02i: %s (%i fields)\n", i + 1, structs[i].name, structs[i].fieldCount);
fprintf(outFile, " Name: %s\n", structs[i].name); fprintf(outFile, " Name: %s\n", structs[i].name);
fprintf(outFile, " Description: %s\n", structs[i].desc + 3); fprintf(outFile, " Description: %s\n", structs[i].desc);
for (int f = 0; f < structs[i].fieldCount; f++) fprintf(outFile, " Field[%i]: %s %s %s\n", f + 1, structs[i].fieldType[f], structs[i].fieldName[f], structs[i].fieldDesc[f]); for (int f = 0; f < structs[i].fieldCount; f++)
{
fprintf(outFile, " Field[%i]: %s %s ", f + 1, structs[i].fieldType[f], structs[i].fieldName[f]);
if (structs[i].fieldDesc[f][0]) fprintf(outFile, "// %s\n", structs[i].fieldDesc[f]);
else fprintf(outFile, "\n");
}
} }
// Print aliases info // Print aliases info
@ -1187,7 +1192,7 @@ static void ExportParsedData(const char *fileName, int format)
fprintf(outFile, "Alias %03i: %s\n", i + 1, aliases[i].name); fprintf(outFile, "Alias %03i: %s\n", i + 1, aliases[i].name);
fprintf(outFile, " Type: %s\n", aliases[i].type); fprintf(outFile, " Type: %s\n", aliases[i].type);
fprintf(outFile, " Name: %s\n", aliases[i].name); fprintf(outFile, " Name: %s\n", aliases[i].name);
fprintf(outFile, " Description: %s\n", aliases[i].desc + 3); fprintf(outFile, " Description: %s\n", aliases[i].desc);
} }
// Print enums info // Print enums info
@ -1196,7 +1201,7 @@ static void ExportParsedData(const char *fileName, int format)
{ {
fprintf(outFile, "Enum %02i: %s (%i values)\n", i + 1, enums[i].name, enums[i].valueCount); fprintf(outFile, "Enum %02i: %s (%i values)\n", i + 1, enums[i].name, enums[i].valueCount);
fprintf(outFile, " Name: %s\n", enums[i].name); fprintf(outFile, " Name: %s\n", enums[i].name);
fprintf(outFile, " Description: %s\n", enums[i].desc + 3); fprintf(outFile, " Description: %s\n", enums[i].desc);
for (int e = 0; e < enums[i].valueCount; e++) fprintf(outFile, " Value[%s]: %i\n", enums[i].valueName[e], enums[i].valueInteger[e]); for (int e = 0; e < enums[i].valueCount; e++) fprintf(outFile, " Value[%s]: %i\n", enums[i].valueName[e], enums[i].valueInteger[e]);
} }
@ -1207,7 +1212,7 @@ static void ExportParsedData(const char *fileName, int format)
fprintf(outFile, "Function %03i: %s() (%i input parameters)\n", i + 1, funcs[i].name, funcs[i].paramCount); fprintf(outFile, "Function %03i: %s() (%i input parameters)\n", i + 1, funcs[i].name, funcs[i].paramCount);
fprintf(outFile, " Name: %s\n", funcs[i].name); fprintf(outFile, " Name: %s\n", funcs[i].name);
fprintf(outFile, " Return type: %s\n", funcs[i].retType); fprintf(outFile, " Return type: %s\n", funcs[i].retType);
fprintf(outFile, " Description: %s\n", funcs[i].desc + 3); fprintf(outFile, " Description: %s\n", funcs[i].desc);
for (int p = 0; p < funcs[i].paramCount; p++) fprintf(outFile, " Param[%i]: %s (type: %s)\n", p + 1, funcs[i].paramName[p], funcs[i].paramType[p]); for (int p = 0; p < funcs[i].paramCount; p++) fprintf(outFile, " Param[%i]: %s (type: %s)\n", p + 1, funcs[i].paramName[p], funcs[i].paramType[p]);
if (funcs[i].paramCount == 0) fprintf(outFile, " No input parameters\n"); if (funcs[i].paramCount == 0) fprintf(outFile, " No input parameters\n");
} }
@ -1220,7 +1225,7 @@ static void ExportParsedData(const char *fileName, int format)
fprintf(outFile, " Name: %s\n", defines[i].name); fprintf(outFile, " Name: %s\n", defines[i].name);
fprintf(outFile, " Type: %s\n", StrDefineType(defines[i].type)); fprintf(outFile, " Type: %s\n", StrDefineType(defines[i].type));
fprintf(outFile, " Value: %s\n", defines[i].value); fprintf(outFile, " Value: %s\n", defines[i].value);
fprintf(outFile, " Description: %s\n", defines[i].desc + 3); fprintf(outFile, " Description: %s\n", defines[i].desc);
} }
} break; } break;
case LUA: case LUA:
@ -1233,14 +1238,14 @@ static void ExportParsedData(const char *fileName, int format)
{ {
fprintf(outFile, " {\n"); fprintf(outFile, " {\n");
fprintf(outFile, " name = \"%s\",\n", structs[i].name); fprintf(outFile, " name = \"%s\",\n", structs[i].name);
fprintf(outFile, " description = \"%s\",\n", EscapeBackslashes(structs[i].desc + 3)); fprintf(outFile, " description = \"%s\",\n", EscapeBackslashes(structs[i].desc));
fprintf(outFile, " fields = {\n"); fprintf(outFile, " fields = {\n");
for (int f = 0; f < structs[i].fieldCount; f++) for (int f = 0; f < structs[i].fieldCount; f++)
{ {
fprintf(outFile, " {\n"); fprintf(outFile, " {\n");
fprintf(outFile, " type = \"%s\",\n", structs[i].fieldType[f]); fprintf(outFile, " type = \"%s\",\n", structs[i].fieldType[f]);
fprintf(outFile, " name = \"%s\",\n", structs[i].fieldName[f]); fprintf(outFile, " name = \"%s\",\n", structs[i].fieldName[f]);
fprintf(outFile, " description = \"%s\"\n", EscapeBackslashes(structs[i].fieldDesc[f] + 3)); fprintf(outFile, " description = \"%s\"\n", EscapeBackslashes(structs[i].fieldDesc[f]));
fprintf(outFile, " }"); fprintf(outFile, " }");
if (f < structs[i].fieldCount - 1) fprintf(outFile, ",\n"); if (f < structs[i].fieldCount - 1) fprintf(outFile, ",\n");
else fprintf(outFile, "\n"); else fprintf(outFile, "\n");
@ -1259,7 +1264,7 @@ static void ExportParsedData(const char *fileName, int format)
fprintf(outFile, " {\n"); fprintf(outFile, " {\n");
fprintf(outFile, " type = \"%s\",\n", aliases[i].type); fprintf(outFile, " type = \"%s\",\n", aliases[i].type);
fprintf(outFile, " name = \"%s\",\n", aliases[i].name); fprintf(outFile, " name = \"%s\",\n", aliases[i].name);
fprintf(outFile, " description = \"%s\"\n", aliases[i].desc + 3); fprintf(outFile, " description = \"%s\"\n", aliases[i].desc);
fprintf(outFile, " }"); fprintf(outFile, " }");
if (i < aliasCount - 1) fprintf(outFile, ",\n"); if (i < aliasCount - 1) fprintf(outFile, ",\n");
@ -1273,14 +1278,14 @@ static void ExportParsedData(const char *fileName, int format)
{ {
fprintf(outFile, " {\n"); fprintf(outFile, " {\n");
fprintf(outFile, " name = \"%s\",\n", enums[i].name); fprintf(outFile, " name = \"%s\",\n", enums[i].name);
fprintf(outFile, " description = \"%s\",\n", EscapeBackslashes(enums[i].desc + 3)); fprintf(outFile, " description = \"%s\",\n", EscapeBackslashes(enums[i].desc));
fprintf(outFile, " values = {\n"); fprintf(outFile, " values = {\n");
for (int e = 0; e < enums[i].valueCount; e++) for (int e = 0; e < enums[i].valueCount; e++)
{ {
fprintf(outFile, " {\n"); fprintf(outFile, " {\n");
fprintf(outFile, " name = \"%s\",\n", enums[i].valueName[e]); fprintf(outFile, " name = \"%s\",\n", enums[i].valueName[e]);
fprintf(outFile, " value = %i,\n", enums[i].valueInteger[e]); fprintf(outFile, " value = %i,\n", enums[i].valueInteger[e]);
fprintf(outFile, " description = \"%s\"\n", EscapeBackslashes(enums[i].valueDesc[e] + 3)); fprintf(outFile, " description = \"%s\"\n", EscapeBackslashes(enums[i].valueDesc[e]));
fprintf(outFile, " }"); fprintf(outFile, " }");
if (e < enums[i].valueCount - 1) fprintf(outFile, ",\n"); if (e < enums[i].valueCount - 1) fprintf(outFile, ",\n");
else fprintf(outFile, "\n"); else fprintf(outFile, "\n");
@ -1311,7 +1316,7 @@ static void ExportParsedData(const char *fileName, int format)
{ {
fprintf(outFile, " value = \"%s\",\n", defines[i].value); fprintf(outFile, " value = \"%s\",\n", defines[i].value);
} }
fprintf(outFile, " description = \"%s\"\n", defines[i].desc + 3); fprintf(outFile, " description = \"%s\"\n", defines[i].desc);
fprintf(outFile, " }"); fprintf(outFile, " }");
if (i < defineCount - 1) fprintf(outFile, ",\n"); if (i < defineCount - 1) fprintf(outFile, ",\n");
@ -1325,7 +1330,7 @@ static void ExportParsedData(const char *fileName, int format)
{ {
fprintf(outFile, " {\n"); fprintf(outFile, " {\n");
fprintf(outFile, " name = \"%s\",\n", funcs[i].name); fprintf(outFile, " name = \"%s\",\n", funcs[i].name);
fprintf(outFile, " description = \"%s\",\n", EscapeBackslashes(funcs[i].desc + 3)); fprintf(outFile, " description = \"%s\",\n", EscapeBackslashes(funcs[i].desc));
fprintf(outFile, " returnType = \"%s\"", funcs[i].retType); fprintf(outFile, " returnType = \"%s\"", funcs[i].retType);
if (funcs[i].paramCount == 0) fprintf(outFile, "\n"); if (funcs[i].paramCount == 0) fprintf(outFile, "\n");
@ -1358,14 +1363,14 @@ static void ExportParsedData(const char *fileName, int format)
{ {
fprintf(outFile, " {\n"); fprintf(outFile, " {\n");
fprintf(outFile, " \"name\": \"%s\",\n", structs[i].name); fprintf(outFile, " \"name\": \"%s\",\n", structs[i].name);
fprintf(outFile, " \"description\": \"%s\",\n", EscapeBackslashes(structs[i].desc + 3)); fprintf(outFile, " \"description\": \"%s\",\n", EscapeBackslashes(structs[i].desc));
fprintf(outFile, " \"fields\": [\n"); fprintf(outFile, " \"fields\": [\n");
for (int f = 0; f < structs[i].fieldCount; f++) for (int f = 0; f < structs[i].fieldCount; f++)
{ {
fprintf(outFile, " {\n"); fprintf(outFile, " {\n");
fprintf(outFile, " \"type\": \"%s\",\n", structs[i].fieldType[f]); fprintf(outFile, " \"type\": \"%s\",\n", structs[i].fieldType[f]);
fprintf(outFile, " \"name\": \"%s\",\n", structs[i].fieldName[f]); fprintf(outFile, " \"name\": \"%s\",\n", structs[i].fieldName[f]);
fprintf(outFile, " \"description\": \"%s\"\n", EscapeBackslashes(structs[i].fieldDesc[f] + 3)); fprintf(outFile, " \"description\": \"%s\"\n", EscapeBackslashes(structs[i].fieldDesc[f]));
fprintf(outFile, " }"); fprintf(outFile, " }");
if (f < structs[i].fieldCount - 1) fprintf(outFile, ",\n"); if (f < structs[i].fieldCount - 1) fprintf(outFile, ",\n");
else fprintf(outFile, "\n"); else fprintf(outFile, "\n");
@ -1384,7 +1389,7 @@ static void ExportParsedData(const char *fileName, int format)
fprintf(outFile, " {\n"); fprintf(outFile, " {\n");
fprintf(outFile, " \"type\": \"%s\",\n", aliases[i].type); fprintf(outFile, " \"type\": \"%s\",\n", aliases[i].type);
fprintf(outFile, " \"name\": \"%s\",\n", aliases[i].name); fprintf(outFile, " \"name\": \"%s\",\n", aliases[i].name);
fprintf(outFile, " \"description\": \"%s\"\n", aliases[i].desc + 3); fprintf(outFile, " \"description\": \"%s\"\n", aliases[i].desc);
fprintf(outFile, " }"); fprintf(outFile, " }");
if (i < aliasCount - 1) fprintf(outFile, ",\n"); if (i < aliasCount - 1) fprintf(outFile, ",\n");
@ -1398,14 +1403,14 @@ static void ExportParsedData(const char *fileName, int format)
{ {
fprintf(outFile, " {\n"); fprintf(outFile, " {\n");
fprintf(outFile, " \"name\": \"%s\",\n", enums[i].name); fprintf(outFile, " \"name\": \"%s\",\n", enums[i].name);
fprintf(outFile, " \"description\": \"%s\",\n", EscapeBackslashes(enums[i].desc + 3)); fprintf(outFile, " \"description\": \"%s\",\n", EscapeBackslashes(enums[i].desc));
fprintf(outFile, " \"values\": [\n"); fprintf(outFile, " \"values\": [\n");
for (int e = 0; e < enums[i].valueCount; e++) for (int e = 0; e < enums[i].valueCount; e++)
{ {
fprintf(outFile, " {\n"); fprintf(outFile, " {\n");
fprintf(outFile, " \"name\": \"%s\",\n", enums[i].valueName[e]); fprintf(outFile, " \"name\": \"%s\",\n", enums[i].valueName[e]);
fprintf(outFile, " \"value\": %i,\n", enums[i].valueInteger[e]); fprintf(outFile, " \"value\": %i,\n", enums[i].valueInteger[e]);
fprintf(outFile, " \"description\": \"%s\"\n", EscapeBackslashes(enums[i].valueDesc[e] + 3)); fprintf(outFile, " \"description\": \"%s\"\n", EscapeBackslashes(enums[i].valueDesc[e]));
fprintf(outFile, " }"); fprintf(outFile, " }");
if (e < enums[i].valueCount - 1) fprintf(outFile, ",\n"); if (e < enums[i].valueCount - 1) fprintf(outFile, ",\n");
else fprintf(outFile, "\n"); else fprintf(outFile, "\n");
@ -1440,7 +1445,7 @@ static void ExportParsedData(const char *fileName, int format)
{ {
fprintf(outFile, " \"value\": \"%s\",\n", defines[i].value); fprintf(outFile, " \"value\": \"%s\",\n", defines[i].value);
} }
fprintf(outFile, " \"description\": \"%s\"\n", defines[i].desc + 3); fprintf(outFile, " \"description\": \"%s\"\n", defines[i].desc);
fprintf(outFile, " }"); fprintf(outFile, " }");
if (i < defineCount - 1) fprintf(outFile, ",\n"); if (i < defineCount - 1) fprintf(outFile, ",\n");
@ -1454,7 +1459,7 @@ static void ExportParsedData(const char *fileName, int format)
{ {
fprintf(outFile, " {\n"); fprintf(outFile, " {\n");
fprintf(outFile, " \"name\": \"%s\",\n", funcs[i].name); fprintf(outFile, " \"name\": \"%s\",\n", funcs[i].name);
fprintf(outFile, " \"description\": \"%s\",\n", EscapeBackslashes(funcs[i].desc + 3)); fprintf(outFile, " \"description\": \"%s\",\n", EscapeBackslashes(funcs[i].desc));
fprintf(outFile, " \"returnType\": \"%s\"", funcs[i].retType); fprintf(outFile, " \"returnType\": \"%s\"", funcs[i].retType);
if (funcs[i].paramCount == 0) fprintf(outFile, "\n"); if (funcs[i].paramCount == 0) fprintf(outFile, "\n");
@ -1520,10 +1525,10 @@ static void ExportParsedData(const char *fileName, int format)
fprintf(outFile, " <Structs count=\"%i\">\n", structCount); fprintf(outFile, " <Structs count=\"%i\">\n", structCount);
for (int i = 0; i < structCount; i++) for (int i = 0; i < structCount; i++)
{ {
fprintf(outFile, " <Struct name=\"%s\" fieldCount=\"%i\" desc=\"%s\">\n", structs[i].name, structs[i].fieldCount, structs[i].desc + 3); fprintf(outFile, " <Struct name=\"%s\" fieldCount=\"%i\" desc=\"%s\">\n", structs[i].name, structs[i].fieldCount, structs[i].desc);
for (int f = 0; f < structs[i].fieldCount; f++) for (int f = 0; f < structs[i].fieldCount; f++)
{ {
fprintf(outFile, " <Field type=\"%s\" name=\"%s\" desc=\"%s\" />\n", structs[i].fieldType[f], structs[i].fieldName[f], structs[i].fieldDesc[f] + 3); fprintf(outFile, " <Field type=\"%s\" name=\"%s\" desc=\"%s\" />\n", structs[i].fieldType[f], structs[i].fieldName[f], structs[i].fieldDesc[f]);
} }
fprintf(outFile, " </Struct>\n"); fprintf(outFile, " </Struct>\n");
} }
@ -1533,7 +1538,7 @@ static void ExportParsedData(const char *fileName, int format)
fprintf(outFile, " <Aliases count=\"%i\">\n", aliasCount); fprintf(outFile, " <Aliases count=\"%i\">\n", aliasCount);
for (int i = 0; i < aliasCount; i++) for (int i = 0; i < aliasCount; i++)
{ {
fprintf(outFile, " <Alias type=\"%s\" name=\"%s\" desc=\"%s\" />\n", aliases[i].name, aliases[i].type, aliases[i].desc + 3); fprintf(outFile, " <Alias type=\"%s\" name=\"%s\" desc=\"%s\" />\n", aliases[i].name, aliases[i].type, aliases[i].desc);
} }
fprintf(outFile, " </Aliases>\n"); fprintf(outFile, " </Aliases>\n");
@ -1541,10 +1546,10 @@ static void ExportParsedData(const char *fileName, int format)
fprintf(outFile, " <Enums count=\"%i\">\n", enumCount); fprintf(outFile, " <Enums count=\"%i\">\n", enumCount);
for (int i = 0; i < enumCount; i++) for (int i = 0; i < enumCount; i++)
{ {
fprintf(outFile, " <Enum name=\"%s\" valueCount=\"%i\" desc=\"%s\">\n", enums[i].name, enums[i].valueCount, enums[i].desc + 3); fprintf(outFile, " <Enum name=\"%s\" valueCount=\"%i\" desc=\"%s\">\n", enums[i].name, enums[i].valueCount, enums[i].desc);
for (int v = 0; v < enums[i].valueCount; v++) for (int v = 0; v < enums[i].valueCount; v++)
{ {
fprintf(outFile, " <Value name=\"%s\" integer=\"%i\" desc=\"%s\" />\n", enums[i].valueName[v], enums[i].valueInteger[v], enums[i].valueDesc[v] + 3); fprintf(outFile, " <Value name=\"%s\" integer=\"%i\" desc=\"%s\" />\n", enums[i].valueName[v], enums[i].valueInteger[v], enums[i].valueDesc[v]);
} }
fprintf(outFile, " </Enum>\n"); fprintf(outFile, " </Enum>\n");
} }
@ -1563,7 +1568,7 @@ static void ExportParsedData(const char *fileName, int format)
{ {
fprintf(outFile, "value=\"%s\"", defines[i].value); fprintf(outFile, "value=\"%s\"", defines[i].value);
} }
fprintf(outFile, " desc=\"%s\" />\n", defines[i].desc + 3); fprintf(outFile, " desc=\"%s\" />\n", defines[i].desc);
} }
fprintf(outFile, " </Defines>\n"); fprintf(outFile, " </Defines>\n");
@ -1571,10 +1576,10 @@ static void ExportParsedData(const char *fileName, int format)
fprintf(outFile, " <Functions count=\"%i\">\n", funcCount); fprintf(outFile, " <Functions count=\"%i\">\n", funcCount);
for (int i = 0; i < funcCount; i++) for (int i = 0; i < funcCount; i++)
{ {
fprintf(outFile, " <Function name=\"%s\" retType=\"%s\" paramCount=\"%i\" desc=\"%s\">\n", funcs[i].name, funcs[i].retType, funcs[i].paramCount, funcs[i].desc + 3); fprintf(outFile, " <Function name=\"%s\" retType=\"%s\" paramCount=\"%i\" desc=\"%s\">\n", funcs[i].name, funcs[i].retType, funcs[i].paramCount, funcs[i].desc);
for (int p = 0; p < funcs[i].paramCount; p++) for (int p = 0; p < funcs[i].paramCount; p++)
{ {
fprintf(outFile, " <Param type=\"%s\" name=\"%s\" desc=\"%s\" />\n", funcs[i].paramType[p], funcs[i].paramName[p], funcs[i].paramDesc[p] + 3); fprintf(outFile, " <Param type=\"%s\" name=\"%s\" desc=\"%s\" />\n", funcs[i].paramType[p], funcs[i].paramName[p], funcs[i].paramDesc[p]);
} }
fprintf(outFile, " </Function>\n"); fprintf(outFile, " </Function>\n");
} }