header generator: merge enums and inttypes

This commit is contained in:
nakst 2022-02-18 13:07:52 +00:00
parent c68c925bba
commit 7352b26191
4 changed files with 69 additions and 130 deletions

View File

@ -1,4 +1,4 @@
enum EsStandardIcon { // Taken from the elementary icon pack, see res/Icons for license. inttype EsStandardIcon enum none { // Taken from the elementary icon pack, see res/Icons for license.
ES_ICON_NONE ES_ICON_NONE
ES_ICON_ACTION_UNAVAILABLE_SYMBOLIC ES_ICON_ACTION_UNAVAILABLE_SYMBOLIC
ES_ICON_ADDRESS_BOOK_NEW ES_ICON_ADDRESS_BOOK_NEW

View File

@ -890,7 +890,7 @@ inttype EsAnnouncementFlags uint64_t none {
include desktop/icons.header include desktop/icons.header
enum EsFatalError { inttype EsFatalError enum none {
ES_FATAL_ERROR_ABORT ES_FATAL_ERROR_ABORT
ES_FATAL_ERROR_INCORRECT_FILE_ACCESS ES_FATAL_ERROR_INCORRECT_FILE_ACCESS
ES_FATAL_ERROR_INCORRECT_NODE_TYPE ES_FATAL_ERROR_INCORRECT_NODE_TYPE
@ -905,7 +905,7 @@ enum EsFatalError {
ES_FATAL_ERROR_COUNT ES_FATAL_ERROR_COUNT
} }
private enum EsSyscallType { private inttype EsSyscallType enum none {
// Memory. // Memory.
ES_SYSCALL_MEMORY_ALLOCATE ES_SYSCALL_MEMORY_ALLOCATE
@ -1014,7 +1014,7 @@ private enum EsSyscallType {
ES_SYSCALL_COUNT ES_SYSCALL_COUNT
} }
enum EsMessageType { inttype EsMessageType enum none {
ES_MSG_INVALID = 0x0000 ES_MSG_INVALID = 0x0000
// Window manager messages (don't rearrange; see SendMessageToWindow in kernel/window_manager.cpp): // Window manager messages (don't rearrange; see SendMessageToWindow in kernel/window_manager.cpp):
@ -1173,7 +1173,7 @@ enum EsMessageType {
ES_MSG_USER_END = 0xBFFF ES_MSG_USER_END = 0xBFFF
} }
enum EsCursorStyle { inttype EsCursorStyle enum none {
ES_CURSOR_NORMAL ES_CURSOR_NORMAL
ES_CURSOR_TEXT ES_CURSOR_TEXT
ES_CURSOR_RESIZE_VERTICAL ES_CURSOR_RESIZE_VERTICAL
@ -1206,7 +1206,7 @@ enum EsCursorStyle {
ES_CURSOR_COUNT ES_CURSOR_COUNT
} }
enum EsWindowStyle { inttype EsWindowStyle enum none {
ES_WINDOW_NORMAL ES_WINDOW_NORMAL
ES_WINDOW_CONTAINER ES_WINDOW_CONTAINER
ES_WINDOW_MENU ES_WINDOW_MENU
@ -1215,13 +1215,13 @@ enum EsWindowStyle {
ES_WINDOW_INSPECTOR ES_WINDOW_INSPECTOR
} }
enum EsCheckState { inttype EsCheckState enum none {
ES_CHECK_UNCHECKED = 0 ES_CHECK_UNCHECKED = 0
ES_CHECK_CHECKED = 1 ES_CHECK_CHECKED = 1
ES_CHECK_INDETERMINATE = 2 ES_CHECK_INDETERMINATE = 2
} }
enum EsTransitionType { inttype EsTransitionType enum none {
ES_TRANSITION_NONE ES_TRANSITION_NONE
ES_TRANSITION_SLIDE_UP ES_TRANSITION_SLIDE_UP
ES_TRANSITION_SLIDE_DOWN ES_TRANSITION_SLIDE_DOWN
@ -1245,17 +1245,17 @@ enum EsTransitionType {
ES_TRANSITION_SLIDE_DOWN_UNDER ES_TRANSITION_SLIDE_DOWN_UNDER
} }
enum EsMemoryProtection { inttype EsMemoryProtection enum none {
ES_MEMORY_PROTECTION_READ_ONLY ES_MEMORY_PROTECTION_READ_ONLY
ES_MEMORY_PROTECTION_READ_WRITE ES_MEMORY_PROTECTION_READ_WRITE
ES_MEMORY_PROTECTION_EXECUTABLE ES_MEMORY_PROTECTION_EXECUTABLE
} }
enum EsClipboard { inttype EsClipboard enum none {
ES_CLIPBOARD_PRIMARY ES_CLIPBOARD_PRIMARY
} }
enum EsDeviceType { inttype EsDeviceType enum none {
ES_DEVICE_OTHER ES_DEVICE_OTHER
ES_DEVICE_CONTROLLER ES_DEVICE_CONTROLLER
ES_DEVICE_FILE_SYSTEM ES_DEVICE_FILE_SYSTEM
@ -1271,13 +1271,13 @@ enum EsDeviceType {
ES_DEVICE_CLOCK ES_DEVICE_CLOCK
} }
enum EsClipboardFormat { inttype EsClipboardFormat enum none {
ES_CLIPBOARD_FORMAT_INVALID ES_CLIPBOARD_FORMAT_INVALID
ES_CLIPBOARD_FORMAT_TEXT ES_CLIPBOARD_FORMAT_TEXT
ES_CLIPBOARD_FORMAT_PATH_LIST ES_CLIPBOARD_FORMAT_PATH_LIST
} }
enum EsDeviceControlType { inttype EsDeviceControlType enum none {
ES_DEVICE_CONTROL_BLOCK_GET_INFORMATION = 0x1001 ES_DEVICE_CONTROL_BLOCK_GET_INFORMATION = 0x1001
ES_DEVICE_CONTROL_BLOCK_READ = 0x1002 ES_DEVICE_CONTROL_BLOCK_READ = 0x1002
ES_DEVICE_CONTROL_BLOCK_WRITE = 0x1003 ES_DEVICE_CONTROL_BLOCK_WRITE = 0x1003

View File

@ -1,5 +1,3 @@
// TODO Merge enums and inttypes.
const char **apiTableEntries; const char **apiTableEntries;
File output, outputAPIArray, outputSyscallArray, outputDependencies, outputEnumStringsArray; File output, outputAPIArray, outputSyscallArray, outputDependencies, outputEnumStringsArray;
@ -48,7 +46,6 @@ typedef struct Token {
#define ENTRY_ROOT (0) #define ENTRY_ROOT (0)
#define ENTRY_DEFINE (1) #define ENTRY_DEFINE (1)
#define ENTRY_INTTYPE (2) #define ENTRY_INTTYPE (2)
#define ENTRY_ENUM (3)
#define ENTRY_STRUCT (4) #define ENTRY_STRUCT (4)
#define ENTRY_UNION (5) #define ENTRY_UNION (5)
#define ENTRY_FUNCTION (6) #define ENTRY_FUNCTION (6)
@ -348,8 +345,8 @@ void ParseAnnotationsUntilSemicolon(Entry *entry) {
} }
} }
Entry ParseEnum(bool allowImplicitValue) { Entry ParseIntType() {
Entry entry = { .type = ENTRY_ENUM }; Entry entry = { .type = ENTRY_INTTYPE };
Token token = NextToken(); Token token = NextToken();
while (true) { while (true) {
@ -369,8 +366,6 @@ Entry ParseEnum(bool allowImplicitValue) {
while (isspace(*define.define.value)) define.define.value++; while (isspace(*define.define.value)) define.define.value++;
position += length; position += length;
token = NextToken(); token = NextToken();
} else if (!allowImplicitValue) {
assert(false);
} }
arrput(entry.children, define); arrput(entry.children, define);
@ -415,14 +410,6 @@ void ParseFile(Entry *root, const char *name) {
currentLine = oldCurrentLine; currentLine = oldCurrentLine;
buffer[position + length] = a; buffer[position + length] = a;
position += length; position += length;
} else if (token.type == TOKEN_ENUM) {
Token name = NextToken();
assert(name.type == TOKEN_IDENTIFIER);
assert(NextToken().type == TOKEN_LEFT_BRACE);
Entry entry = ParseEnum(true);
entry.isPrivate = isPrivate;
entry.name = TokenToString(name);
arrput(root->children, entry);
} else if (token.type == TOKEN_STRUCT) { } else if (token.type == TOKEN_STRUCT) {
Token structName = NextToken(); Token structName = NextToken();
assert(structName.type == TOKEN_IDENTIFIER); assert(structName.type == TOKEN_IDENTIFIER);
@ -436,13 +423,12 @@ void ParseFile(Entry *root, const char *name) {
Token bitsetName = NextToken(); Token bitsetName = NextToken();
assert(bitsetName.type == TOKEN_IDENTIFIER); assert(bitsetName.type == TOKEN_IDENTIFIER);
Token storageType = NextToken(); Token storageType = NextToken();
assert(storageType.type == TOKEN_IDENTIFIER); assert(storageType.type == TOKEN_IDENTIFIER || storageType.type == TOKEN_ENUM);
Token parent = NextToken(); Token parent = NextToken();
assert(parent.type == TOKEN_IDENTIFIER); assert(parent.type == TOKEN_IDENTIFIER);
assert(NextToken().type == TOKEN_LEFT_BRACE); assert(NextToken().type == TOKEN_LEFT_BRACE);
Entry entry = ParseEnum(false); Entry entry = ParseIntType();
entry.isPrivate = isPrivate; entry.isPrivate = isPrivate;
entry.type = ENTRY_INTTYPE;
entry.name = TokenToString(bitsetName); entry.name = TokenToString(bitsetName);
entry.inttype.storageType = TokenToString(storageType); entry.inttype.storageType = TokenToString(storageType);
entry.inttype.parent = TokenToString(parent); entry.inttype.parent = TokenToString(parent);
@ -698,46 +684,48 @@ void OutputC(Entry *root) {
OutputCRecord(entry, 0); OutputCRecord(entry, 0);
FilePrintFormat(output, "#ifdef %s_MEMBER_FUNCTIONS\n\t%s_MEMBER_FUNCTIONS\n#endif\n", entry->name, entry->name); FilePrintFormat(output, "#ifdef %s_MEMBER_FUNCTIONS\n\t%s_MEMBER_FUNCTIONS\n#endif\n", entry->name, entry->name);
FilePrintFormat(output, "} %s;\n\n", entry->name); FilePrintFormat(output, "} %s;\n\n", entry->name);
} else if (entry->type == ENTRY_ENUM) { } else if (entry->type == ENTRY_INTTYPE) {
bool isSyscallType = 0 == strcmp(entry->name, "EsSyscallType"); if (0 == strcmp(entry->inttype.storageType, "enum")) {
FilePrintFormat(output, "typedef enum %s {\n", entry->name); bool isSyscallType = 0 == strcmp(entry->name, "EsSyscallType");
FilePrintFormat(output, "typedef enum %s {\n", entry->name);
if (outputEnumStringsArray.ready) { if (outputEnumStringsArray.ready) {
FilePrintFormat(outputEnumStringsArray, "static const EnumString enumStrings_%s[] = {\n", entry->name); FilePrintFormat(outputEnumStringsArray, "static const EnumString enumStrings_%s[] = {\n", entry->name);
}
for (int i = 0; i < arrlen(entry->children); i++) {
if (entry->children[i].define.value) {
FilePrintFormat(output, "\t%s = %s,\n", entry->children[i].name, entry->children[i].define.value);
} else {
FilePrintFormat(output, "\t%s,\n", entry->children[i].name);
} }
if (isSyscallType && outputSyscallArray.ready) { for (int i = 0; i < arrlen(entry->children); i++) {
FilePrintFormat(outputSyscallArray, "Do%s,\n", entry->children[i].name); if (entry->children[i].define.value) {
FilePrintFormat(output, "\t%s = %s,\n", entry->children[i].name, entry->children[i].define.value);
} else {
FilePrintFormat(output, "\t%s,\n", entry->children[i].name);
}
if (isSyscallType && outputSyscallArray.ready) {
FilePrintFormat(outputSyscallArray, "Do%s,\n", entry->children[i].name);
}
if (outputEnumStringsArray.ready) {
FilePrintFormat(outputEnumStringsArray, "\t{ \"%s\", %s },\n", entry->children[i].name,
entry->children[i].define.value ?: "-1");
}
} }
if (outputEnumStringsArray.ready) { if (outputEnumStringsArray.ready) {
FilePrintFormat(outputEnumStringsArray, "\t{ \"%s\", %s },\n", entry->children[i].name, FilePrintFormat(outputEnumStringsArray, "\t{ nullptr, -1 },\n};\n\n");
entry->children[i].define.value ?: "-1");
} }
}
if (outputEnumStringsArray.ready) { FilePrintFormat(output, "} %s;\n\n", entry->name);
FilePrintFormat(outputEnumStringsArray, "\t{ nullptr, -1 },\n};\n\n"); } else {
} FilePrintFormat(output, "typedef %s %s;\n", entry->inttype.parent ? entry->inttype.parent : entry->inttype.storageType, entry->name);
FilePrintFormat(output, "} %s;\n\n", entry->name); for (int i = 0; i < arrlen(entry->children); i++) {
} else if (entry->type == ENTRY_INTTYPE) { if (0 == memcmp(entry->children[i].define.value, "bit ", 4)) {
FilePrintFormat(output, "typedef %s %s;\n", entry->inttype.parent ? entry->inttype.parent : entry->inttype.storageType, entry->name); FilePrintFormat(output, "#define %s ((%s) 1 << %s)\n",
entry->children[i].name, entry->name, entry->children[i].define.value + 4);
for (int i = 0; i < arrlen(entry->children); i++) { } else {
if (0 == memcmp(entry->children[i].define.value, "bit ", 4)) { FilePrintFormat(output, "#define %s ((%s) (%s))\n",
FilePrintFormat(output, "#define %s ((%s) 1 << %s)\n", entry->children[i].name, entry->name, entry->children[i].define.value);
entry->children[i].name, entry->name, entry->children[i].define.value + 4); }
} else {
FilePrintFormat(output, "#define %s ((%s) (%s))\n",
entry->children[i].name, entry->name, entry->children[i].define.value);
} }
} }
} else if (entry->type == ENTRY_API_TYPE) { } else if (entry->type == ENTRY_API_TYPE) {
@ -922,15 +910,6 @@ void OutputOdinFunction(Entry *entry, Entry *root) {
} else if (0 == strcmp(initialValue, "FLAGS_DEFAULT")) { } else if (0 == strcmp(initialValue, "FLAGS_DEFAULT")) {
initialValue = "{}"; initialValue = "{}";
} else { } else {
for (int i = 0; i < arrlen(root->children); i++) {
Entry *entry = root->children + i;
if (entry->type == ENTRY_ENUM && 0 == strcmp(variable->variable.type, entry->name)) {
needLeadingDot = true;
break;
}
}
for (int i = 0; i < arrlen(root->children); i++) { for (int i = 0; i < arrlen(root->children); i++) {
Entry *entry = root->children + i; Entry *entry = root->children + i;
@ -1013,7 +992,6 @@ void OutputOdin(Entry *root) {
const char *name = TrimPrefix(entry->name); const char *name = TrimPrefix(entry->name);
const char *value = OdinReplaceTypes(entry->define.value, false); const char *value = OdinReplaceTypes(entry->define.value, false);
const char *enumPrefix = NULL;
char e[64]; char e[64];
int ep = 0; int ep = 0;
@ -1027,44 +1005,23 @@ void OutputOdin(Entry *root) {
} }
} }
for (int i = 0; i < arrlen(root->children); i++) { FilePrintFormat(output, "%s :: %s;\n", name, value);
if (root->children[i].type == ENTRY_ENUM) {
for (int j = 0; j < arrlen(root->children[i].children); j++) {
const char *enumName = TrimPrefix(root->children[i].children[j].name);
if (0 == strcmp(enumName, e)) {
enumPrefix = TrimPrefix(root->children[i].name);
value = enumName;
goto gotEnumPrefix;
}
}
}
}
gotEnumPrefix:;
FilePrintFormat(output, "%s :: %s%s%s;\n", name, enumPrefix ? enumPrefix : "", enumPrefix ? "." : "", value);
} else if (entry->type == ENTRY_STRUCT) { } else if (entry->type == ENTRY_STRUCT) {
FilePrintFormat(output, "%s :: struct {\n", TrimPrefix(entry->name)); FilePrintFormat(output, "%s :: struct {\n", TrimPrefix(entry->name));
OutputOdinRecord(entry, 0); OutputOdinRecord(entry, 0);
FilePrintFormat(output, "}\n");
} else if (entry->type == ENTRY_ENUM) {
FilePrintFormat(output, "%s :: enum i32 {\n", TrimPrefix(entry->name));
for (int i = 0; i < arrlen(entry->children); i++) {
if (entry->children[i].define.value) {
FilePrintFormat(output, "\t%s = %s,\n", TrimPrefix(entry->children[i].name), entry->children[i].define.value);
} else {
FilePrintFormat(output, "\t%s,\n", TrimPrefix(entry->children[i].name));
}
}
FilePrintFormat(output, "}\n"); FilePrintFormat(output, "}\n");
} else if (entry->type == ENTRY_INTTYPE) { } else if (entry->type == ENTRY_INTTYPE) {
uint32_t autoIndex = 0;
FilePrintFormat(output, "%s :: %s;\n", TrimPrefix(entry->name), FilePrintFormat(output, "%s :: %s;\n", TrimPrefix(entry->name),
entry->inttype.parent ? TrimPrefix(entry->inttype.parent) : entry->inttype.storageType); entry->inttype.parent ? TrimPrefix(entry->inttype.parent)
: 0 == strcmp(entry->inttype.storageType, "enum") ? "i32" : entry->inttype.storageType);
for (int i = 0; i < arrlen(entry->children); i++) { for (int i = 0; i < arrlen(entry->children); i++) {
if (0 == memcmp(entry->children[i].define.value, "bit ", 4)) { if (!entry->children[i].define.value) {
FilePrintFormat(output, "%s :: %d;\n",
TrimPrefix(entry->children[i].name), autoIndex++);
} else if (0 == memcmp(entry->children[i].define.value, "bit ", 4)) {
FilePrintFormat(output, "%s :: 1 << %s;\n", FilePrintFormat(output, "%s :: 1 << %s;\n",
TrimPrefix(entry->children[i].name), entry->children[i].define.value + 4); TrimPrefix(entry->children[i].name), entry->children[i].define.value + 4);
} else { } else {
@ -1278,18 +1235,6 @@ void OutputZig(Entry *root) {
} else if (entry->type == ENTRY_STRUCT) { } else if (entry->type == ENTRY_STRUCT) {
FilePrintFormat(output, "pub const %s = extern struct {\n", TrimPrefix(entry->name)); FilePrintFormat(output, "pub const %s = extern struct {\n", TrimPrefix(entry->name));
OutputZigRecord(entry, 0, false); OutputZigRecord(entry, 0, false);
FilePrintFormat(output, "};\n");
} else if (entry->type == ENTRY_ENUM) {
FilePrintFormat(output, "pub const %s = extern enum {\n", TrimPrefix(entry->name));
for (int i = 0; i < arrlen(entry->children); i++) {
if (entry->children[i].define.value) {
FilePrintFormat(output, " %s = %s,\n", TrimPrefix(entry->children[i].name), ZigRemoveTabs(entry->children[i].define.value));
} else {
FilePrintFormat(output, " %s,\n", TrimPrefix(entry->children[i].name));
}
}
FilePrintFormat(output, "};\n"); FilePrintFormat(output, "};\n");
} else if (entry->type == ENTRY_API_TYPE) { } else if (entry->type == ENTRY_API_TYPE) {
bool hasParent = 0 != strcmp(entry->apiType.parent, "none"); bool hasParent = 0 != strcmp(entry->apiType.parent, "none");
@ -1299,14 +1244,20 @@ void OutputZig(Entry *root) {
} else if (entry->type == ENTRY_TYPE_NAME) { } else if (entry->type == ENTRY_TYPE_NAME) {
FilePrintFormat(output, "pub const %s = %s;\n", TrimPrefix(entry->name), TrimPrefix(ZigReplaceTypes(entry->oldTypeName, true))); FilePrintFormat(output, "pub const %s = %s;\n", TrimPrefix(entry->name), TrimPrefix(ZigReplaceTypes(entry->oldTypeName, true)));
} else if (entry->type == ENTRY_INTTYPE) { } else if (entry->type == ENTRY_INTTYPE) {
uint32_t autoIndex = 0;
FilePrintFormat(output, "pub const %s = %s;\n", TrimPrefix(entry->name), FilePrintFormat(output, "pub const %s = %s;\n", TrimPrefix(entry->name),
TrimPrefix(ZigReplaceTypes(entry->inttype.storageType, true))); 0 == strcmp(entry->inttype.storageType, "enum") ? "i32"
: TrimPrefix(ZigReplaceTypes(entry->inttype.storageType, true)));
for (int i = 0; i < arrlen(entry->children); i++) { for (int i = 0; i < arrlen(entry->children); i++) {
if (0 == memcmp(entry->children[i].define.value, "bit ", 4)) { if (!entry->children[i].define.value) {
FilePrintFormat(output, "pub const %s = %d;\n",
TrimPrefix(entry->children[i].name), autoIndex++);
} else if (0 == memcmp(entry->children[i].define.value, "bit ", 4)) {
FilePrintFormat(output, "pub const %s = 1 << %s;\n", FilePrintFormat(output, "pub const %s = 1 << %s;\n",
TrimPrefix(entry->children[i].name), entry->children[i].define.value + 4); TrimPrefix(entry->children[i].name), entry->children[i].define.value + 4);
} else { } else if (entry->children[i].define.value) {
FilePrintFormat(output, "pub const %s = %s;\n", FilePrintFormat(output, "pub const %s = %s;\n",
TrimPrefix(entry->children[i].name), entry->children[i].define.value); TrimPrefix(entry->children[i].name), entry->children[i].define.value);
} }
@ -1471,9 +1422,6 @@ void OutputScript(Entry *root) {
if (ScriptWriteBasicType(root->children[k].variable.type)) { if (ScriptWriteBasicType(root->children[k].variable.type)) {
foundType = true; foundType = true;
} }
} else if (root->children[k].type == ENTRY_ENUM) {
FilePrintFormat(output, "%s", root->children[k].name);
foundType = true;
} else if (root->children[k].type == ENTRY_STRUCT) { } else if (root->children[k].type == ENTRY_STRUCT) {
FilePrintFormat(output, "%s", root->children[k].name); FilePrintFormat(output, "%s", root->children[k].name);
foundType = true; foundType = true;
@ -1576,9 +1524,6 @@ void OutputScript(Entry *root) {
if (ScriptWriteBasicType(root->children[k].variable.type)) { if (ScriptWriteBasicType(root->children[k].variable.type)) {
foundType = true; foundType = true;
} }
} else if (root->children[k].type == ENTRY_ENUM) {
FilePrintFormat(output, "%s", root->children[k].name);
foundType = true;
} else if (root->children[k].type == ENTRY_STRUCT) { } else if (root->children[k].type == ENTRY_STRUCT) {
FilePrintFormat(output, "%s", root->children[k].name); FilePrintFormat(output, "%s", root->children[k].name);
foundType = true; foundType = true;
@ -1674,10 +1619,6 @@ void OutputScript(Entry *root) {
FilePrintFormat(output, "%s", root->children[k].name); FilePrintFormat(output, "%s", root->children[k].name);
foundType = true; foundType = true;
break; break;
} else if (root->children[k].type == ENTRY_ENUM && e.variable.pointer == 0) {
FilePrintFormat(output, "%s", root->children[k].name);
foundType = true;
break;
} else if (root->children[k].type == ENTRY_STRUCT && e.variable.pointer == 0) { } else if (root->children[k].type == ENTRY_STRUCT && e.variable.pointer == 0) {
FilePrintFormat(output, "%s", root->children[k].name); FilePrintFormat(output, "%s", root->children[k].name);
foundType = true; foundType = true;
@ -1761,8 +1702,6 @@ int AnalysisResolve(Entry *root, Entry e, Entry **unresolved, Entry *resolved, E
if (root->children[k].type == ENTRY_TYPE_NAME && e.variable.pointer == 0) { if (root->children[k].type == ENTRY_TYPE_NAME && e.variable.pointer == 0) {
return 1; return 1;
} else if (root->children[k].type == ENTRY_ENUM && e.variable.pointer == 0) {
return 1;
} else if (root->children[k].type == ENTRY_INTTYPE && e.variable.pointer == 0) { } else if (root->children[k].type == ENTRY_INTTYPE && e.variable.pointer == 0) {
return 1; return 1;
} else if (root->children[k].type == ENTRY_API_TYPE && e.variable.pointer == 1) { } else if (root->children[k].type == ENTRY_API_TYPE && e.variable.pointer == 1) {

View File

@ -164,7 +164,7 @@ void GenerateMainIconPack() {
{ {
FILE *f = fopen("desktop/icons.header", "wb"); FILE *f = fopen("desktop/icons.header", "wb");
fprintf(f, "%s", "enum EsStandardIcon { // Taken from the elementary icon pack, see res/Icons for license.\n\tES_ICON_NONE\n"); fprintf(f, "%s", "inttype EsStandardIcon enum none { // Taken from the elementary icon pack, see res/Icons for license.\n\tES_ICON_NONE\n");
fclose(f); fclose(f);
} }