From bd2ea2acbba472edf8d5f76ac976c6aa9a4b5ca2 Mon Sep 17 00:00:00 2001 From: sonoro1234 Date: Wed, 6 Nov 2024 16:36:29 +0100 Subject: [PATCH] cpp2ffi: move typedefs_dict to gen_structs_and_enums_table --- generator/cpp2ffi.lua | 32 +++++++++++++++++++++++++---- generator/output/typedefs_dict.json | 21 ++++++++----------- generator/output/typedefs_dict.lua | 19 ++++++++--------- 3 files changed, 45 insertions(+), 27 deletions(-) diff --git a/generator/cpp2ffi.lua b/generator/cpp2ffi.lua index b3ff821..dcfe615 100644 --- a/generator/cpp2ffi.lua +++ b/generator/cpp2ffi.lua @@ -1292,7 +1292,7 @@ function M.Parser() self.typedefs_dict[key] = linet elseif not line:match"typedef%s*struct" then --discard typedef struct print("typedef not found") - print(key,value,line) + print(key,value,line,cdef[1],cdef[2]) end end end @@ -1366,7 +1366,7 @@ function M.Parser() return table.concat(txtclean) end function par:parseItems() - self:initTypedefsDict() + --self:initTypedefsDict() self.linenumdict = {} local cdefs2 = {} @@ -1911,7 +1911,7 @@ function M.Parser() function par:gen_structs_and_enums_table() print"--------------gen_structs_and_enums_table" local outtab = {enums={},structs={},locations={},enumtypes={},struct_comments={},enum_comments={}} - self.typedefs_table = {} + --self.typedefs_table = {} local enumsordered = {} unnamed_enum_counter = 0 self.templated_structs = {} @@ -1934,7 +1934,31 @@ function M.Parser() if it.re_name == "typedef_re" and not it.parent then local typedefdef,typedefname = it.item:match"typedef(.+)%s([^%s;]+);$" typedefname = strip(typedefname) - self.typedefs_table[typedefname] = strip(typedefdef) + --self.typedefs_table[typedefname] = strip(typedefdef) + self.typedefs_dict[typedefname] = strip(typedefdef) + elseif it.re_name == "functypedef_re" then + -- "^\n*%s*(typedef[%w%s%*_]+%([^*]*%*?%s*[%w_]+%s*%)%s*%b()%s*;)" + local key = it.item:match("%(%*([%w_]+)%)%([^%(%)]*%)") + if key then + local linet = it.item + linet = linet:gsub("[\n%s]+typedef ","") + linet = linet:gsub("%(%*("..key..")%)","(*)") + self.typedefs_dict[key] = linet + --print("functypedef_re",1,linet)--,clean_functypedef(line)) + else + --try function typedef + key = it.item:match("%(([%w_]+)%)%([^%(%)]*%)") + if key then + local linet = it.item + linet = linet:gsub("typedef ","") + linet = linet:gsub("%(("..key..")%)","()") + self.typedefs_dict[key] = linet + print("functypedef_re",2, it.item) + else + print("func typedef not found") + print(it.item) + end + end end elseif it.re_name == "enum_re" then enums_for_table(it, outtab, enumsordered) diff --git a/generator/output/typedefs_dict.json b/generator/output/typedefs_dict.json index 6ef78ed..9386d29 100644 --- a/generator/output/typedefs_dict.json +++ b/generator/output/typedefs_dict.json @@ -1,9 +1,9 @@ { - "ImBitArrayForNamedKeys": "ImBitArray", + "ImBitArrayForNamedKeys": "ImBitArray", "ImBitArrayPtr": "ImU32*", "ImBitVector": "struct ImBitVector", "ImColor": "struct ImColor", - "ImDrawCallback": "void(*)(const ImDrawList* parent_list,const ImDrawCmd* cmd);", + "ImDrawCallback": "void (*)(const ImDrawList* parent_list, const ImDrawCmd* cmd);", "ImDrawChannel": "struct ImDrawChannel", "ImDrawCmd": "struct ImDrawCmd", "ImDrawCmdHeader": "struct ImDrawCmdHeader", @@ -39,7 +39,7 @@ "ImGuiConfigFlags": "int", "ImGuiContext": "struct ImGuiContext", "ImGuiContextHook": "struct ImGuiContextHook", - "ImGuiContextHookCallback": "void(*)(ImGuiContext* ctx,ImGuiContextHook* hook);", + "ImGuiContextHookCallback": "void (*)(ImGuiContext* ctx, ImGuiContextHook* hook);", "ImGuiDataAuthority": "int", "ImGuiDataType": "int", "ImGuiDataTypeInfo": "struct ImGuiDataTypeInfo", @@ -54,7 +54,7 @@ "ImGuiDockNodeSettings": "struct ImGuiDockNodeSettings", "ImGuiDockRequest": "struct ImGuiDockRequest", "ImGuiDragDropFlags": "int", - "ImGuiErrorCallback": "void(*)(ImGuiContext* ctx,void* user_data,const char* msg);", + "ImGuiErrorCallback": "void (*)(ImGuiContext* ctx, void* user_data, const char* msg);", "ImGuiErrorRecoveryState": "struct ImGuiErrorRecoveryState", "ImGuiFocusRequestFlags": "int", "ImGuiFocusScopeData": "struct ImGuiFocusScopeData", @@ -73,7 +73,7 @@ "ImGuiInputEventMouseWheel": "struct ImGuiInputEventMouseWheel", "ImGuiInputEventText": "struct ImGuiInputEventText", "ImGuiInputFlags": "int", - "ImGuiInputTextCallback": "int(*)(ImGuiInputTextCallbackData* data);", + "ImGuiInputTextCallback": "int (*)(ImGuiInputTextCallbackData* data);", "ImGuiInputTextCallbackData": "struct ImGuiInputTextCallbackData", "ImGuiInputTextDeactivateData": "struct ImGuiInputTextDeactivateData", "ImGuiInputTextDeactivatedState": "struct ImGuiInputTextDeactivatedState", @@ -93,8 +93,8 @@ "ImGuiListClipperData": "struct ImGuiListClipperData", "ImGuiListClipperRange": "struct ImGuiListClipperRange", "ImGuiLocEntry": "struct ImGuiLocEntry", - "ImGuiMemAllocFunc": "void*(*)(size_t sz,void* user_data);", - "ImGuiMemFreeFunc": "void(*)(void* ptr,void* user_data);", + "ImGuiMemAllocFunc": "void* (*)(size_t sz, void* user_data);", + "ImGuiMemFreeFunc": "void (*)(void* ptr, void* user_data);", "ImGuiMenuColumns": "struct ImGuiMenuColumns", "ImGuiMetricsConfig": "struct ImGuiMetricsConfig", "ImGuiMouseButton": "int", @@ -130,7 +130,7 @@ "ImGuiSeparatorFlags": "int", "ImGuiSettingsHandler": "struct ImGuiSettingsHandler", "ImGuiShrinkWidthItem": "struct ImGuiShrinkWidthItem", - "ImGuiSizeCallback": "void(*)(ImGuiSizeCallbackData* data);", + "ImGuiSizeCallback": "void (*)(ImGuiSizeCallbackData* data);", "ImGuiSizeCallbackData": "struct ImGuiSizeCallbackData", "ImGuiSliderFlags": "int", "ImGuiStackLevelInfo": "struct ImGuiStackLevelInfo", @@ -201,8 +201,5 @@ "ImWchar": "ImWchar16", "ImWchar16": "unsigned short", "ImWchar32": "unsigned int", - "STB_TexteditState": "struct STB_TexteditState", - "const_iterator": "const value_type*", - "iterator": "value_type*", - "value_type": "T" + "STB_TexteditState": "struct STB_TexteditState" } \ No newline at end of file diff --git a/generator/output/typedefs_dict.lua b/generator/output/typedefs_dict.lua index 69cde1a..ceb24ff 100644 --- a/generator/output/typedefs_dict.lua +++ b/generator/output/typedefs_dict.lua @@ -1,9 +1,9 @@ local defs = {} -defs["ImBitArrayForNamedKeys"] = "ImBitArray" +defs["ImBitArrayForNamedKeys"] = "ImBitArray" defs["ImBitArrayPtr"] = "ImU32*" defs["ImBitVector"] = "struct ImBitVector" defs["ImColor"] = "struct ImColor" -defs["ImDrawCallback"] = "void(*)(const ImDrawList* parent_list,const ImDrawCmd* cmd);" +defs["ImDrawCallback"] = "void (*)(const ImDrawList* parent_list, const ImDrawCmd* cmd);" defs["ImDrawChannel"] = "struct ImDrawChannel" defs["ImDrawCmd"] = "struct ImDrawCmd" defs["ImDrawCmdHeader"] = "struct ImDrawCmdHeader" @@ -39,7 +39,7 @@ defs["ImGuiCond"] = "int" defs["ImGuiConfigFlags"] = "int" defs["ImGuiContext"] = "struct ImGuiContext" defs["ImGuiContextHook"] = "struct ImGuiContextHook" -defs["ImGuiContextHookCallback"] = "void(*)(ImGuiContext* ctx,ImGuiContextHook* hook);" +defs["ImGuiContextHookCallback"] = "void (*)(ImGuiContext* ctx, ImGuiContextHook* hook);" defs["ImGuiDataAuthority"] = "int" defs["ImGuiDataType"] = "int" defs["ImGuiDataTypeInfo"] = "struct ImGuiDataTypeInfo" @@ -54,7 +54,7 @@ defs["ImGuiDockNodeFlags"] = "int" defs["ImGuiDockNodeSettings"] = "struct ImGuiDockNodeSettings" defs["ImGuiDockRequest"] = "struct ImGuiDockRequest" defs["ImGuiDragDropFlags"] = "int" -defs["ImGuiErrorCallback"] = "void(*)(ImGuiContext* ctx,void* user_data,const char* msg);" +defs["ImGuiErrorCallback"] = "void (*)(ImGuiContext* ctx, void* user_data, const char* msg);" defs["ImGuiErrorRecoveryState"] = "struct ImGuiErrorRecoveryState" defs["ImGuiFocusRequestFlags"] = "int" defs["ImGuiFocusScopeData"] = "struct ImGuiFocusScopeData" @@ -73,7 +73,7 @@ defs["ImGuiInputEventMouseViewport"] = "struct ImGuiInputEventMouseViewport" defs["ImGuiInputEventMouseWheel"] = "struct ImGuiInputEventMouseWheel" defs["ImGuiInputEventText"] = "struct ImGuiInputEventText" defs["ImGuiInputFlags"] = "int" -defs["ImGuiInputTextCallback"] = "int(*)(ImGuiInputTextCallbackData* data);" +defs["ImGuiInputTextCallback"] = "int (*)(ImGuiInputTextCallbackData* data);" defs["ImGuiInputTextCallbackData"] = "struct ImGuiInputTextCallbackData" defs["ImGuiInputTextDeactivateData"] = "struct ImGuiInputTextDeactivateData" defs["ImGuiInputTextDeactivatedState"] = "struct ImGuiInputTextDeactivatedState" @@ -93,8 +93,8 @@ defs["ImGuiListClipper"] = "struct ImGuiListClipper" defs["ImGuiListClipperData"] = "struct ImGuiListClipperData" defs["ImGuiListClipperRange"] = "struct ImGuiListClipperRange" defs["ImGuiLocEntry"] = "struct ImGuiLocEntry" -defs["ImGuiMemAllocFunc"] = "void*(*)(size_t sz,void* user_data);" -defs["ImGuiMemFreeFunc"] = "void(*)(void* ptr,void* user_data);" +defs["ImGuiMemAllocFunc"] = "void* (*)(size_t sz, void* user_data);" +defs["ImGuiMemFreeFunc"] = "void (*)(void* ptr, void* user_data);" defs["ImGuiMenuColumns"] = "struct ImGuiMenuColumns" defs["ImGuiMetricsConfig"] = "struct ImGuiMetricsConfig" defs["ImGuiMouseButton"] = "int" @@ -130,7 +130,7 @@ defs["ImGuiSelectionUserData"] = "ImS64" defs["ImGuiSeparatorFlags"] = "int" defs["ImGuiSettingsHandler"] = "struct ImGuiSettingsHandler" defs["ImGuiShrinkWidthItem"] = "struct ImGuiShrinkWidthItem" -defs["ImGuiSizeCallback"] = "void(*)(ImGuiSizeCallbackData* data);" +defs["ImGuiSizeCallback"] = "void (*)(ImGuiSizeCallbackData* data);" defs["ImGuiSizeCallbackData"] = "struct ImGuiSizeCallbackData" defs["ImGuiSliderFlags"] = "int" defs["ImGuiStackLevelInfo"] = "struct ImGuiStackLevelInfo" @@ -202,8 +202,5 @@ defs["ImWchar"] = "ImWchar16" defs["ImWchar16"] = "unsigned short" defs["ImWchar32"] = "unsigned int" defs["STB_TexteditState"] = "struct STB_TexteditState" -defs["const_iterator"] = "const value_type*" -defs["iterator"] = "value_type*" -defs["value_type"] = "T" return defs \ No newline at end of file