mirror of
https://github.com/cimgui/cimgui.git
synced 2026-08-28 12:31:32 +00:00
Compare commits
38 Commits
1.92.7
...
docking_in
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
700140771a | ||
|
|
0fe23bd335 | ||
|
|
91ea8b056f | ||
|
|
773f3d56c4 | ||
|
|
ba1e982860 | ||
|
|
a5ae0de007 | ||
|
|
2d96a3ed57 | ||
|
|
e48d428b16 | ||
|
|
eee47a982e | ||
|
|
22bc54470a | ||
|
|
fedb6d334a | ||
|
|
9f545f9520 | ||
|
|
d658cc8699 | ||
|
|
af684b6cb1 | ||
|
|
bf9b984ef7 | ||
|
|
944385687d | ||
|
|
b705b2465a | ||
|
|
1531eea44a | ||
|
|
cd61f1ae57 | ||
|
|
053280dfff | ||
|
|
8aaa4b624e | ||
|
|
9bffa7632f | ||
|
|
e2c1d90128 | ||
|
|
64fcbf194b | ||
|
|
fced8c3451 | ||
|
|
7388e030e8 | ||
|
|
bbddc623b5 | ||
|
|
07fde25e7a | ||
|
|
1261b23193 | ||
|
|
650a427069 | ||
|
|
d24c440621 | ||
|
|
e90e027c82 | ||
|
|
1e3cfe7157 | ||
|
|
0313c558fc | ||
|
|
ad70f13873 | ||
|
|
a444aa6c50 | ||
|
|
fab34e3855 | ||
|
|
467262ef29 |
@@ -11,7 +11,7 @@ History:
|
||||
Initially cimgui was developed by Stephan Dilly as hand-written code but lately turned into an auto-generated version by sonoro1234 in order to keep up with imgui more easily (letting the user select the desired branch and commit)
|
||||
|
||||
Notes:
|
||||
* currently this wrapper is based on version [1.92.7 of Dear ImGui with internal api]
|
||||
* currently this wrapper is based on version [1.92.9b of Dear ImGui with internal api]
|
||||
* only functions, structs and enums from imgui.h (an optionally imgui_internal.h) are wrapped.
|
||||
* if you are interested in imgui backends you should look [LuaJIT-ImGui](https://github.com/sonoro1234/LuaJIT-ImGui) project.
|
||||
* All naming is algorithmic except for those names that were coded in cimgui_overloads table (https://github.com/cimgui/cimgui/blob/master/generator/generator.lua#L60). In the official version this table is empty.
|
||||
@@ -106,10 +106,15 @@ Notes:
|
||||
# example bindings based on cimgui
|
||||
|
||||
* [LuaJIT-ImGui](https://github.com/sonoro1234/LuaJIT-ImGui)
|
||||
* [cimgui-go](https://github.com/AllenDang/cimgui-go)
|
||||
* [Hexa.NET.ImGui](https://github.com/HexaEngine/Hexa.NET.ImGui)
|
||||
* [EvergineTeam/ImGui](https://github.com/EvergineTeam/ImGui.Net)
|
||||
* [dear-imgui-rs](https://github.com/Latias94/dear-imgui-rs)
|
||||
* [CImGui.jl](https://github.com/Gnimuc/CImGui.jl)
|
||||
* [ImGui.NET](https://github.com/mellinoe/ImGui.NET)
|
||||
* [Zig-ImGui](https://github.com/SpexGuy/Zig-ImGui)
|
||||
* [nimgl/imgui](https://github.com/nimgl/imgui)
|
||||
* [kotlin-imgui](https://github.com/Dominaezzz/kotlin-imgui)
|
||||
* [CImGui.jl](https://github.com/Gnimuc/CImGui.jl)
|
||||
* [odin-imgui](https://github.com/ThisDrunkDane/odin-imgui)
|
||||
* [DerelictImgui](https://github.com/Extrawurst/DerelictImgui)
|
||||
* [BindBC-CimGui](https://github.com/MrcSnm/bindbc-cimgui)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#endif
|
||||
|
||||
//this must be equal to that in imgui_impl_vulkan.h
|
||||
#define IMGUI_IMPL_VULKAN_MINIMUM_IMAGE_SAMPLER_POOL_SIZE (1) // Minimum per atlas
|
||||
//#define IMGUI_IMPL_VULKAN_MINIMUM_IMAGE_SAMPLER_POOL_SIZE (1) // Minimum per atlas
|
||||
|
||||
#define CIMGUI_DEFINE_ENUMS_AND_STRUCTS
|
||||
#include <cimgui.h>
|
||||
@@ -214,7 +214,8 @@ static void SetupVulkan(const char** extensions, uint32_t extensions_count)
|
||||
{
|
||||
VkDescriptorPoolSize pool_sizes[] =
|
||||
{
|
||||
{ VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, IMGUI_IMPL_VULKAN_MINIMUM_IMAGE_SAMPLER_POOL_SIZE },
|
||||
{ VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, IMGUI_IMPL_VULKAN_MINIMUM_SAMPLED_IMAGE_POOL_SIZE },
|
||||
{ VK_DESCRIPTOR_TYPE_SAMPLER, IMGUI_IMPL_VULKAN_MINIMUM_SAMPLER_POOL_SIZE },
|
||||
};
|
||||
VkDescriptorPoolCreateInfo pool_info = {};
|
||||
pool_info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO;
|
||||
@@ -281,9 +282,10 @@ static void CleanupVulkan()
|
||||
vkDestroyInstance(g_Instance, g_Allocator);
|
||||
}
|
||||
|
||||
static void CleanupVulkanWindow()
|
||||
static void CleanupVulkanWindow(ImGui_ImplVulkanH_Window* wd)
|
||||
{
|
||||
ImGui_ImplVulkanH_DestroyWindow(g_Instance, g_Device, &g_MainWindowData, g_Allocator);
|
||||
ImGui_ImplVulkanH_DestroyWindow(g_Instance, g_Device, wd, g_Allocator);
|
||||
vkDestroySurfaceKHR(g_Instance, wd->Surface, g_Allocator);
|
||||
}
|
||||
|
||||
static void FrameRender(ImGui_ImplVulkanH_Window* wd, ImDrawData* draw_data)
|
||||
@@ -620,7 +622,7 @@ int main(int argc, char* argv[])
|
||||
ImGui_ImplSDL3_Shutdown();
|
||||
igDestroyContext(NULL);
|
||||
|
||||
CleanupVulkanWindow();
|
||||
CleanupVulkanWindow(&g_MainWindowData);
|
||||
CleanupVulkan();
|
||||
|
||||
SDL_DestroyWindow(window);
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
#endif
|
||||
|
||||
//this must be equal to that in imgui_impl_vulkan.h
|
||||
#define IMGUI_IMPL_VULKAN_MINIMUM_IMAGE_SAMPLER_POOL_SIZE (1) // Minimum per atlas
|
||||
//#define IMGUI_IMPL_VULKAN_MINIMUM_IMAGE_SAMPLER_POOL_SIZE (1) // Minimum per atlas
|
||||
|
||||
#define CIMGUI_DEFINE_ENUMS_AND_STRUCTS
|
||||
#include "cimgui.h"
|
||||
@@ -218,7 +218,8 @@ static void SetupVulkan(const char** extensions, uint32_t extensions_count)
|
||||
{
|
||||
VkDescriptorPoolSize pool_sizes[] =
|
||||
{
|
||||
{ VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, IMGUI_IMPL_VULKAN_MINIMUM_IMAGE_SAMPLER_POOL_SIZE },
|
||||
{ VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, IMGUI_IMPL_VULKAN_MINIMUM_SAMPLED_IMAGE_POOL_SIZE },
|
||||
{ VK_DESCRIPTOR_TYPE_SAMPLER, IMGUI_IMPL_VULKAN_MINIMUM_SAMPLER_POOL_SIZE },
|
||||
};
|
||||
VkDescriptorPoolCreateInfo pool_info = {};
|
||||
pool_info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO;
|
||||
@@ -285,9 +286,10 @@ static void CleanupVulkan()
|
||||
vkDestroyInstance(g_Instance, g_Allocator);
|
||||
}
|
||||
|
||||
static void CleanupVulkanWindow()
|
||||
static void CleanupVulkanWindow(ImGui_ImplVulkanH_Window* wd)
|
||||
{
|
||||
ImGui_ImplVulkanH_DestroyWindow(g_Instance, g_Device, &g_MainWindowData, g_Allocator);
|
||||
ImGui_ImplVulkanH_DestroyWindow(g_Instance, g_Device, wd, g_Allocator);
|
||||
vkDestroySurfaceKHR(g_Instance, wd->Surface, g_Allocator);
|
||||
}
|
||||
|
||||
static void FrameRender(ImGui_ImplVulkanH_Window* wd, ImDrawData* draw_data)
|
||||
@@ -615,7 +617,7 @@ int main(int argc, char* argv[])
|
||||
ImGui_ImplSDL2_Shutdown();
|
||||
igDestroyContext(NULL);
|
||||
|
||||
CleanupVulkanWindow();
|
||||
CleanupVulkanWindow(&g_MainWindowData);
|
||||
CleanupVulkan();
|
||||
|
||||
SDL_DestroyWindow(window);
|
||||
|
||||
1085
cimgui.cpp
1085
cimgui.cpp
File diff suppressed because it is too large
Load Diff
@@ -30,8 +30,20 @@ CIMGUI_API void ImGui_ImplGlfw_WindowFocusCallback(GLFWwindow* window,int focuse
|
||||
|
||||
#endif
|
||||
#ifdef CIMGUI_USE_OPENGL3
|
||||
#ifdef CIMGUI_DEFINE_ENUMS_AND_STRUCTS
|
||||
|
||||
typedef struct ImGui_ImplOpenGL3_RenderState ImGui_ImplOpenGL3_RenderState;
|
||||
struct ImGui_ImplOpenGL3_RenderState
|
||||
{
|
||||
bool UseBindSampler;
|
||||
bool UseTexParameterFilter;
|
||||
unsigned int CurrentSampler;
|
||||
unsigned int CurrentTexParameterFilter;
|
||||
};
|
||||
#endif //CIMGUI_DEFINE_ENUMS_AND_STRUCTS
|
||||
CIMGUI_API bool ImGui_ImplOpenGL3_CreateDeviceObjects(void);
|
||||
CIMGUI_API void ImGui_ImplOpenGL3_DestroyDeviceObjects(void);
|
||||
CIMGUI_API ImGui_ImplOpenGL3_RenderState* ImGui_ImplOpenGL3_GetRenderState(void);
|
||||
CIMGUI_API bool ImGui_ImplOpenGL3_Init(const char* glsl_version);
|
||||
CIMGUI_API void ImGui_ImplOpenGL3_NewFrame(void);
|
||||
CIMGUI_API void ImGui_ImplOpenGL3_RenderDrawData(ImDrawData* draw_data);
|
||||
@@ -119,6 +131,7 @@ struct ImGui_ImplVulkan_PipelineInfo
|
||||
VkSampleCountFlagBits MSAASamples;
|
||||
ImVector_VkDynamicState ExtraDynamicStates;
|
||||
VkPipelineRenderingCreateInfoKHR PipelineRenderingCreateInfo;
|
||||
VkImageUsageFlags SwapChainImageUsage;
|
||||
};
|
||||
typedef struct ImGui_ImplVulkan_InitInfo ImGui_ImplVulkan_InitInfo;
|
||||
struct ImGui_ImplVulkan_InitInfo
|
||||
@@ -135,6 +148,7 @@ struct ImGui_ImplVulkan_InitInfo
|
||||
uint32_t ImageCount;
|
||||
VkPipelineCache PipelineCache;
|
||||
ImGui_ImplVulkan_PipelineInfo PipelineInfoMain;
|
||||
ImGui_ImplVulkan_PipelineInfo PipelineInfoForViewports;
|
||||
bool UseDynamicRendering;
|
||||
const VkAllocationCallbacks* Allocator;
|
||||
void (*CheckVkResultFn)(VkResult err);
|
||||
@@ -182,7 +196,6 @@ struct ImGui_ImplVulkanH_Window
|
||||
int Height;
|
||||
VkSwapchainKHR Swapchain;
|
||||
VkRenderPass RenderPass;
|
||||
VkPipeline Pipeline;
|
||||
uint32_t FrameIndex;
|
||||
uint32_t ImageCount;
|
||||
uint32_t SemaphoreCount;
|
||||
@@ -196,15 +209,18 @@ typedef ImVector<ImGui_ImplVulkanH_Frame> ImVector_ImGui_ImplVulkanH_Frame;
|
||||
typedef ImVector<ImGui_ImplVulkanH_FrameSemaphores> ImVector_ImGui_ImplVulkanH_FrameSemaphores;
|
||||
typedef ImVector<VkDynamicState> ImVector_VkDynamicState;
|
||||
#endif //CIMGUI_DEFINE_ENUMS_AND_STRUCTS
|
||||
#define IMGUI_IMPL_VULKAN_MINIMUM_SAMPLED_IMAGE_POOL_SIZE (8)
|
||||
#define IMGUI_IMPL_VULKAN_MINIMUM_SAMPLER_POOL_SIZE (2)
|
||||
CIMGUI_API void ImGui_ImplVulkanH_CreateOrResizeWindow(VkInstance instance,VkPhysicalDevice physical_device,VkDevice device,ImGui_ImplVulkanH_Window* wd,uint32_t queue_family,const VkAllocationCallbacks* allocator,int w,int h,uint32_t min_image_count,VkImageUsageFlags image_usage);
|
||||
CIMGUI_API void ImGui_ImplVulkanH_DestroyWindow(VkInstance instance,VkDevice device,ImGui_ImplVulkanH_Window* wd,const VkAllocationCallbacks* allocator);
|
||||
CIMGUI_API int ImGui_ImplVulkanH_GetMinImageCountFromPresentMode(VkPresentModeKHR present_mode);
|
||||
CIMGUI_API ImGui_ImplVulkanH_Window* ImGui_ImplVulkanH_GetWindowDataFromViewport(ImGuiViewport* viewport);
|
||||
CIMGUI_API VkPhysicalDevice ImGui_ImplVulkanH_SelectPhysicalDevice(VkInstance instance);
|
||||
CIMGUI_API VkPresentModeKHR ImGui_ImplVulkanH_SelectPresentMode(VkPhysicalDevice physical_device,VkSurfaceKHR surface,const VkPresentModeKHR* request_modes,int request_modes_count);
|
||||
CIMGUI_API uint32_t ImGui_ImplVulkanH_SelectQueueFamilyIndex(VkPhysicalDevice physical_device);
|
||||
CIMGUI_API VkSurfaceFormatKHR ImGui_ImplVulkanH_SelectSurfaceFormat(VkPhysicalDevice physical_device,VkSurfaceKHR surface,const VkFormat* request_formats,int request_formats_count,VkColorSpaceKHR request_color_space);
|
||||
CIMGUI_API ImGui_ImplVulkanH_Window* ImGui_ImplVulkanH_Window_ImGui_ImplVulkanH_Window(void);
|
||||
CIMGUI_API VkDescriptorSet ImGui_ImplVulkan_AddTexture(VkSampler sampler,VkImageView image_view,VkImageLayout image_layout);
|
||||
CIMGUI_API VkDescriptorSet ImGui_ImplVulkan_AddTexture(VkImageView image_view,VkImageLayout image_layout);
|
||||
CIMGUI_API void ImGui_ImplVulkan_CreateMainPipeline(const ImGui_ImplVulkan_PipelineInfo* info);
|
||||
CIMGUI_API bool ImGui_ImplVulkan_Init(ImGui_ImplVulkan_InitInfo* info);
|
||||
CIMGUI_API bool ImGui_ImplVulkan_LoadFunctions(uint32_t api_version,PFN_vkVoidFunction(*loader_func)(const char* function_name,void* user_data),void* user_data);
|
||||
|
||||
@@ -17,6 +17,12 @@ CIMGUI_API void ImGuiTextBuffer_appendf(ImGuiTextBuffer *self, const char *fmt,
|
||||
self->appendfv(fmt, args);
|
||||
va_end(args);
|
||||
}
|
||||
#ifdef CIMGUI_VARGS0
|
||||
CIMGUI_API void ImGuiTextBuffer_appendf0(ImGuiTextBuffer *self, const char *fmt)
|
||||
{
|
||||
ImGuiTextBuffer_appendf(self,fmt);
|
||||
}
|
||||
#endif
|
||||
|
||||
CIMGUI_API float igGET_FLT_MAX()
|
||||
{
|
||||
|
||||
@@ -56,6 +56,9 @@ PLACE_STRUCTS_C
|
||||
/////////////////////////hand written functions
|
||||
//no appendfV
|
||||
CIMGUI_API void ImGuiTextBuffer_appendf(ImGuiTextBuffer *self, const char *fmt, ...);
|
||||
#ifdef CIMGUI_VARGS0
|
||||
CIMGUI_API void ImGuiTextBuffer_appendf0(ImGuiTextBuffer *self, const char *fmt);
|
||||
#endif
|
||||
//for getting FLT_MAX in bindings
|
||||
CIMGUI_API float igGET_FLT_MAX(void);
|
||||
//for getting FLT_MIN in bindings
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
619
generator/cpp2ffi_extra.lua
Normal file
619
generator/cpp2ffi_extra.lua
Normal file
@@ -0,0 +1,619 @@
|
||||
local insert = table.insert
|
||||
|
||||
local function ToStr(t,dometatables)
|
||||
local function basicToStr (o)
|
||||
if type(o) == "number" or type(o)=="boolean" then
|
||||
return tostring(o)
|
||||
elseif type(o) == "string" then
|
||||
return string.format("%q", o)
|
||||
else
|
||||
return tostring(o) --"nil"
|
||||
end
|
||||
end
|
||||
local strTG = {}
|
||||
--local basicToStr= basicSerialize --tostring
|
||||
if type(t) ~="table" then return basicToStr(t) end
|
||||
local recG = 0
|
||||
local nameG="SELF"..recG
|
||||
local ancest ={}
|
||||
local function _ToStr(t,strT,rec,name)
|
||||
if ancest[t] then
|
||||
strT[#strT + 1]=ancest[t]
|
||||
return
|
||||
end
|
||||
rec = rec + 1
|
||||
ancest[t]=name
|
||||
strT[#strT + 1]='{'
|
||||
local count=0
|
||||
-------------
|
||||
--if t.name then strT[#strT + 1]=string.rep("\t",rec).."name:"..tostring(t.name) end
|
||||
----------------
|
||||
for k,v in pairs(t) do
|
||||
count=count+1
|
||||
strT[#strT + 1]="\n"
|
||||
local kstr
|
||||
if type(k) == "table" then
|
||||
local name2=string.format("%s.KEY%d",name,count)
|
||||
strT[#strT + 1]=string.rep("\t",rec).."["
|
||||
local strTK = {}
|
||||
_ToStr(k,strTK,rec,name2)
|
||||
kstr=table.concat(strTK)
|
||||
strT[#strT + 1]=kstr.."]="
|
||||
else
|
||||
kstr = basicToStr(k)
|
||||
strT[#strT + 1]=string.rep("\t",rec).."["..kstr.."]="
|
||||
end
|
||||
|
||||
if type(v) == "table" then
|
||||
local name2=string.format("%s[%s]",name,kstr)
|
||||
_ToStr(v,strT,rec,name2)
|
||||
else
|
||||
strT[#strT + 1]=basicToStr(v)
|
||||
end
|
||||
end
|
||||
if dometatables then
|
||||
local mt = getmetatable(t)
|
||||
if mt then
|
||||
local namemt = string.format("%s.METATABLE",name)
|
||||
local strMT = {}
|
||||
_ToStr(mt,strMT,rec,namemt)
|
||||
local metastr=table.concat(strMT)
|
||||
strT[#strT + 1] = "\n"..string.rep("\t",rec).."[METATABLE]="..metastr
|
||||
end
|
||||
end
|
||||
strT[#strT + 1]='}'
|
||||
rec = rec - 1
|
||||
return
|
||||
end
|
||||
_ToStr(t,strTG,recG,nameG)
|
||||
return table.concat(strTG)
|
||||
end
|
||||
|
||||
local function prtable(...)
|
||||
for i=1, select('#', ...) do
|
||||
local t = select(i, ...)
|
||||
print(ToStr(t))
|
||||
print("\n")
|
||||
end
|
||||
end
|
||||
|
||||
-- more compact serialization
|
||||
local function basicSerialize (o)
|
||||
if type(o) == "number" then
|
||||
return string.format("%.17g", o)
|
||||
elseif type(o)=="boolean" then
|
||||
return tostring(o)
|
||||
elseif type(o) == "string" then
|
||||
return string.format("%q", o)
|
||||
elseif pcall(function() return o.__serialize end) then
|
||||
return o.__serialize(o)
|
||||
elseif type(o)=="cdata" then
|
||||
return cdataSerialize(o)
|
||||
else
|
||||
return tostring(o) --"nil"
|
||||
end
|
||||
end
|
||||
-- very readable and now suited for cyclic tables
|
||||
local kw = {['and'] = true, ['break'] = true, ['do'] = true, ['else'] = true,
|
||||
['elseif'] = true, ['end'] = true, ['false'] = true, ['for'] = true,
|
||||
['function'] = true, ['goto'] = true, ['if'] = true, ['in'] = true,
|
||||
['local'] = true, ['nil'] = true, ['not'] = true, ['or'] = true,
|
||||
['repeat'] = true, ['return'] = true, ['then'] = true, ['true'] = true,
|
||||
['until'] = true, ['while'] = true}
|
||||
function tb2st_serialize(t,options)
|
||||
options = options or {}
|
||||
local function sorter(a,b)
|
||||
if type(a)==type(b) then
|
||||
return a<b
|
||||
elseif type(a)=="number" then
|
||||
return true
|
||||
else
|
||||
assert(type(b)=="number")
|
||||
return false
|
||||
end
|
||||
end
|
||||
local function serialize_key(val, dodot, pretty)
|
||||
local dot = dodot and "." or ""
|
||||
if type(val)=="string" then
|
||||
if val:match '^[_%a][_%w]*$' and not kw[val] then
|
||||
return dot..tostring(val)
|
||||
else
|
||||
return "[\""..tostring(val).."\"]"
|
||||
end
|
||||
elseif (not pretty) and (not dodot) and (type(val) == "number") and (math.floor(val)==val) then
|
||||
return --array index
|
||||
else
|
||||
return "["..tostring(val).."]"
|
||||
end
|
||||
end
|
||||
local function serialize_key_name(val)
|
||||
return serialize_key(val, true)
|
||||
end
|
||||
local insert = table.insert
|
||||
local function _tb2st(t,saved,sref,level,name)
|
||||
saved = saved or {} -- initial value
|
||||
level = level or 0
|
||||
sref = sref or {}
|
||||
name = name or "t"
|
||||
if type(t)=="table" then
|
||||
if saved[t] then
|
||||
sref[#sref+1] = {saved[t],name}
|
||||
return"nil"
|
||||
else
|
||||
saved[t] = name
|
||||
|
||||
local ordered_keys = {}
|
||||
for k,v in pairs(t) do
|
||||
insert(ordered_keys,k)
|
||||
end
|
||||
table.sort(ordered_keys,sorter)
|
||||
|
||||
local str2 = {}
|
||||
insert(str2,"{")
|
||||
if options.pretty then insert(str2,"\n") end
|
||||
for _,k in ipairs(ordered_keys) do
|
||||
if options.pretty then insert(str2,(" "):rep(level+1)) end
|
||||
local v = t[k]
|
||||
local kser = serialize_key(k, nil, options.pretty)
|
||||
insert(str2, (kser and (kser .."=") or ""))
|
||||
if type(v)~="table" then
|
||||
insert(str2, basicSerialize(v))
|
||||
else
|
||||
local name2 = name .. serialize_key_name(k)
|
||||
insert(str2,_tb2st(v,saved,sref,level+1,name2))
|
||||
end
|
||||
if options.pretty then insert(str2,",\n") else insert(str2, ",") end
|
||||
end
|
||||
str2[#str2] = "}"
|
||||
if level == 0 then
|
||||
--insert(str2, 1,"local ffi = require'ffi'\nlocal t=")
|
||||
insert(str2, 1,"local t=")
|
||||
for i,v in ipairs(sref) do
|
||||
insert(str2, "\n"..v[2].."="..v[1])
|
||||
end
|
||||
insert(str2,"\n return t")
|
||||
end
|
||||
return table.concat(str2)
|
||||
end
|
||||
else
|
||||
return basicSerialize(t)
|
||||
end
|
||||
end
|
||||
return(_tb2st(t))
|
||||
end
|
||||
local serializeTableF = function(t) return tb2st_serialize(t,{pretty=true}) end --new serialization more compact
|
||||
|
||||
local function deepcopy(object)
|
||||
local lookup_table = {}
|
||||
local function _copy(object)
|
||||
--assert(object~=REST)
|
||||
if type(object) ~= "table" then
|
||||
return object
|
||||
elseif lookup_table[object] then
|
||||
return lookup_table[object]
|
||||
end
|
||||
local new_table = {}
|
||||
lookup_table[object] = new_table
|
||||
for index, value in pairs(object) do
|
||||
new_table[_copy(index)] = _copy(value)
|
||||
end
|
||||
return setmetatable(new_table, getmetatable(object))
|
||||
end
|
||||
return _copy(object)
|
||||
end
|
||||
|
||||
local function table_do_sorted(t,f)
|
||||
local sorted = {}
|
||||
for k,v in pairs(t) do
|
||||
table.insert(sorted,k)
|
||||
end
|
||||
table.sort(sorted)
|
||||
for ii,k in ipairs(sorted) do
|
||||
f(k,t[k])
|
||||
end
|
||||
end
|
||||
|
||||
----------------------------
|
||||
local function save_data(filename,...)
|
||||
local file,err = io.open(filename,"w")
|
||||
if not file then error(err) end
|
||||
for i=1, select('#', ...) do
|
||||
local data = select(i, ...)
|
||||
file:write(data)
|
||||
end
|
||||
file:close()
|
||||
end
|
||||
|
||||
local function read_data(filename)
|
||||
local hfile,err = io.open(filename,"r")
|
||||
if not hfile then error(err) end
|
||||
local hstrfile = hfile:read"*a"
|
||||
hfile:close()
|
||||
return hstrfile
|
||||
end
|
||||
|
||||
local function copyfile(src,dst,blocksize)
|
||||
blocksize = blocksize or 1024*4
|
||||
print( "copyfile", src, dst)
|
||||
local srcf, err = io.open(src,"rb")
|
||||
if not srcf then error(err) end
|
||||
local dstf, err = io.open(dst,"wb")
|
||||
if not dstf then error(err) end
|
||||
while true do
|
||||
local data = srcf:read(blocksize)
|
||||
if not data then break end
|
||||
dstf:write(data)
|
||||
end
|
||||
srcf:close()
|
||||
dstf:close()
|
||||
end
|
||||
|
||||
local function paramListWithoutDots(params)
|
||||
if not params then return nil end
|
||||
local i, j = string.find(params, "%.%.%.")
|
||||
while i > 1 do
|
||||
i = i - 1
|
||||
local c = string.sub(params,i,i)
|
||||
if c == "," then
|
||||
return string.sub(params, 1, i-1) .. params:sub(j+1)
|
||||
elseif c == "(" then
|
||||
return string.sub(params, 1, i) .. params:sub(j+1)
|
||||
end
|
||||
end
|
||||
|
||||
error("paramListWithoutDots failed")
|
||||
return "()"
|
||||
end
|
||||
|
||||
-------------------------------json saving
|
||||
--avoid mixed tables (with string and integer keys)
|
||||
local function json_prepare(defs)
|
||||
--delete signatures in function
|
||||
for k,def in pairs(defs) do
|
||||
for k2,v in pairs(def) do
|
||||
if type(k2)=="string" then
|
||||
def[k2] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
return defs
|
||||
end
|
||||
|
||||
local function save_output(self)
|
||||
--add VARGS0
|
||||
local defsVARG = {}
|
||||
for k,defs in pairs(self.defsT) do
|
||||
for i, def in ipairs(defs) do
|
||||
if def.isvararg then
|
||||
--print("vararg",k,#def)
|
||||
local def1 = deepcopy(def)
|
||||
def1.isvararg = nil
|
||||
def1.isVARG0 = true
|
||||
def1.argsT[#def1.argsT] = nil
|
||||
def1.args = paramListWithoutDots(def1.args)
|
||||
def1.call_args = paramListWithoutDots(def1.call_args)
|
||||
def1.call_args_conv = paramListWithoutDots(def1.call_args_conv)
|
||||
def1.signature = paramListWithoutDots(def1.signature)
|
||||
def1.cimguiname = def1.cimguiname.."0"
|
||||
def1.ov_cimguiname = def1.ov_cimguiname.."0"
|
||||
defsVARG[k.."0"] = defsVARG[k.."0"] or {}
|
||||
table.insert(defsVARG[k.."0"], def1)
|
||||
end
|
||||
end
|
||||
end
|
||||
for k,def in pairs(defsVARG) do
|
||||
self.defsT[k] = def
|
||||
end
|
||||
--add manual not present in module
|
||||
for k,v in pairs(self.manuals) do
|
||||
if not self.defsT[k] then
|
||||
--print("add manual",k)
|
||||
self.defsT[k] = {v}
|
||||
else
|
||||
--print("skipped manual",k)
|
||||
end
|
||||
end
|
||||
---------- delete call_args_conv
|
||||
-- for k,defs in pairs(self.defsT) do
|
||||
-- for i, def in ipairs(defs) do
|
||||
-- def.call_args_conv = nil
|
||||
-- end
|
||||
-- end
|
||||
----------------------
|
||||
save_data("./output/overloads.txt",self.overloadstxt)
|
||||
save_data("./output/definitions.lua",serializeTableF(self.defsT))
|
||||
save_data("./output/structs_and_enums.lua",serializeTableF(self.structs_and_enums_table))
|
||||
save_data("./output/typedefs_dict.lua",serializeTableF(self.typedefs_dict))
|
||||
save_data("./output/constants.lua",serializeTableF(self.constants))
|
||||
|
||||
local json = require"json"
|
||||
local json_opts = {dict_on_empty={defaults=true}}
|
||||
save_data("./output/definitions.json",json.encode(json_prepare(self.defsT),json_opts))
|
||||
save_data("./output/structs_and_enums.json",json.encode(self.structs_and_enums_table))
|
||||
save_data("./output/typedefs_dict.json",json.encode(self.typedefs_dict))
|
||||
save_data("./output/constants.json",json.encode(self.constants))
|
||||
|
||||
local modulename = self.modulename
|
||||
copyfile("./output/"..modulename..".h", "../"..modulename..".h")
|
||||
copyfile("./output/"..modulename..".cpp", "../"..modulename..".cpp")
|
||||
os.remove("./output/"..modulename..".h")
|
||||
os.remove("./output/"..modulename..".cpp")
|
||||
end
|
||||
---------------------- C writing functions
|
||||
local function func_header_generate_structs(FP)
|
||||
|
||||
local outtab = {}--"\n/////func_header_generate_structs\n"}
|
||||
prtable("embeded_structs",FP.embeded_structs)
|
||||
table_do_sorted(FP.embeded_structs,function(k,v)
|
||||
if not FP.typenames[k] then
|
||||
print("embeded",k,v)
|
||||
table.insert(outtab,"typedef "..v.." "..k..";\n")
|
||||
end
|
||||
end)
|
||||
|
||||
table_do_sorted(FP.embeded_enums,function(k,v) table.insert(outtab,"typedef "..v.." "..k..";\n") end)
|
||||
--table.insert(outtab, "\n//////////templates\n")
|
||||
table_do_sorted(FP.templates,function(ttype,v)
|
||||
--print("func_header_generate_structs",ttype)
|
||||
if not (ttype == "std::function") then
|
||||
table_do_sorted(v,function(ttypein,te)
|
||||
local ttype2 = ttype:gsub("::","_") --std::string
|
||||
table.insert(outtab,"typedef "..ttype.."<"..ttypein.."> "..ttype2.."_"..te..";\n")
|
||||
end)
|
||||
end
|
||||
end)
|
||||
--M.prtable("typenames",FP.typenames)
|
||||
table_do_sorted(FP.opaque_structs,function(k,v)
|
||||
if not FP.typenames[k] then
|
||||
table.insert(outtab,"typedef "..v.." "..k..";\n")
|
||||
--table.insert(outtab,"typedef const "..v.."* "..k.."_opq;\n")
|
||||
--table.insert(outtab,"typedef "..v.."* "..k.."_opq;\n")
|
||||
end
|
||||
end)
|
||||
--table.insert(outtab, "\n//////////end func header\n")
|
||||
return outtab
|
||||
end
|
||||
|
||||
local function func_header_generate_funcs(FP)
|
||||
|
||||
local outtab = {}
|
||||
|
||||
for _,t in ipairs(FP.funcdefs) do
|
||||
if t.cimguiname then
|
||||
local cimf = FP.defsT[t.cimguiname]
|
||||
local def = cimf[t.signature]
|
||||
assert(def,t.signature..t.cimguiname)
|
||||
local custom
|
||||
if FP.custom_header then
|
||||
custom = FP.custom_header(outtab, def)
|
||||
end
|
||||
local manual = FP.get_manuals(def)
|
||||
if not custom and not manual and not def.templated and not FP.get_skipped(def) --and not (FP.opaque_structs[def.stname] and not def.is_static_function)
|
||||
then
|
||||
local addcoment = "" --def.comment or ""
|
||||
local empty = def.args:match("^%(%)") --no args
|
||||
if def.constructor then
|
||||
assert(def.stname ~= "","constructor without struct")
|
||||
table.insert(outtab,"CIMGUI_API "..def.stname.."* "..def.ov_cimguiname ..(empty and "(void)" or def.args)..";"..addcoment.."\n")
|
||||
if FP.CONSTRUCTORS_GENERATION then
|
||||
outtab[#outtab] = outtab[#outtab].."\nCIMGUI_API void "..def.ov_cimguiname.."_Construct("..def.stname.."* self"..(empty and "" or ","..def.args:sub(2,-2))..");\n"
|
||||
end
|
||||
elseif def.destructor then
|
||||
table.insert(outtab,"CIMGUI_API void "..def.ov_cimguiname..def.args..";"..addcoment.."\n")
|
||||
else --not constructor
|
||||
--local ret = FP.nP_ret[def.ret] or def.ret
|
||||
local ret = def.ret
|
||||
if def.stname == "" or def.is_static_function then --ImGui namespace or top level
|
||||
table.insert(outtab,"CIMGUI_API "..ret.." ".. def.ov_cimguiname ..(empty and "(void)" or def.args)..";"..addcoment.."\n")
|
||||
if def.isvararg then
|
||||
-- For variadic functions we add a function implementation with zero argumets, for compatibility with languages such as C#.
|
||||
table.insert(outtab, "#ifdef CIMGUI_VARGS0\n")
|
||||
table.insert(outtab, "CIMGUI_API".." "..ret.." "..def.ov_cimguiname.."0"..paramListWithoutDots(def.args)..";\n")
|
||||
table.insert(outtab, "#endif\n")
|
||||
end
|
||||
else
|
||||
table.insert(outtab,"CIMGUI_API "..ret.." "..def.ov_cimguiname..def.args..";"..addcoment.."\n")
|
||||
if def.isvararg then
|
||||
-- For variadic functions we add a function implementation with zero argumets, for compatibility with languages such as C#.
|
||||
table.insert(outtab, "#ifdef CIMGUI_VARGS0\n")
|
||||
table.insert(outtab, "CIMGUI_API".." "..ret.." "..def.ov_cimguiname.."0"..paramListWithoutDots(def.args)..";\n")
|
||||
table.insert(outtab, "#endif\n")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if FP.custom_function_post then
|
||||
FP:custom_function_post(outtab, def)
|
||||
end
|
||||
else --not cimguiname
|
||||
table.insert(outtab,t.comment:gsub("%%","%%%%").."\n")-- %% substitution for gsub
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
return outtab
|
||||
end
|
||||
|
||||
local function func_header_generate(FP)
|
||||
|
||||
local outtab = func_header_generate_structs(FP)
|
||||
table.insert(outtab, 1, "\n#ifndef CIMGUI_DEFINE_ENUMS_AND_STRUCTS\n")
|
||||
table.insert(outtab,"#endif //CIMGUI_DEFINE_ENUMS_AND_STRUCTS\n")
|
||||
|
||||
local outtabf = func_header_generate_funcs(FP)
|
||||
outtabf = table.concat(outtabf)
|
||||
assert(type(outtabf)=="string")
|
||||
--outtabf = M.header_subs_nonPOD(FP,outtabf)
|
||||
local cfuncsstr = table.concat(outtab)..outtabf
|
||||
cfuncsstr = cfuncsstr:gsub("\n+","\n") --several empty lines to one empty line
|
||||
|
||||
return cfuncsstr
|
||||
end
|
||||
|
||||
local function ImGui_f_implementation(def)
|
||||
local outtab = {}
|
||||
local ptret = def.retref and "&" or ""
|
||||
table.insert(outtab,"CIMGUI_API".." "..def.ret.." "..def.ov_cimguiname..def.args.."\n")
|
||||
table.insert(outtab,"{\n")
|
||||
local namespace = def.namespace and def.namespace.."::" or ""
|
||||
--namespace = def.is_static_function and namespace..def.stname.."::" or namespace
|
||||
local call_args_conv = def.call_args_conv or def.call_args
|
||||
if def.isvararg then
|
||||
local call_args_conv = call_args_conv:gsub("%.%.%.","args")
|
||||
table.insert(outtab," va_list args;\n")
|
||||
table.insert(outtab," va_start(args, fmt);\n")
|
||||
if def.ret~="void" then
|
||||
table.insert(outtab," "..def.ret.." ret = "..namespace..def.funcname.."V"..call_args_conv..";\n")
|
||||
else
|
||||
table.insert(outtab," "..namespace..def.funcname.."V"..call_args_conv..";\n")
|
||||
end
|
||||
table.insert(outtab," va_end(args);\n")
|
||||
if def.ret~="void" then
|
||||
table.insert(outtab," return ret;\n")
|
||||
end
|
||||
table.insert(outtab,"}\n")
|
||||
-- For variadic functions we add a function implementation with zero argumets, for compatibility with languages such as C#.
|
||||
table.insert(outtab, "#ifdef CIMGUI_VARGS0\n")
|
||||
table.insert(outtab, "CIMGUI_API".." "..def.ret.." "..def.ov_cimguiname.."0"..paramListWithoutDots(def.args).."\n")
|
||||
table.insert(outtab, "{\n")
|
||||
local returnword = "return "
|
||||
if def.ret=="void" then returnword = "" end
|
||||
table.insert(outtab, " "..returnword..def.ov_cimguiname..paramListWithoutDots(def.call_args)..";\n")
|
||||
table.insert(outtab, "}\n")
|
||||
table.insert(outtab, "#endif\n")
|
||||
elseif def.nonUDT then
|
||||
if def.nonUDT == 1 then
|
||||
insert(outtab," return ConvertFromCPP_"..def.conv.."("..namespace..def.funcname..call_args_conv..");\n")
|
||||
elseif def.nonUDT == 2 then
|
||||
insert(outtab," return reinterpret_cast<"..def.ret..">("..ptret..namespace..def.funcname..call_args_conv..");\n")
|
||||
elseif def.nonUDT == "string" then
|
||||
insert(outtab," static std::string str;\n")
|
||||
insert(outtab," str.assign("..ptret.."self->"..def.funcname..call_args_conv..");\n")
|
||||
insert(outtab," return str.c_str();\n")
|
||||
elseif def.nonUDT == "opaque" then
|
||||
insert(outtab," static auto opq = "..ptret..namespace..def.funcname..call_args_conv..";\n")
|
||||
insert(outtab," opq = "..ptret..namespace..def.funcname..call_args_conv..";\n")
|
||||
insert(outtab," return &opq;\n")
|
||||
end
|
||||
table.insert(outtab,"}\n")
|
||||
else --standard ImGui
|
||||
table.insert(outtab," return "..ptret..namespace..def.funcname..call_args_conv..";\n")
|
||||
table.insert(outtab,"}\n")
|
||||
end
|
||||
--table.insert(outtab,"}\n")
|
||||
return table.concat(outtab, "")
|
||||
end
|
||||
local function struct_f_implementation(def)
|
||||
local outtab = {}
|
||||
local empty = def.args:match("^%(%)") --no args
|
||||
local ptret = def.retref and "&" or ""
|
||||
|
||||
local imgui_stname = def.stname
|
||||
|
||||
table.insert(outtab,"CIMGUI_API".." "..def.ret.." "..def.ov_cimguiname..def.args.."\n")
|
||||
table.insert(outtab,"{\n")
|
||||
local call_args_conv = def.call_args_conv or def.call_args
|
||||
if def.isvararg then
|
||||
local call_args_conv = call_args_conv:gsub("%.%.%.","args")
|
||||
table.insert(outtab," va_list args;\n")
|
||||
table.insert(outtab," va_start(args, fmt);\n")
|
||||
if def.ret~="void" then
|
||||
table.insert(outtab," "..def.ret.." ret = self->"..def.funcname.."V"..call_args_conv..";\n")
|
||||
else
|
||||
table.insert(outtab," self->"..def.funcname.."V"..call_args_conv..";\n")
|
||||
end
|
||||
table.insert(outtab," va_end(args);\n")
|
||||
if def.ret~="void" then
|
||||
table.insert(outtab," return ret;\n")
|
||||
end
|
||||
table.insert(outtab,"}\n")
|
||||
-- For variadic functions we add a function implementation with zero argumets, for compatibility with languages such as C#.
|
||||
table.insert(outtab, "#ifdef CIMGUI_VARGS0\n")
|
||||
table.insert(outtab, "CIMGUI_API".." "..def.ret.." "..def.ov_cimguiname.."0"..paramListWithoutDots(def.args).."\n")
|
||||
table.insert(outtab, "{\n")
|
||||
local returnword = "return "
|
||||
if def.ret=="void" then returnword = "" end
|
||||
table.insert(outtab, " "..returnword..def.ov_cimguiname.."(self,"..paramListWithoutDots(def.call_args):sub(2,-1)..";\n")
|
||||
table.insert(outtab, "}\n")
|
||||
table.insert(outtab, "#endif\n")
|
||||
elseif def.nonUDT then
|
||||
if def.nonUDT == 1 then
|
||||
insert(outtab," return ConvertFromCPP_"..def.conv.."(self->"..def.funcname..call_args_conv..");\n")
|
||||
elseif def.nonUDT == 2 then
|
||||
insert(outtab," return reinterpret_cast<"..def.ret..">("..ptret.."self->"..def.funcname..call_args_conv..");\n")
|
||||
elseif def.nonUDT == "string" then
|
||||
insert(outtab," static std::string str;\n")
|
||||
insert(outtab," str.assign("..ptret.."self->"..def.funcname..call_args_conv..");\n")
|
||||
insert(outtab," return str.c_str();\n")
|
||||
elseif def.nonUDT == "opaque" then
|
||||
insert(outtab," static auto opq = "..ptret.."self->"..def.funcname..call_args_conv..";\n")
|
||||
insert(outtab," opq = "..ptret.."self->"..def.funcname..call_args_conv..";\n")
|
||||
insert(outtab," return &opq;\n")
|
||||
end
|
||||
table.insert(outtab,"}\n")
|
||||
else --standard struct
|
||||
table.insert(outtab," return "..ptret.."self->"..def.funcname..call_args_conv..";\n")
|
||||
table.insert(outtab,"}\n")
|
||||
end
|
||||
|
||||
return table.concat(outtab, "")
|
||||
end
|
||||
|
||||
local function func_implementation(FP)
|
||||
|
||||
local outtab = {}
|
||||
for _,t in ipairs(FP.funcdefs) do
|
||||
repeat -- continue simulation
|
||||
if not t.cimguiname then break end
|
||||
local cimf = FP.defsT[t.cimguiname]
|
||||
local def = cimf[t.signature]
|
||||
assert(def)
|
||||
local custom
|
||||
if FP.custom_implementation then
|
||||
custom = FP.custom_implementation(outtab, def, FP)
|
||||
end
|
||||
local manual = FP.get_manuals(def)
|
||||
if not custom and not manual and not def.templated and not FP.get_skipped(def) --and not (FP.opaque_structs[def.stname] and not def.is_static_function)
|
||||
then
|
||||
local call_args_conv = def.call_args_conv or def.call_args
|
||||
if def.constructor then
|
||||
local tab = {}
|
||||
assert(def.stname ~= "","constructor without struct")
|
||||
local empty = def.args:match("^%(%)") --no args
|
||||
table.insert(tab,"CIMGUI_API "..def.stname.."* "..def.ov_cimguiname..(empty and "(void)" or def.args).."\n")
|
||||
table.insert(tab,"{\n")
|
||||
table.insert(tab," return IM_NEW("..def.stname..")"..call_args_conv..";\n")
|
||||
table.insert(tab,"}\n")
|
||||
if FP.CONSTRUCTORS_GENERATION then
|
||||
table.insert(tab,"CIMGUI_API void "..def.ov_cimguiname.."_Construct("..def.stname.."* self"..(empty and "" or ","..def.args:sub(2,-2))..")\n")
|
||||
table.insert(tab,"{\n")
|
||||
table.insert(tab," IM_PLACEMENT_NEW(self)"..def.stname..call_args_conv..";\n")
|
||||
table.insert(tab,"}\n")
|
||||
end
|
||||
table.insert(outtab, table.concat(tab, ""))
|
||||
elseif def.destructor then
|
||||
local tab = {}
|
||||
local args = "("..def.stname.."* self)"
|
||||
local fname = def.stname.."_destroy"
|
||||
table.insert(tab,"CIMGUI_API void "..fname..args.."\n")
|
||||
table.insert(tab,"{\n")
|
||||
table.insert(tab," IM_DELETE(self);\n")
|
||||
table.insert(tab,"}\n")
|
||||
table.insert(outtab, table.concat(tab, ""))
|
||||
elseif def.stname == "" or def.is_static_function then
|
||||
table.insert(outtab, ImGui_f_implementation(def))
|
||||
else -- stname
|
||||
table.insert(outtab, struct_f_implementation(def))
|
||||
end
|
||||
end
|
||||
if FP.custom_function_post then
|
||||
FP:custom_function_post(outtab, def)
|
||||
end
|
||||
until true
|
||||
end
|
||||
local conversors = FP:genConversors()
|
||||
local cimplem = conversors .. table.concat(outtab)
|
||||
return cimplem
|
||||
end
|
||||
|
||||
return {func_implementation = func_implementation, save_output = save_output, save_data = save_data, read_data = read_data, copyfile = copyfile, func_header_generate = func_header_generate, prtable = prtable, table_do_sorted = table_do_sorted, save_output = save_output, deepcopy = deepcopy, serializeTableF = serializeTableF, func_header_generate_structs = func_header_generate_structs}
|
||||
@@ -120,10 +120,13 @@ local save_data = cpp2ffi.save_data
|
||||
local copyfile = cpp2ffi.copyfile
|
||||
local serializeTableF = cpp2ffi.serializeTableF
|
||||
|
||||
local function func_header_impl_generate(FP)
|
||||
local function func_header_impl_generate(FP, defines)
|
||||
|
||||
local outtab = {}
|
||||
|
||||
--may be key sorting is not enough and declaration order needed
|
||||
cpp2ffi.table_do_sorted(defines, function(k,v)
|
||||
table.insert(outtab,"#define "..k.." "..v.."\n")
|
||||
end)
|
||||
-- for _,t in ipairs(FP.funcdefs) do
|
||||
-- if t.cimguiname then
|
||||
-- local cimf = FP.defsT[t.cimguiname]
|
||||
@@ -286,6 +289,7 @@ local function cimgui_generation(parser)
|
||||
|
||||
|
||||
local tdt = parser:generate_templates()
|
||||
cpp2ffi.prtable("generate_templates",tdt)
|
||||
local cstructsstr = outpre..tdt..outpost
|
||||
|
||||
if gdefines.IMGUI_HAS_DOCK then
|
||||
@@ -379,16 +383,15 @@ end
|
||||
local function parseImGuiHeader(header,names)
|
||||
--prepare parser
|
||||
local parser = cpp2ffi.Parser()
|
||||
|
||||
parser.modulename = "cimgui"
|
||||
parser.getCname = function(stname,funcname,namespace)
|
||||
local pre = (stname == "") and (namespace and (namespace=="ImGui" and "ig" or namespace.."_") or "ig") or stname.."_"
|
||||
return pre..funcname
|
||||
end
|
||||
parser.cname_overloads = cimgui_overloads
|
||||
--parser.manuals = cimgui_manuals
|
||||
parser:set_manuals(cimgui_manuals, "cimgui")
|
||||
parser.skipped = cimgui_skipped
|
||||
parser.UDTs = {"ImVec2","ImVec4","ImColor","ImRect"}
|
||||
--parser.UDTs = {"ImVec2","ImVec4","ImColor","ImRect"}
|
||||
--parser.gen_template_typedef = gen_template_typedef --use auto
|
||||
parser.COMMENTS_GENERATION = COMMENTS_GENERATION
|
||||
parser.CONSTRUCTORS_GENERATION = CONSTRUCTORS_GENERATION
|
||||
@@ -404,19 +407,20 @@ end
|
||||
--generation
|
||||
print("------------------generation with "..COMPILER.."------------------------")
|
||||
local parser1
|
||||
local headers = [[#include "]]..IMGUI_PATH..[[/imgui.h"
|
||||
local headers = [[#include "]]..IMGUI_PATH..[[/imgui.h"
|
||||
]]
|
||||
local headersT = {[[imgui]]}
|
||||
if INTERNAL_GENERATION then
|
||||
headers = headers .. [[#include "]]..IMGUI_PATH..[[/imgui_internal.h"
|
||||
]]
|
||||
]]
|
||||
headers = headers .. [[#include "]]..IMGUI_PATH..[[/imstb_textedit.h"
|
||||
]]
|
||||
headersT[#headersT + 1] = [[imgui_internal]]
|
||||
headersT[#headersT + 1] = [[imstb_textedit]]
|
||||
end
|
||||
if FREETYPE_GENERATION then
|
||||
headers = headers .. [[
|
||||
#include "]]..IMGUI_PATH..[[/misc/freetype/imgui_freetype.h"
|
||||
]]
|
||||
headers = headers .. [[#include "]]..IMGUI_PATH..[[/misc/freetype/imgui_freetype.h"
|
||||
]]
|
||||
headersT[#headersT + 1] = [[imgui_freetype]]
|
||||
end
|
||||
save_data("headers.h",headers)
|
||||
@@ -457,7 +461,11 @@ if ff then
|
||||
else
|
||||
backends_folder = IMGUI_PATH .. "/backends/"
|
||||
end
|
||||
|
||||
local function getCname(stname,funcname, namespace)
|
||||
if #stname == 0 then return funcname end --top level
|
||||
local pre = stname.."_"
|
||||
return pre..funcname
|
||||
end
|
||||
local parser2
|
||||
|
||||
if #implementations > 0 then
|
||||
@@ -489,13 +497,15 @@ if #implementations > 0 then
|
||||
end
|
||||
end
|
||||
parser2.cimgui_inherited = dofile([[./output/structs_and_enums.lua]])
|
||||
parser2.getCname = getCname
|
||||
local defines = parser2:take_lines(CPRE..extra_defines..extra_includes..source, {locati}, COMPILER)
|
||||
|
||||
|
||||
local parser3 = cpp2ffi.Parser()
|
||||
parser3.getCname = getCname
|
||||
parser3.cimgui_inherited = dofile([[./output/structs_and_enums.lua]])
|
||||
parser3:take_lines(CPRE..extra_defines..extra_includes..source, {locati}, COMPILER)
|
||||
local defines = parser3:take_lines(CPRE..extra_defines..extra_includes..source, {locati}, COMPILER)
|
||||
parser3:do_parse()
|
||||
local cfuncsstr = func_header_impl_generate(parser3)
|
||||
local cfuncsstr = func_header_impl_generate(parser3, defines)
|
||||
local cstructstr1,cstructstr2 = parser3.structs_and_enums[1], parser3.structs_and_enums[2]
|
||||
local cstru = cstructstr1 .. cstructstr2
|
||||
if cstru ~="" then
|
||||
@@ -547,9 +557,5 @@ if parser2 then
|
||||
save_data("./output/impl_definitions.json",json.encode(json_prepare(parser2.defsT),{dict_on_empty={defaults=true}}))
|
||||
end
|
||||
--]]
|
||||
-------------------copy C files to repo root
|
||||
copyfile("./output/cimgui.h", "../cimgui.h")
|
||||
copyfile("./output/cimgui.cpp", "../cimgui.cpp")
|
||||
os.remove("./output/cimgui.h")
|
||||
os.remove("./output/cimgui.cpp")
|
||||
|
||||
print"all done!!"
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
{
|
||||
"DOCKING_HOST_DRAW_CHANNEL_BG": "0",
|
||||
"DOCKING_HOST_DRAW_CHANNEL_FG": "1",
|
||||
"IMGUI_CHECKVERSION()": "ImGui::DebugCheckVersionAndDataLayout(IMGUI_VERSION, sizeof(ImGuiIO), sizeof(ImGuiStyle), sizeof(ImVec2), sizeof(ImVec4), sizeof(ImDrawVert), sizeof(ImDrawIdx))",
|
||||
"IMGUI_DEBUG_LOG(...)": "ImGui::DebugLog(__VA_ARGS__)",
|
||||
"IMGUI_DEBUG_LOG_ACTIVEID(...)": "do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventActiveId) IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0)",
|
||||
"IMGUI_DEBUG_LOG_CLIPPER(...)": "do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventClipper) IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0)",
|
||||
"IMGUI_DEBUG_LOG_DOCKING(...)": "do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventDocking) IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0)",
|
||||
"IMGUI_DEBUG_LOG_ERROR(...)": "do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventError) IMGUI_DEBUG_LOG(__VA_ARGS__); else g.DebugLogSkippedErrors++; } while (0)",
|
||||
"IMGUI_DEBUG_LOG_FOCUS(...)": "do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventFocus) IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0)",
|
||||
"IMGUI_DEBUG_LOG_FONT(...)": "do { ImGuiContext* g2 = GImGui; if (g2 && g2->DebugLogFlags & ImGuiDebugLogFlags_EventFont) IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0)",
|
||||
@@ -11,19 +14,23 @@
|
||||
"IMGUI_DEBUG_LOG_NAV(...)": "do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventNav) IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0)",
|
||||
"IMGUI_DEBUG_LOG_POPUP(...)": "do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventPopup) IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0)",
|
||||
"IMGUI_DEBUG_LOG_SELECTION(...)": "do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventSelection) IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0)",
|
||||
"IMGUI_DEBUG_LOG_TABLE(...)": "do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventTable) IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0)",
|
||||
"IMGUI_DEBUG_LOG_VIEWPORT(...)": "do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventViewport) IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0)",
|
||||
"IMGUI_DEBUG_PRINTF(_FMT,...)": "printf(_FMT, __VA_ARGS__)",
|
||||
"IMGUI_FONT_SIZE_MAX": "(512.0f)",
|
||||
"IMGUI_FONT_SIZE_THRESHOLD_FOR_LOADADVANCEXONLYMODE": "(128.0f)",
|
||||
"IMGUI_PAYLOAD_TYPE_COLOR_3F": "\"_COL3F\"",
|
||||
"IMGUI_PAYLOAD_TYPE_COLOR_4F": "\"_COL4F\"",
|
||||
"IMGUI_PAYLOAD_TYPE_WINDOW": "\"_IMWINDOW\"",
|
||||
"IMGUI_TABLE_MAX_COLUMNS": "512",
|
||||
"IMGUI_TEST_ENGINE_ITEM_ADD(_ID,_BB,_ITEM_DATA)": "((void)0)",
|
||||
"IMGUI_TEST_ENGINE_ITEM_INFO(_ID,_LABEL,_FLAGS)": "((void)g)",
|
||||
"IMGUI_VERSION": "\"1.92.7\"",
|
||||
"IMGUI_VERSION_NUM": "19270",
|
||||
"IMGUI_VERSION": "\"1.92.9b\"",
|
||||
"IMGUI_VERSION_NUM": "19291",
|
||||
"IMGUI_WINDOW_HARD_MIN_SIZE": "4.0f",
|
||||
"IMSTB_TEXTEDIT_CHARTYPE": "char",
|
||||
"IMSTB_TEXTEDIT_GETWIDTH_NEWLINE": "(-1.0f)",
|
||||
"IMSTB_TEXTEDIT_POSITIONTYPE": "int",
|
||||
"IMSTB_TEXTEDIT_STRING": "ImGuiInputTextState",
|
||||
"IMSTB_TEXTEDIT_UNDOCHARCOUNT": "999",
|
||||
"IMSTB_TEXTEDIT_UNDOSTATECOUNT": "99",
|
||||
@@ -83,7 +90,6 @@
|
||||
"ImAtof(STR)": "atof(STR)",
|
||||
"ImCeil(X)": "ceilf(X)",
|
||||
"ImCos(X)": "cosf(X)",
|
||||
"ImDrawCallback_ResetRenderState": "(ImDrawCallback)(-8)",
|
||||
"ImFabs(X)": "fabsf(X)",
|
||||
"ImFmod(X,Y)": "fmodf((X), (Y))",
|
||||
"ImFontAtlasRectId_GenerationMask_": "(0x3FF00000)",
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
local t={
|
||||
DOCKING_HOST_DRAW_CHANNEL_BG="0",
|
||||
DOCKING_HOST_DRAW_CHANNEL_FG="1",
|
||||
["IMGUI_CHECKVERSION()"]="ImGui::DebugCheckVersionAndDataLayout(IMGUI_VERSION, sizeof(ImGuiIO), sizeof(ImGuiStyle), sizeof(ImVec2), sizeof(ImVec4), sizeof(ImDrawVert), sizeof(ImDrawIdx))",
|
||||
["IMGUI_DEBUG_LOG(...)"]="ImGui::DebugLog(__VA_ARGS__)",
|
||||
["IMGUI_DEBUG_LOG_ACTIVEID(...)"]="do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventActiveId) IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0)",
|
||||
["IMGUI_DEBUG_LOG_CLIPPER(...)"]="do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventClipper) IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0)",
|
||||
["IMGUI_DEBUG_LOG_DOCKING(...)"]="do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventDocking) IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0)",
|
||||
["IMGUI_DEBUG_LOG_ERROR(...)"]="do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventError) IMGUI_DEBUG_LOG(__VA_ARGS__); else g.DebugLogSkippedErrors++; } while (0)",
|
||||
["IMGUI_DEBUG_LOG_FOCUS(...)"]="do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventFocus) IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0)",
|
||||
["IMGUI_DEBUG_LOG_FONT(...)"]="do { ImGuiContext* g2 = GImGui; if (g2 && g2->DebugLogFlags & ImGuiDebugLogFlags_EventFont) IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0)",
|
||||
@@ -11,19 +14,23 @@ local t={
|
||||
["IMGUI_DEBUG_LOG_NAV(...)"]="do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventNav) IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0)",
|
||||
["IMGUI_DEBUG_LOG_POPUP(...)"]="do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventPopup) IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0)",
|
||||
["IMGUI_DEBUG_LOG_SELECTION(...)"]="do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventSelection) IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0)",
|
||||
["IMGUI_DEBUG_LOG_TABLE(...)"]="do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventTable) IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0)",
|
||||
["IMGUI_DEBUG_LOG_VIEWPORT(...)"]="do { if (g.DebugLogFlags & ImGuiDebugLogFlags_EventViewport) IMGUI_DEBUG_LOG(__VA_ARGS__); } while (0)",
|
||||
["IMGUI_DEBUG_PRINTF(_FMT,...)"]="printf(_FMT, __VA_ARGS__)",
|
||||
IMGUI_FONT_SIZE_MAX="(512.0f)",
|
||||
IMGUI_FONT_SIZE_THRESHOLD_FOR_LOADADVANCEXONLYMODE="(128.0f)",
|
||||
IMGUI_PAYLOAD_TYPE_COLOR_3F="\"_COL3F\"",
|
||||
IMGUI_PAYLOAD_TYPE_COLOR_4F="\"_COL4F\"",
|
||||
IMGUI_PAYLOAD_TYPE_WINDOW="\"_IMWINDOW\"",
|
||||
IMGUI_TABLE_MAX_COLUMNS="512",
|
||||
["IMGUI_TEST_ENGINE_ITEM_ADD(_ID,_BB,_ITEM_DATA)"]="((void)0)",
|
||||
["IMGUI_TEST_ENGINE_ITEM_INFO(_ID,_LABEL,_FLAGS)"]="((void)g)",
|
||||
IMGUI_VERSION="\"1.92.7\"",
|
||||
IMGUI_VERSION_NUM="19270",
|
||||
IMGUI_VERSION="\"1.92.9b\"",
|
||||
IMGUI_VERSION_NUM="19291",
|
||||
IMGUI_WINDOW_HARD_MIN_SIZE="4.0f",
|
||||
IMSTB_TEXTEDIT_CHARTYPE="char",
|
||||
IMSTB_TEXTEDIT_GETWIDTH_NEWLINE="(-1.0f)",
|
||||
IMSTB_TEXTEDIT_POSITIONTYPE="int",
|
||||
IMSTB_TEXTEDIT_STRING="ImGuiInputTextState",
|
||||
IMSTB_TEXTEDIT_UNDOCHARCOUNT="999",
|
||||
IMSTB_TEXTEDIT_UNDOSTATECOUNT="99",
|
||||
@@ -83,7 +90,6 @@ local t={
|
||||
["ImAtof(STR)"]="atof(STR)",
|
||||
["ImCeil(X)"]="ceilf(X)",
|
||||
["ImCos(X)"]="cosf(X)",
|
||||
ImDrawCallback_ResetRenderState="(ImDrawCallback)(-8)",
|
||||
["ImFabs(X)"]="fabsf(X)",
|
||||
["ImFmod(X,Y)"]="fmodf((X), (Y))",
|
||||
ImFontAtlasRectId_GenerationMask_="(0x3FF00000)",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -8,6 +8,9 @@ ImColor_ImColor 5
|
||||
ImDrawList_AddText 2
|
||||
1 void ImDrawList_AddText_Vec2 (const ImVec2,ImU32,const char*,const char*)
|
||||
2 void ImDrawList_AddText_FontPtr (ImFont*,float,const ImVec2,ImU32,const char*,const char*,float,const ImVec4*)
|
||||
ImGuiPackedDate_ImGuiPackedDate 2
|
||||
1 nil ImGuiPackedDate_ImGuiPackedDate_Nil ()
|
||||
2 nil ImGuiPackedDate_ImGuiPackedDate_Int (int)
|
||||
ImGuiPtrOrIndex_ImGuiPtrOrIndex 2
|
||||
1 nil ImGuiPtrOrIndex_ImGuiPtrOrIndex_Ptr (void*)
|
||||
2 nil ImGuiPtrOrIndex_ImGuiPtrOrIndex_Int (int)
|
||||
@@ -114,17 +117,13 @@ igCombo 3
|
||||
1 bool igCombo_Str_arr (const char*,int*,const char* const[],int,int)
|
||||
2 bool igCombo_Str (const char*,int*,const char*,int)
|
||||
3 bool igCombo_FnStrPtr (const char*,int*,const char*(*)(void*,int),void*,int,int)
|
||||
igGetBackgroundDrawList 2
|
||||
1 ImDrawList* igGetBackgroundDrawList_Nil ()
|
||||
2 ImDrawList* igGetBackgroundDrawList_ViewportPtr (ImGuiViewport*)
|
||||
igGetColorU32 3
|
||||
1 ImU32 igGetColorU32_Col (ImGuiCol,float)
|
||||
2 ImU32 igGetColorU32_Vec4 (const ImVec4)
|
||||
3 ImU32 igGetColorU32_U32 (ImU32,float)
|
||||
igGetForegroundDrawList 3
|
||||
1 ImDrawList* igGetForegroundDrawList_Nil ()
|
||||
igGetForegroundDrawList 2
|
||||
1 ImDrawList* igGetForegroundDrawList_ViewportPtr (ImGuiViewport*)
|
||||
2 ImDrawList* igGetForegroundDrawList_WindowPtr (ImGuiWindow*)
|
||||
3 ImDrawList* igGetForegroundDrawList_ViewportPtr (ImGuiViewport*)
|
||||
igGetID 4
|
||||
1 ImGuiID igGetID_Str (const char*)
|
||||
2 ImGuiID igGetID_StrStr (const char*,const char*)
|
||||
@@ -217,8 +216,8 @@ igMenuItem 2
|
||||
1 bool igMenuItem_Bool (const char*,const char*,bool,bool)
|
||||
2 bool igMenuItem_BoolPtr (const char*,const char*,bool*,bool)
|
||||
igOpenPopup 2
|
||||
1 void igOpenPopup_Str (const char*,ImGuiPopupFlags)
|
||||
2 void igOpenPopup_ID (ImGuiID,ImGuiPopupFlags)
|
||||
1 bool igOpenPopup_Str (const char*,ImGuiPopupFlags)
|
||||
2 bool igOpenPopup_ID (ImGuiID,ImGuiPopupFlags)
|
||||
igPlotHistogram 2
|
||||
1 void igPlotHistogram_FloatPtr (const char*,const float*,int,int,const char*,float,float,ImVec2,int)
|
||||
2 void igPlotHistogram_FnFloatPtr (const char*,float(*)(void*,int),void*,int,int,const char*,float,float,ImVec2)
|
||||
@@ -243,8 +242,8 @@ igSelectable 2
|
||||
1 bool igSelectable_Bool (const char*,bool,ImGuiSelectableFlags,const ImVec2)
|
||||
2 bool igSelectable_BoolPtr (const char*,bool*,ImGuiSelectableFlags,const ImVec2)
|
||||
igSetItemKeyOwner 2
|
||||
1 void igSetItemKeyOwner_Nil (ImGuiKey)
|
||||
2 void igSetItemKeyOwner_InputFlags (ImGuiKey,ImGuiInputFlags)
|
||||
1 bool igSetItemKeyOwner_Nil (ImGuiKey)
|
||||
2 bool igSetItemKeyOwner_InputFlags (ImGuiKey,ImGuiInputFlags)
|
||||
igSetScrollFromPosX 2
|
||||
1 void igSetScrollFromPosX_Float (float,float)
|
||||
2 void igSetScrollFromPosX_WindowPtr (ImGuiWindow*,float,float)
|
||||
@@ -309,4 +308,4 @@ igValue 4
|
||||
2 void igValue_Int (const char*,int)
|
||||
3 void igValue_Uint (const char*,unsigned int)
|
||||
4 void igValue_Float (const char*,float,const char*)
|
||||
216 overloaded
|
||||
215 overloaded
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -48,6 +48,7 @@
|
||||
"ImGuiContext": "struct ImGuiContext",
|
||||
"ImGuiContextHook": "struct ImGuiContextHook",
|
||||
"ImGuiContextHookCallback": "void (*)(ImGuiContext* ctx, ImGuiContextHook* hook);",
|
||||
"ImGuiDataAuthority": "unsigned int",
|
||||
"ImGuiDataType": "int",
|
||||
"ImGuiDataTypeInfo": "struct ImGuiDataTypeInfo",
|
||||
"ImGuiDataTypeStorage": "struct ImGuiDataTypeStorage",
|
||||
@@ -57,6 +58,11 @@
|
||||
"ImGuiDebugItemPathQuery": "struct ImGuiDebugItemPathQuery",
|
||||
"ImGuiDebugLogFlags": "int",
|
||||
"ImGuiDemoMarkerCallback": "void (*)(const char* file, int line, const char* section);",
|
||||
"ImGuiDockContext": "struct ImGuiDockContext",
|
||||
"ImGuiDockNode": "struct ImGuiDockNode",
|
||||
"ImGuiDockNodeFlags": "int",
|
||||
"ImGuiDockNodeSettings": "struct ImGuiDockNodeSettings",
|
||||
"ImGuiDockRequest": "struct ImGuiDockRequest",
|
||||
"ImGuiDragDropFlags": "int",
|
||||
"ImGuiErrorCallback": "void (*)(ImGuiContext* ctx, void* user_data, const char* msg);",
|
||||
"ImGuiErrorRecoveryState": "struct ImGuiErrorRecoveryState",
|
||||
@@ -74,6 +80,7 @@
|
||||
"ImGuiInputEventKey": "struct ImGuiInputEventKey",
|
||||
"ImGuiInputEventMouseButton": "struct ImGuiInputEventMouseButton",
|
||||
"ImGuiInputEventMousePos": "struct ImGuiInputEventMousePos",
|
||||
"ImGuiInputEventMouseViewport": "struct ImGuiInputEventMouseViewport",
|
||||
"ImGuiInputEventMouseWheel": "struct ImGuiInputEventMouseWheel",
|
||||
"ImGuiInputEventText": "struct ImGuiInputEventText",
|
||||
"ImGuiInputFlags": "int",
|
||||
@@ -120,9 +127,11 @@
|
||||
"ImGuiOldColumnFlags": "int",
|
||||
"ImGuiOldColumns": "struct ImGuiOldColumns",
|
||||
"ImGuiOnceUponAFrame": "struct ImGuiOnceUponAFrame",
|
||||
"ImGuiPackedDate": "struct ImGuiPackedDate",
|
||||
"ImGuiPayload": "struct ImGuiPayload",
|
||||
"ImGuiPlatformIO": "struct ImGuiPlatformIO",
|
||||
"ImGuiPlatformImeData": "struct ImGuiPlatformImeData",
|
||||
"ImGuiPlatformMonitor": "struct ImGuiPlatformMonitor",
|
||||
"ImGuiPopupData": "struct ImGuiPopupData",
|
||||
"ImGuiPopupFlags": "int",
|
||||
"ImGuiPtrOrIndex": "struct ImGuiPtrOrIndex",
|
||||
@@ -133,6 +142,7 @@
|
||||
"ImGuiSelectionRequest": "struct ImGuiSelectionRequest",
|
||||
"ImGuiSelectionUserData": "ImS64",
|
||||
"ImGuiSeparatorFlags": "int",
|
||||
"ImGuiSettingsCleanupArgs": "struct ImGuiSettingsCleanupArgs",
|
||||
"ImGuiSettingsHandler": "struct ImGuiSettingsHandler",
|
||||
"ImGuiShrinkWidthItem": "struct ImGuiShrinkWidthItem",
|
||||
"ImGuiSizeCallback": "void (*)(ImGuiSizeCallbackData* data);",
|
||||
@@ -162,6 +172,7 @@
|
||||
"ImGuiTableFlags": "int",
|
||||
"ImGuiTableHeaderData": "struct ImGuiTableHeaderData",
|
||||
"ImGuiTableInstanceData": "struct ImGuiTableInstanceData",
|
||||
"ImGuiTableReconcileColumnData": "struct ImGuiTableReconcileColumnData",
|
||||
"ImGuiTableRowFlags": "int",
|
||||
"ImGuiTableSettings": "struct ImGuiTableSettings",
|
||||
"ImGuiTableSortSpecs": "struct ImGuiTableSortSpecs",
|
||||
@@ -182,6 +193,8 @@
|
||||
"ImGuiViewportP": "struct ImGuiViewportP",
|
||||
"ImGuiWindow": "struct ImGuiWindow",
|
||||
"ImGuiWindowBgClickFlags": "int",
|
||||
"ImGuiWindowClass": "struct ImGuiWindowClass",
|
||||
"ImGuiWindowDockStyle": "struct ImGuiWindowDockStyle",
|
||||
"ImGuiWindowFlags": "int",
|
||||
"ImGuiWindowRefreshFlags": "int",
|
||||
"ImGuiWindowSettings": "struct ImGuiWindowSettings",
|
||||
@@ -211,6 +224,9 @@
|
||||
"ImWchar16": "unsigned short",
|
||||
"ImWchar32": "unsigned int",
|
||||
"STB_TexteditState": "struct STB_TexteditState",
|
||||
"StbTexteditRow": "struct StbTexteditRow",
|
||||
"StbUndoRecord": "struct StbUndoRecord",
|
||||
"StbUndoState": "struct StbUndoState",
|
||||
"stbrp_context_opaque": "struct stbrp_context_opaque",
|
||||
"stbrp_node": "struct stbrp_node",
|
||||
"stbrp_node_im": "stbrp_node"
|
||||
|
||||
@@ -48,6 +48,7 @@ local t={
|
||||
ImGuiContext="struct ImGuiContext",
|
||||
ImGuiContextHook="struct ImGuiContextHook",
|
||||
ImGuiContextHookCallback="void (*)(ImGuiContext* ctx, ImGuiContextHook* hook);",
|
||||
ImGuiDataAuthority="unsigned int",
|
||||
ImGuiDataType="int",
|
||||
ImGuiDataTypeInfo="struct ImGuiDataTypeInfo",
|
||||
ImGuiDataTypeStorage="struct ImGuiDataTypeStorage",
|
||||
@@ -57,6 +58,11 @@ local t={
|
||||
ImGuiDebugItemPathQuery="struct ImGuiDebugItemPathQuery",
|
||||
ImGuiDebugLogFlags="int",
|
||||
ImGuiDemoMarkerCallback="void (*)(const char* file, int line, const char* section);",
|
||||
ImGuiDockContext="struct ImGuiDockContext",
|
||||
ImGuiDockNode="struct ImGuiDockNode",
|
||||
ImGuiDockNodeFlags="int",
|
||||
ImGuiDockNodeSettings="struct ImGuiDockNodeSettings",
|
||||
ImGuiDockRequest="struct ImGuiDockRequest",
|
||||
ImGuiDragDropFlags="int",
|
||||
ImGuiErrorCallback="void (*)(ImGuiContext* ctx, void* user_data, const char* msg);",
|
||||
ImGuiErrorRecoveryState="struct ImGuiErrorRecoveryState",
|
||||
@@ -74,6 +80,7 @@ local t={
|
||||
ImGuiInputEventKey="struct ImGuiInputEventKey",
|
||||
ImGuiInputEventMouseButton="struct ImGuiInputEventMouseButton",
|
||||
ImGuiInputEventMousePos="struct ImGuiInputEventMousePos",
|
||||
ImGuiInputEventMouseViewport="struct ImGuiInputEventMouseViewport",
|
||||
ImGuiInputEventMouseWheel="struct ImGuiInputEventMouseWheel",
|
||||
ImGuiInputEventText="struct ImGuiInputEventText",
|
||||
ImGuiInputFlags="int",
|
||||
@@ -120,9 +127,11 @@ local t={
|
||||
ImGuiOldColumnFlags="int",
|
||||
ImGuiOldColumns="struct ImGuiOldColumns",
|
||||
ImGuiOnceUponAFrame="struct ImGuiOnceUponAFrame",
|
||||
ImGuiPackedDate="struct ImGuiPackedDate",
|
||||
ImGuiPayload="struct ImGuiPayload",
|
||||
ImGuiPlatformIO="struct ImGuiPlatformIO",
|
||||
ImGuiPlatformImeData="struct ImGuiPlatformImeData",
|
||||
ImGuiPlatformMonitor="struct ImGuiPlatformMonitor",
|
||||
ImGuiPopupData="struct ImGuiPopupData",
|
||||
ImGuiPopupFlags="int",
|
||||
ImGuiPtrOrIndex="struct ImGuiPtrOrIndex",
|
||||
@@ -133,6 +142,7 @@ local t={
|
||||
ImGuiSelectionRequest="struct ImGuiSelectionRequest",
|
||||
ImGuiSelectionUserData="ImS64",
|
||||
ImGuiSeparatorFlags="int",
|
||||
ImGuiSettingsCleanupArgs="struct ImGuiSettingsCleanupArgs",
|
||||
ImGuiSettingsHandler="struct ImGuiSettingsHandler",
|
||||
ImGuiShrinkWidthItem="struct ImGuiShrinkWidthItem",
|
||||
ImGuiSizeCallback="void (*)(ImGuiSizeCallbackData* data);",
|
||||
@@ -162,6 +172,7 @@ local t={
|
||||
ImGuiTableFlags="int",
|
||||
ImGuiTableHeaderData="struct ImGuiTableHeaderData",
|
||||
ImGuiTableInstanceData="struct ImGuiTableInstanceData",
|
||||
ImGuiTableReconcileColumnData="struct ImGuiTableReconcileColumnData",
|
||||
ImGuiTableRowFlags="int",
|
||||
ImGuiTableSettings="struct ImGuiTableSettings",
|
||||
ImGuiTableSortSpecs="struct ImGuiTableSortSpecs",
|
||||
@@ -182,6 +193,8 @@ local t={
|
||||
ImGuiViewportP="struct ImGuiViewportP",
|
||||
ImGuiWindow="struct ImGuiWindow",
|
||||
ImGuiWindowBgClickFlags="int",
|
||||
ImGuiWindowClass="struct ImGuiWindowClass",
|
||||
ImGuiWindowDockStyle="struct ImGuiWindowDockStyle",
|
||||
ImGuiWindowFlags="int",
|
||||
ImGuiWindowRefreshFlags="int",
|
||||
ImGuiWindowSettings="struct ImGuiWindowSettings",
|
||||
@@ -211,6 +224,9 @@ local t={
|
||||
ImWchar16="unsigned short",
|
||||
ImWchar32="unsigned int",
|
||||
STB_TexteditState="struct STB_TexteditState",
|
||||
StbTexteditRow="struct StbTexteditRow",
|
||||
StbUndoRecord="struct StbUndoRecord",
|
||||
StbUndoState="struct StbUndoState",
|
||||
stbrp_context_opaque="struct stbrp_context_opaque",
|
||||
stbrp_node="struct stbrp_node",
|
||||
stbrp_node_im="stbrp_node"}
|
||||
|
||||
2
imgui
2
imgui
Submodule imgui updated: dac07199cf...b48d1afbe8
Reference in New Issue
Block a user