From 21358bbc08a279838c9c8a1e1167ca7455a180cf Mon Sep 17 00:00:00 2001 From: JamesWrigley Date: Sat, 6 Jul 2024 21:10:00 +0200 Subject: [PATCH] Automatically dereference struct fields This is an experiment to see if we can avoid having to call unsafe_load() all the time. --- demo/demo.jl | 8 +- examples/app_constrained_resize.jl | 6 +- examples/app_custom_rendering.jl | 4 +- examples/app_simple_overlay.jl | 6 +- examples/demo.jl | 8 +- examples/demo_helper.jl | 56 +- examples/demo_misc.jl | 26 +- examples/demo_widgets.jl | 21 +- examples/demo_window.jl | 6 +- examples/large_meshes.jl | 20 +- ext/GlfwOpenGLBackend.jl | 2 +- gen/generator.toml | 3 + lib/aarch64-apple-darwin20.jl | 1168 +++++++++++++++++++++++++-- lib/aarch64-linux-gnu.jl | 1168 +++++++++++++++++++++++++-- lib/aarch64-linux-musl.jl | 1168 +++++++++++++++++++++++++-- lib/armv7l-linux-gnueabihf.jl | 1168 +++++++++++++++++++++++++-- lib/armv7l-linux-musleabihf.jl | 1168 +++++++++++++++++++++++++-- lib/i686-linux-gnu.jl | 1168 +++++++++++++++++++++++++-- lib/i686-linux-musl.jl | 1168 +++++++++++++++++++++++++-- lib/i686-w64-mingw32.jl | 1185 ++++++++++++++++++++++++++-- lib/powerpc64le-linux-gnu.jl | 1168 +++++++++++++++++++++++++-- lib/x86_64-apple-darwin14.jl | 1168 +++++++++++++++++++++++++-- lib/x86_64-linux-gnu.jl | 1168 +++++++++++++++++++++++++-- lib/x86_64-linux-musl.jl | 1168 +++++++++++++++++++++++++-- lib/x86_64-unknown-freebsd13.2.jl | 1168 +++++++++++++++++++++++++-- lib/x86_64-w64-mingw32.jl | 1185 ++++++++++++++++++++++++++-- 26 files changed, 15779 insertions(+), 773 deletions(-) diff --git a/demo/demo.jl b/demo/demo.jl index 6b74498..fec953a 100644 --- a/demo/demo.jl +++ b/demo/demo.jl @@ -15,8 +15,8 @@ function official_demo(; engine=nothing) # Enable docking and multi-viewport io = CImGui.GetIO() - io.ConfigFlags = unsafe_load(io.ConfigFlags) | CImGui.ImGuiConfigFlags_DockingEnable - io.ConfigFlags = unsafe_load(io.ConfigFlags) | CImGui.ImGuiConfigFlags_ViewportsEnable + io.ConfigFlags = io.ConfigFlags | CImGui.ImGuiConfigFlags_DockingEnable + io.ConfigFlags = io.ConfigFlags | CImGui.ImGuiConfigFlags_ViewportsEnable # Setup Dear ImGui style CImGui.StyleColorsDark() @@ -30,7 +30,7 @@ function official_demo(; engine=nothing) # - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling `CImGui.Build()`/`GetTexDataAsXXXX()``, which `ImGui_ImplXXXX_NewFrame` below will call. # - Read 'fonts/README.txt' for more instructions and details. fonts_dir = joinpath(@__DIR__, "..", "fonts") - fonts = unsafe_load(CImGui.GetIO().Fonts) + fonts = CImGui.GetIO().Fonts # default_font = CImGui.AddFontDefault(fonts) # CImGui.AddFontFromFileTTF(fonts, joinpath(fonts_dir, "Cousine-Regular.ttf"), 15) # CImGui.AddFontFromFileTTF(fonts, joinpath(fonts_dir, "DroidSans.ttf"), 16) @@ -65,7 +65,7 @@ function official_demo(; engine=nothing) CImGui.SameLine() CImGui.Text("counter = $counter") - CImGui.Text(@sprintf("Application average %.3f ms/frame (%.1f FPS)", 1000 / unsafe_load(CImGui.GetIO().Framerate), unsafe_load(CImGui.GetIO().Framerate))) + CImGui.Text(@sprintf("Application average %.3f ms/frame (%.1f FPS)", 1000 / CImGui.GetIO().Framerate, CImGui.GetIO().Framerate)) CImGui.End() end diff --git a/examples/app_constrained_resize.jl b/examples/app_constrained_resize.jl index 95c833e..38b37a4 100644 --- a/examples/app_constrained_resize.jl +++ b/examples/app_constrained_resize.jl @@ -9,14 +9,14 @@ Create a window with custom resize constraints. """ global function ShowExampleAppConstrainedResize(p_open::Ref{Bool}) function Square(data::Ptr{ImGuiSizeCallbackData})::Cvoid - desired_size = unsafe_load(data.DesiredSize) + desired_size = data.DesiredSize max_size = max(desired_size.x, desired_size.y) data.DesiredSize = ImVec2(max_size, max_size) end function Step(data::Ptr{ImGuiSizeCallbackData})::Cvoid - desired_size = data.DesiredSize |> unsafe_load - step::Cfloat = data.UserData |> unsafe_load |> Int + desired_size = data.DesiredSize + step::Cfloat = data.UserData |> Int size_x = trunc(desired_size.x / step + 0.5) * step size_y = trunc(desired_size.y / step + 0.5) * step data.DesiredSize = ImVec2(size_x, size_y) diff --git a/examples/app_custom_rendering.jl b/examples/app_custom_rendering.jl index cabfd93..a63214a 100644 --- a/examples/app_custom_rendering.jl +++ b/examples/app_custom_rendering.jl @@ -81,8 +81,8 @@ function ShowExampleAppCustomRendering(p_open::Ref{Bool}) adding_preview = false CImGui.InvisibleButton("canvas", canvas_size) - mouse_x = unsafe_load(CImGui.GetIO().MousePos.x) - mouse_y = unsafe_load(CImGui.GetIO().MousePos.y) + mouse_x = CImGui.GetIO().MousePos.x + mouse_y = CImGui.GetIO().MousePos.y mouse_pos_in_canvas = ImVec2(mouse_x - canvas_pos.x, mouse_y - canvas_pos.y) if adding_line adding_preview = true diff --git a/examples/app_simple_overlay.jl b/examples/app_simple_overlay.jl index 00e2474..86a8a90 100644 --- a/examples/app_simple_overlay.jl +++ b/examples/app_simple_overlay.jl @@ -13,8 +13,8 @@ function ShowExampleAppSimpleOverlay(p_open::Ref{Bool}) io = CImGui.GetIO() @cstatic corner=Cint(0) begin if corner != -1 - window_pos_x = corner & 1 != 0 ? unsafe_load(io.DisplaySize).x - DISTANCE : DISTANCE - window_pos_y = corner & 2 != 0 ? unsafe_load(io.DisplaySize).y - DISTANCE : DISTANCE + window_pos_x = corner & 1 != 0 ? io.DisplaySize.x - DISTANCE : DISTANCE + window_pos_y = corner & 2 != 0 ? io.DisplaySize.y - DISTANCE : DISTANCE window_pos = (window_pos_x, window_pos_y) window_pos_pivot = (corner & 1 != 0 ? 1.0 : 0.0, corner & 2 != 0 ? 1.0 : 0.0) CImGui.SetNextWindowPos(window_pos, CImGui.ImGuiCond_Always, window_pos_pivot) @@ -28,7 +28,7 @@ function ShowExampleAppSimpleOverlay(p_open::Ref{Bool}) CImGui.Text("Simple overlay\n in the corner of the screen.\n (right-click to change position)") CImGui.Separator() if CImGui.IsMousePosValid() - CImGui.Text(@sprintf("Mouse Position: (%.1f,%.1f)", unsafe_load(io.MousePos).x, unsafe_load(io.MousePos).y)) + CImGui.Text(@sprintf("Mouse Position: (%.1f,%.1f)", io.MousePos.x, io.MousePos.y)) else CImGui.Text("Mouse Position: ") end diff --git a/examples/demo.jl b/examples/demo.jl index 9fa4b8b..8e23487 100644 --- a/examples/demo.jl +++ b/examples/demo.jl @@ -15,8 +15,8 @@ function julia_demo(; engine=nothing) # enable docking and multi-viewport io = CImGui.GetIO() - io.ConfigFlags = unsafe_load(io.ConfigFlags) | CImGui.ImGuiConfigFlags_DockingEnable - io.ConfigFlags = unsafe_load(io.ConfigFlags) | CImGui.ImGuiConfigFlags_ViewportsEnable + io.ConfigFlags = io.ConfigFlags | CImGui.ImGuiConfigFlags_DockingEnable + io.ConfigFlags = io.ConfigFlags | CImGui.ImGuiConfigFlags_ViewportsEnable # setup Dear ImGui style CImGui.StyleColorsDark() @@ -25,7 +25,7 @@ function julia_demo(; engine=nothing) # When viewports are enabled we tweak WindowRounding/WindowBg so platform windows can look identical to regular ones. style = Ptr{ImGuiStyle}(CImGui.GetStyle()) - if unsafe_load(io.ConfigFlags) & ImGuiConfigFlags_ViewportsEnable == ImGuiConfigFlags_ViewportsEnable + if io.ConfigFlags & ImGuiConfigFlags_ViewportsEnable == ImGuiConfigFlags_ViewportsEnable style.WindowRounding = 5.0f0 col = CImGui.c_get(style.Colors, CImGui.ImGuiCol_WindowBg) CImGui.c_set!(style.Colors, CImGui.ImGuiCol_WindowBg, ImVec4(col.x, col.y, col.z, 1.0f0)) @@ -38,7 +38,7 @@ function julia_demo(; engine=nothing) # - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling `CImGui.Build()`/`GetTexDataAsXXXX()``, which `ImGui_ImplXXXX_NewFrame` below will call. # - Read 'fonts/README.txt' for more instructions and details. fonts_dir = joinpath(@__DIR__, "..", "fonts") - fonts = unsafe_load(CImGui.GetIO().Fonts) + fonts = CImGui.GetIO().Fonts # default_font = CImGui.AddFontDefault(fonts) # CImGui.AddFontFromFileTTF(fonts, joinpath(fonts_dir, "Cousine-Regular.ttf"), 15) # CImGui.AddFontFromFileTTF(fonts, joinpath(fonts_dir, "DroidSans.ttf"), 16) diff --git a/examples/demo_helper.jl b/examples/demo_helper.jl index acaea6a..f6aae08 100644 --- a/examples/demo_helper.jl +++ b/examples/demo_helper.jl @@ -8,7 +8,7 @@ function ShowUserGuide() CImGui.BulletText("Click and drag on any empty space to move window.") CImGui.BulletText("TAB/SHIFT+TAB to cycle through keyboard editable fields.") CImGui.BulletText("CTRL+Click on a slider or drag box to input value as text.") - unsafe_load(CImGui.GetIO().FontAllowUserScaling) && CImGui.BulletText("CTRL+Mouse Wheel to zoom window contents.") + CImGui.GetIO().FontAllowUserScaling && CImGui.BulletText("CTRL+Mouse Wheel to zoom window contents.") CImGui.BulletText("Mouse Wheel to scroll.") CImGui.BulletText("While editing text:\n") CImGui.Indent() @@ -48,43 +48,43 @@ function ShowAboutWindow(p_open::Ref{Bool}) CImGui.Separator() CImGui.Text("sizeof(size_t): $(sizeof(Csize_t)), sizeof(ImDrawIdx): $(sizeof(CImGui.ImDrawIdx)), sizeof(ImDrawVert): $(sizeof(CImGui.ImDrawVert))") CImGui.Separator() - CImGui.Text(@sprintf("io.BackendPlatformName: %s", unsafe_load(io.BackendPlatformName) != C_NULL ? unsafe_string(unsafe_load(io.BackendPlatformName)) : "NULL")) - CImGui.Text(@sprintf("io.BackendRendererName: %s", unsafe_load(io.BackendRendererName) != C_NULL ? unsafe_string(unsafe_load(io.BackendRendererName)) : "NULL")) - CImGui.Text(@sprintf("io.ConfigFlags: 0x%08X", unsafe_load(io.ConfigFlags))) - unsafe_load(io.ConfigFlags) & CImGui.ImGuiConfigFlags_NavEnableKeyboard != 0 && CImGui.Text(" NavEnableKeyboard") - unsafe_load(io.ConfigFlags) & CImGui.ImGuiConfigFlags_NavEnableGamepad != 0 && CImGui.Text(" NavEnableGamepad") - unsafe_load(io.ConfigFlags) & CImGui.ImGuiConfigFlags_NavEnableSetMousePos != 0 && CImGui.Text(" NavEnableSetMousePos") - unsafe_load(io.ConfigFlags) & CImGui.ImGuiConfigFlags_NavNoCaptureKeyboard != 0 && CImGui.Text(" NavNoCaptureKeyboard") - unsafe_load(io.ConfigFlags) & CImGui.ImGuiConfigFlags_NoMouse != 0 && CImGui.Text(" NoMouse") - unsafe_load(io.ConfigFlags) & CImGui.ImGuiConfigFlags_NoMouseCursorChange != 0 && CImGui.Text(" NoMouseCursorChange") - unsafe_load(io.MouseDrawCursor) && CImGui.Text("io.MouseDrawCursor") - unsafe_load(io.ConfigMacOSXBehaviors) && CImGui.Text("io.ConfigMacOSXBehaviors") - unsafe_load(io.ConfigInputTextCursorBlink) && CImGui.Text("io.ConfigInputTextCursorBlink") - unsafe_load(io.ConfigWindowsResizeFromEdges) && CImGui.Text("io.ConfigWindowsResizeFromEdges") - unsafe_load(io.ConfigWindowsMoveFromTitleBarOnly) && CImGui.Text("io.ConfigWindowsMoveFromTitleBarOnly") - CImGui.Text(@sprintf("io.BackendFlags: 0x%08X", unsafe_load(io.BackendFlags))) - unsafe_load(io.BackendFlags) & ImGuiBackendFlags_HasGamepad != 0 && CImGui.Text(" HasGamepad") - unsafe_load(io.BackendFlags) & ImGuiBackendFlags_HasMouseCursors != 0 && CImGui.Text(" HasMouseCursors") - unsafe_load(io.BackendFlags) & ImGuiBackendFlags_HasSetMousePos != 0 && CImGui.Text(" HasSetMousePos") + CImGui.Text(@sprintf("io.BackendPlatformName: %s", io.BackendPlatformName != C_NULL ? unsafe_string(io.BackendPlatformName) : "NULL")) + CImGui.Text(@sprintf("io.BackendRendererName: %s", io.BackendRendererName != C_NULL ? unsafe_string(io.BackendRendererName) : "NULL")) + CImGui.Text(@sprintf("io.ConfigFlags: 0x%08X", io.ConfigFlags)) + io.ConfigFlags & CImGui.ImGuiConfigFlags_NavEnableKeyboard != 0 && CImGui.Text(" NavEnableKeyboard") + io.ConfigFlags & CImGui.ImGuiConfigFlags_NavEnableGamepad != 0 && CImGui.Text(" NavEnableGamepad") + io.ConfigFlags & CImGui.ImGuiConfigFlags_NavEnableSetMousePos != 0 && CImGui.Text(" NavEnableSetMousePos") + io.ConfigFlags & CImGui.ImGuiConfigFlags_NavNoCaptureKeyboard != 0 && CImGui.Text(" NavNoCaptureKeyboard") + io.ConfigFlags & CImGui.ImGuiConfigFlags_NoMouse != 0 && CImGui.Text(" NoMouse") + io.ConfigFlags & CImGui.ImGuiConfigFlags_NoMouseCursorChange != 0 && CImGui.Text(" NoMouseCursorChange") + io.MouseDrawCursor && CImGui.Text("io.MouseDrawCursor") + io.ConfigMacOSXBehaviors && CImGui.Text("io.ConfigMacOSXBehaviors") + io.ConfigInputTextCursorBlink && CImGui.Text("io.ConfigInputTextCursorBlink") + io.ConfigWindowsResizeFromEdges && CImGui.Text("io.ConfigWindowsResizeFromEdges") + io.ConfigWindowsMoveFromTitleBarOnly && CImGui.Text("io.ConfigWindowsMoveFromTitleBarOnly") + CImGui.Text(@sprintf("io.BackendFlags: 0x%08X", io.BackendFlags)) + io.BackendFlags & ImGuiBackendFlags_HasGamepad != 0 && CImGui.Text(" HasGamepad") + io.BackendFlags & ImGuiBackendFlags_HasMouseCursors != 0 && CImGui.Text(" HasMouseCursors") + io.BackendFlags & ImGuiBackendFlags_HasSetMousePos != 0 && CImGui.Text(" HasSetMousePos") CImGui.Separator() # CImGui.Text("io.Fonts: %d fonts, Flags: 0x%08X, TexSize: %d,%d", io.Fonts->Fonts.Size, io.Fonts->Flags, io.Fonts->TexWidth, io.Fonts->TexHeight); - CImGui.Text(@sprintf("io.DisplaySize: %.2f,%.2f", unsafe_load(io.DisplaySize).x, unsafe_load(io.DisplaySize).y)) - CImGui.Text(@sprintf("io.DisplayFramebufferScale: %.2f,%.2f", unsafe_load(io.DisplayFramebufferScale).x, unsafe_load(io.DisplayFramebufferScale).y)) + CImGui.Text(@sprintf("io.DisplaySize: %.2f,%.2f", io.DisplaySize.x, io.DisplaySize.y)) + CImGui.Text(@sprintf("io.DisplayFramebufferScale: %.2f,%.2f", io.DisplayFramebufferScale.x, io.DisplayFramebufferScale.y)) CImGui.Separator() - window_padding = unsafe_load(style.WindowPadding) + window_padding = style.WindowPadding CImGui.Text(@sprintf("style.WindowPadding: %.2f,%.2f", window_padding.x, window_padding.y)) - CImGui.Text(@sprintf("style.WindowBorderSize: %.2f", unsafe_load(style.WindowBorderSize))) + CImGui.Text(@sprintf("style.WindowBorderSize: %.2f", style.WindowBorderSize)) - frame_padding = unsafe_load(style.FramePadding) + frame_padding = style.FramePadding CImGui.Text(@sprintf("style.FramePadding: %.2f,%.2f", frame_padding.x, frame_padding.y)) - CImGui.Text(@sprintf("style.FrameRounding: %.2f", unsafe_load(style.FrameRounding))) - CImGui.Text(@sprintf("style.FrameBorderSize: %.2f", unsafe_load(style.FrameBorderSize))) + CImGui.Text(@sprintf("style.FrameRounding: %.2f", style.FrameRounding)) + CImGui.Text(@sprintf("style.FrameBorderSize: %.2f", style.FrameBorderSize)) - item_spacing = unsafe_load(style.ItemSpacing) + item_spacing = style.ItemSpacing CImGui.Text(@sprintf("style.ItemSpacing: %.2f,%.2f", item_spacing.x, item_spacing.y)) - item_inner_spacing = unsafe_load(style.ItemInnerSpacing) + item_inner_spacing = style.ItemInnerSpacing CImGui.Text(@sprintf("style.ItemInnerSpacing: %.2f,%.2f", item_inner_spacing.x, item_inner_spacing.y)) copy_to_clipboard && CImGui.LogFinish() diff --git a/examples/demo_misc.jl b/examples/demo_misc.jl index d6604ee..5460bc1 100644 --- a/examples/demo_misc.jl +++ b/examples/demo_misc.jl @@ -24,19 +24,19 @@ function ShowDemoWindowMisc() if CImGui.CollapsingHeader("Inputs, Navigation & Focus") io = CImGui.GetIO() - CImGui.Text("WantCaptureMouse: $(unsafe_load(io.WantCaptureMouse))") - CImGui.Text("WantCaptureKeyboard: $(unsafe_load(io.WantCaptureKeyboard))") - CImGui.Text("WantTextInput: $(unsafe_load(io.WantTextInput))") - CImGui.Text("WantSetMousePos: $(unsafe_load(io.WantSetMousePos))") - CImGui.Text("NavActive: $(unsafe_load(io.NavActive)), NavVisible: $(unsafe_load(io.NavVisible))") + CImGui.Text("WantCaptureMouse: $(io.WantCaptureMouse)") + CImGui.Text("WantCaptureKeyboard: $(io.WantCaptureKeyboard)") + CImGui.Text("WantTextInput: $(io.WantTextInput)") + CImGui.Text("WantSetMousePos: $(io.WantSetMousePos)") + CImGui.Text("NavActive: $(io.NavActive), NavVisible: $(io.NavVisible)") if CImGui.TreeNode("Keyboard, Mouse & Navigation State") if CImGui.IsMousePosValid() - CImGui.Text("Mouse pos: ($(unsafe_load(io.MousePos).x), $(unsafe_load(io.MousePos).y))") + CImGui.Text("Mouse pos: ($(io.MousePos.x), $(io.MousePos.y))") else CImGui.Text("Mouse pos: ") end - CImGui.Text("Mouse delta: ($(unsafe_load(io.MouseDelta).x), $(unsafe_load(io.MouseDelta).y))") + CImGui.Text("Mouse delta: ($(io.MouseDelta.x), $(io.MouseDelta.y))") CImGui.Text("Mouse down:") for i = 0:4 dur = CImGui.c_get(io.MouseDownDuration, i) @@ -62,13 +62,13 @@ function ShowDemoWindowMisc() CImGui.SameLine() CImGui.Text("b$i") end - CImGui.Text(@sprintf("Mouse wheel: %.1f", unsafe_load(io.MouseWheel))) + CImGui.Text(@sprintf("Mouse wheel: %.1f", io.MouseWheel)) key_range = CImGui.ImGuiKey_NamedKey_BEGIN:CImGui.ImGuiKey_NamedKey_END - 1 CImGui.Text("Keys down:") for i = key_range - key_data = unsafe_load(CImGui.GetKeyData(CImGui.ImGuiKey(i))) + key_data = CImGui.GetKeyData(CImGui.ImGuiKey(i)) dur = key_data.DownDuration dur ≥ 0 || continue CImGui.SameLine() @@ -87,7 +87,7 @@ function ShowDemoWindowMisc() CImGui.SameLine() CImGui.Text("$i") end - CImGui.Text(@sprintf("Keys mods: %s%s%s%s", unsafe_load(io.KeyCtrl) ? "CTRL " : "", unsafe_load(io.KeyShift) ? "SHIFT " : "", unsafe_load(io.KeyAlt) ? "ALT " : "", unsafe_load(io.KeySuper) ? "SUPER " : "")) + CImGui.Text(@sprintf("Keys mods: %s%s%s%s", io.KeyCtrl ? "CTRL " : "", io.KeyShift ? "SHIFT " : "", io.KeyAlt ? "ALT " : "", io.KeySuper ? "SUPER " : "")) navinput_range = CImGui.ImGuiKey_GamepadStart:CImGui.ImGuiKey_GamepadRStickDown @@ -99,7 +99,7 @@ function ShowDemoWindowMisc() end CImGui.Text("NavInputs pressed:") for i = navinput_range - key_data = unsafe_load(CImGui.GetKeyData(CImGui.ImGuiKey(i))) + key_data = CImGui.GetKeyData(CImGui.ImGuiKey(i)) dur = key_data.DownDuration dur == 0.0 || continue CImGui.SameLine() @@ -107,7 +107,7 @@ function ShowDemoWindowMisc() end CImGui.Text("NavInputs duration:") for i = navinput_range - key_data = unsafe_load(CImGui.GetKeyData(CImGui.ImGuiKey(i))) + key_data = CImGui.GetKeyData(CImGui.ImGuiKey(i)) dur = key_data.DownDuration dur ≥ 0.0 || continue CImGui.SameLine() @@ -199,7 +199,7 @@ function ShowDemoWindowMisc() # you can request a lower or higher threshold using the second parameter of IsMouseDragging() and GetMouseDragDelta() value_raw = CImGui.GetMouseDragDelta(0, 0.0) value_with_lock_threshold = CImGui.GetMouseDragDelta(0) - mouse_delta = unsafe_load(io.MouseDelta) + mouse_delta = io.MouseDelta CImGui.SameLine() txt = @sprintf "Raw (%.1f, %.1f), WithLockThresold (%.1f, %.1f), MouseDelta (%.1f, %.1f)" value_raw.x value_raw.y value_with_lock_threshold.x value_with_lock_threshold.y mouse_delta.x mouse_delta.y CImGui.Text(txt) diff --git a/examples/demo_widgets.jl b/examples/demo_widgets.jl index 6d3f86d..447dbcf 100644 --- a/examples/demo_widgets.jl +++ b/examples/demo_widgets.jl @@ -45,7 +45,7 @@ function ShowDemoWindowWidgets() # arrow buttons with Repeater @cstatic counter=Cint(0) begin - spacing = unsafe_load(CImGui.GetStyle().ItemInnerSpacing.x) + spacing = CImGui.GetStyle().ItemInnerSpacing.x CImGui.PushButtonRepeat(true) CImGui.ArrowButton("##left", CImGui.ImGuiDir_Left) && (counter-=1;) CImGui.SameLine(0.0, spacing) @@ -182,7 +182,7 @@ function ShowDemoWindowWidgets() end if node_clicked != -1 # update selection state. Process outside of tree loop to avoid visual inconsistencies during the clicking-frame. - if unsafe_load(CImGui.GetIO().KeyCtrl) + if CImGui.GetIO().KeyCtrl selection_mask ⊻= 1 << node_clicked # CTRL+click to toggle else #if (!(selection_mask & (1 << node_clicked))) # Depending on selection behavior you want, this commented bit preserve selection when clicking on item that is part of the selection selection_mask = 1 << node_clicked # Click to single-select @@ -290,10 +290,9 @@ function ShowDemoWindowWidgets() # If you decided that ImTextureID = MyEngineTexture*, then you can pass your MyEngineTexture* pointers to CImGui.Image(), and gather width/height through your own functions, etc. # Using ShowMetricsWindow() as a "debugger" to inspect the draw data that are being passed to your render will help you debug issues if you are confused about this. # Consider using the lower-level ImDrawList::AddImage() API, via CImGui.GetWindowDrawList()->AddImage(). - font_atlas = unsafe_load(io.Fonts) - my_tex_id = unsafe_load(font_atlas.TexID) - my_tex_w = unsafe_load(font_atlas.TexWidth) - my_tex_h = unsafe_load(font_atlas.TexHeight) + my_tex_id = io.Fonts.TexID + my_tex_w = io.Fonts.TexWidth + my_tex_h = io.Fonts.TexHeight CImGui.Text(@sprintf("%.0fx%.0f", my_tex_w, my_tex_h)) pos = CImGui.GetCursorScreenPos() @@ -301,13 +300,13 @@ function ShowDemoWindowWidgets() if CImGui.IsItemHovered() CImGui.BeginTooltip() region_sz = 32.0 - region_x = unsafe_load(io.MousePos).x - pos.x - region_sz * 0.5 + region_x = io.MousePos.x - pos.x - region_sz * 0.5 if region_x < 0.0 region_x = 0.0 elseif region_x > my_tex_w - region_sz region_x = my_tex_w - region_sz end - region_y = unsafe_load(io.MousePos).y - pos.y - region_sz * 0.5 + region_y = io.MousePos.y - pos.y - region_sz * 0.5 if region_y < 0.0 region_y = 0.0 elseif region_y > my_tex_h - region_sz @@ -431,7 +430,7 @@ function ShowDemoWindowWidgets() buf = @sprintf "Object %d" n if CImGui.Selectable(buf, selection[n+1]) # clear selection when CTRL is not held - !unsafe_load(CImGui.GetIO().KeyCtrl) && fill!(selection, false) + !CImGui.GetIO().KeyCtrl && fill!(selection, false) selection[n+1] ⊻= 1 end end @@ -595,14 +594,14 @@ function ShowDemoWindowWidgets() # animate a simple progress bar @cstatic progress=Cfloat(0) progress_dir=Cfloat(1) begin if animate - progress += progress_dir * 0.4 * unsafe_load(CImGui.GetIO().DeltaTime) + progress += progress_dir * 0.4 * CImGui.GetIO().DeltaTime progress ≥ 1.1 && (progress = 1.1; progress_dir *= -1.0;) progress ≤ -0.1 && (progress = -0.1; progress_dir *= -1.0;) end # typically we would use ImVec2(-1.0,0.0) to use all available width, or ImVec2(width,0.0) for a specified width. ImVec2(0.0,0.0) uses ItemWidth. CImGui.ProgressBar(progress, ImVec2(0.0,0.0)) - CImGui.SameLine(0.0, unsafe_load(CImGui.GetStyle().ItemInnerSpacing).x) + CImGui.SameLine(0.0, CImGui.GetStyle().ItemInnerSpacing.x) CImGui.Text("Progress Bar") progress_saturated = (progress < 0.0) ? 0.0 : (progress > 1.0) ? 1.0 : progress diff --git a/examples/demo_window.jl b/examples/demo_window.jl index 1bba674..9ec9684 100644 --- a/examples/demo_window.jl +++ b/examples/demo_window.jl @@ -156,13 +156,13 @@ global function ShowJuliaDemoWindow(p_open::Ref{Bool}) CImGui.SameLine() CImGui.HelpMarker("Instruct navigation to move the mouse cursor. See comment for ImGuiConfigFlags_NavEnableSetMousePos.") CImGui.CheckboxFlags("io.ConfigFlags: NoMouse", io.ConfigFlags, CImGui.ImGuiConfigFlags_NoMouse) - if unsafe_load(io.ConfigFlags) & CImGui.ImGuiConfigFlags_NoMouse != 0 # create a way to restore this flag otherwise we could be stuck completely! + if io.ConfigFlags & CImGui.ImGuiConfigFlags_NoMouse != 0 # create a way to restore this flag otherwise we could be stuck completely! if mod(CImGui.GetTime(), 0.4) < 0.2 CImGui.SameLine() CImGui.Text("<>") end if CImGui.IsKeyPressed(CImGui.ImGuiKey_Space) - io.ConfigFlags = unsafe_load(io.ConfigFlags) & ~Cuint(CImGui.ImGuiConfigFlags_NoMouse) + io.ConfigFlags = io.ConfigFlags & ~Cuint(CImGui.ImGuiConfigFlags_NoMouse) end end CImGui.CheckboxFlags("io.ConfigFlags: NoMouseCursorChange", io.ConfigFlags, CImGui.ImGuiConfigFlags_NoMouseCursorChange) @@ -184,7 +184,7 @@ global function ShowJuliaDemoWindow(p_open::Ref{Bool}) if CImGui.TreeNode("Backend Flags") CImGui.HelpMarker("Those flags are set by the back-ends (imgui_impl_xxx files) to specify their capabilities.") - backend_flags::UInt32 = unsafe_load(io.BackendFlags) # make a local copy to avoid modifying the back-end flags. + backend_flags::UInt32 = io.BackendFlags # make a local copy to avoid modifying the back-end flags. @c CImGui.CheckboxFlags("io.BackendFlags: HasGamepad", &backend_flags, CImGui.ImGuiBackendFlags_HasGamepad) @c CImGui.CheckboxFlags("io.BackendFlags: HasMouseCursors", &backend_flags, CImGui.ImGuiBackendFlags_HasMouseCursors) @c CImGui.CheckboxFlags("io.BackendFlags: HasSetMousePos", &backend_flags, CImGui.ImGuiBackendFlags_HasSetMousePos) diff --git a/examples/large_meshes.jl b/examples/large_meshes.jl index a82b48e..f032453 100644 --- a/examples/large_meshes.jl +++ b/examples/large_meshes.jl @@ -4,7 +4,8 @@ # vertices, which should result in visual artifacts unless vertex offsets are # enabled (or ImGui was built with 32-bit indices). -using CImGui +import CImGui as ig +using CImGui.lib import GLFW import ModernGL @@ -14,8 +15,8 @@ imgui_ctx = CImGui.CreateContext() # enable docking and multi-viewport io = CImGui.GetIO() -io.ConfigFlags = unsafe_load(io.ConfigFlags) | ImGuiConfigFlags_DockingEnable -io.ConfigFlags = unsafe_load(io.ConfigFlags) | ImGuiConfigFlags_ViewportsEnable +io.ConfigFlags = io.ConfigFlags | ImGuiConfigFlags_DockingEnable +io.ConfigFlags = io.ConfigFlags | ImGuiConfigFlags_ViewportsEnable # set style CImGui.StyleColorsDark() @@ -40,9 +41,8 @@ end function gui(state) if CImGui.Begin("Dear ImGui Backend Checker") version = unsafe_string(CImGui.GetVersion()) - io_ref = unsafe_load(io) - platform = unsafe_string(io_ref.BackendPlatformName) - renderer = unsafe_string(io_ref.BackendRendererName) + platform = unsafe_string(io.BackendPlatformName) + renderer = unsafe_string(io.BackendRendererName) CImGui.Text("Dear ImGui $(version) Backend Checker") CImGui.Text("Platform: $(platform)") @@ -51,7 +51,7 @@ function gui(state) CImGui.Separator() if CImGui.TreeNode("0001: Renderer: Large Mesh Support") - drawlist_ptr = CImGui.GetWindowDrawList() + drawlist = CImGui.GetWindowDrawList() let vtx_count = Ref(state.vtx_count) CImGui.SliderInt("VtxCount##1", vtx_count, 0, 100_000) @@ -59,14 +59,13 @@ function gui(state) for n = 0:(vtx_count[] ÷ 4 - 1) off_x, off_y, color = generate_widget_properties(n) - CImGui.AddRectFilled(drawlist_ptr, + CImGui.AddRectFilled(drawlist, ImVec2(pos.x + off_x, pos.y + off_y), ImVec2(pos.x + off_x + 50, pos.y + off_y + 50), color) end CImGui.Dummy(350, 150) - drawlist = unsafe_load(drawlist_ptr) CImGui.Text("VtxBuffer.Size = $(drawlist.VtxBuffer.Size)") state.vtx_count = vtx_count[] @@ -78,13 +77,12 @@ function gui(state) for n = 0:(vtx_count2[] ÷ 40 - 1) off_x, off_y, color = generate_widget_properties(n) - CImGui.AddText(drawlist_ptr, + CImGui.AddText(drawlist, ImVec2(pos.x + off_x, pos.y + off_y), color, "ABCDEFGHIJ") end CImGui.Dummy(350, 120) - drawlist = unsafe_load(drawlist_ptr) CImGui.Text("VtxBuffer.Size = $(drawlist.VtxBuffer.Size)") state.vtx_count2 = vtx_count2[] diff --git a/ext/GlfwOpenGLBackend.jl b/ext/GlfwOpenGLBackend.jl index 89e4dcd..45cb790 100644 --- a/ext/GlfwOpenGLBackend.jl +++ b/ext/GlfwOpenGLBackend.jl @@ -134,7 +134,7 @@ function renderloop(ui, ctx::Ptr{lib.ImGuiContext}, ::Val{:GlfwOpenGL3}; GLFW.MakeContextCurrent(window) GLFW.SwapBuffers(window) - if (unsafe_load(lib.igGetIO().ConfigFlags) & lib.ImGuiConfigFlags_ViewportsEnable) == lib.ImGuiConfigFlags_ViewportsEnable + if (lib.igGetIO().ConfigFlags & lib.ImGuiConfigFlags_ViewportsEnable) == lib.ImGuiConfigFlags_ViewportsEnable backup_current_context = GLFW.GetCurrentContext() lib.igUpdatePlatformWindows() lib.igRenderPlatformWindowsDefault(C_NULL, C_NULL) diff --git a/gen/generator.toml b/gen/generator.toml index 9365865..e5860e2 100644 --- a/gen/generator.toml +++ b/gen/generator.toml @@ -24,5 +24,8 @@ field_access_method_list = [ "ImVec4", "ImGuiPlatformMonitor", "ImGuiStyle", + "ImGuiKeyData", + "ImVector_ImDrawVert" ] wrap_variadic_function = true +auto_field_dereference = true diff --git a/lib/aarch64-apple-darwin20.jl b/lib/aarch64-apple-darwin20.jl index 960145e..ebd0836 100644 --- a/lib/aarch64-apple-darwin20.jl +++ b/lib/aarch64-apple-darwin20.jl @@ -1,4 +1,4 @@ -using CEnum +using CEnum: CEnum, @cenum to_c_type(t::Type) = t to_c_type_pairs(va_list) = map(enumerate(to_c_type.(va_list))) do (ind, type) @@ -32,16 +32,24 @@ struct ImVec4 z::Cfloat w::Cfloat end -function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) +function _getptr(x::Ptr{ImVec4}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) f === :z && return Ptr{Cfloat}(x + 8) f === :w && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImVec4`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) + f === :z && return unsafe_load(_getptr(x, f)) + f === :w && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec4}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -56,7 +64,7 @@ struct ImDrawCmd UserCallback::ImDrawCallback UserCallbackData::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) +function _getptr(x::Ptr{ImDrawCmd}, f::Symbol) f === :ClipRect && return Ptr{ImVec4}(x + 0) f === :TextureId && return Ptr{ImTextureID}(x + 16) f === :VtxOffset && return Ptr{Cuint}(x + 24) @@ -64,11 +72,22 @@ function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) f === :ElemCount && return Ptr{Cuint}(x + 32) f === :UserCallback && return Ptr{ImDrawCallback}(x + 40) f === :UserCallbackData && return Ptr{Ptr{Cvoid}}(x + 48) + error("Unrecognized field of type `ImDrawCmd`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) + f === :ClipRect && return _getptr(x, f) + f === :TextureId && return unsafe_load(_getptr(x, f)) + f === :VtxOffset && return unsafe_load(_getptr(x, f)) + f === :IdxOffset && return unsafe_load(_getptr(x, f)) + f === :ElemCount && return unsafe_load(_getptr(x, f)) + f === :UserCallback && return unsafe_load(_getptr(x, f)) + f === :UserCallbackData && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawCmd}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -95,14 +114,20 @@ struct ImVec2 x::Cfloat y::Cfloat end -function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) +function _getptr(x::Ptr{ImVec2}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) + error("Unrecognized field of type `ImVec2`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec2}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -119,6 +144,24 @@ struct ImVector_ImDrawVert Capacity::Cint Data::Ptr{ImDrawVert} end +function _getptr(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return Ptr{Cint}(x + 0) + f === :Capacity && return Ptr{Cint}(x + 4) + f === :Data && return Ptr{Ptr{ImDrawVert}}(x + 8) + error("Unrecognized field of type `ImVector_ImDrawVert`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return unsafe_load(_getptr(x, f)) + f === :Capacity && return unsafe_load(_getptr(x, f)) + f === :Data && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImVector_ImDrawVert}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImDrawListFlags = Cint @@ -142,7 +185,7 @@ struct ImFontGlyph data::NTuple{40, UInt8} end -function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) +function _getptr(x::Ptr{ImFontGlyph}, f::Symbol) f === :Colored && return (Ptr{Cuint}(x + 0), 0, 1) f === :Visible && return (Ptr{Cuint}(x + 0), 1, 1) f === :Codepoint && return (Ptr{Cuint}(x + 0), 2, 30) @@ -155,6 +198,22 @@ function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) f === :V0 && return Ptr{Cfloat}(x + 28) f === :U1 && return Ptr{Cfloat}(x + 32) f === :V1 && return Ptr{Cfloat}(x + 36) + error("Unrecognized field of type `ImFontGlyph`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) + f === :Colored && return unsafe_load(_getptr(x, f)) + f === :Visible && return unsafe_load(_getptr(x, f)) + f === :Codepoint && return unsafe_load(_getptr(x, f)) + f === :AdvanceX && return unsafe_load(_getptr(x, f)) + f === :X0 && return unsafe_load(_getptr(x, f)) + f === :Y0 && return unsafe_load(_getptr(x, f)) + f === :X1 && return unsafe_load(_getptr(x, f)) + f === :Y1 && return unsafe_load(_getptr(x, f)) + f === :U0 && return unsafe_load(_getptr(x, f)) + f === :V0 && return unsafe_load(_getptr(x, f)) + f === :U1 && return unsafe_load(_getptr(x, f)) + f === :V1 && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -182,7 +241,7 @@ end function Base.setproperty!(x::Ptr{ImFontGlyph}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -270,7 +329,7 @@ function Base.getproperty(x::ImFontConfig, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) +function _getptr(x::Ptr{ImFontConfig}, f::Symbol) f === :FontData && return Ptr{Ptr{Cvoid}}(x + 0) f === :FontDataSize && return Ptr{Cint}(x + 8) f === :FontDataOwnedByAtlas && return Ptr{Bool}(x + 12) @@ -291,11 +350,35 @@ function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) f === :EllipsisChar && return Ptr{ImWchar}(x + 88) f === :Name && return Ptr{NTuple{40, Cchar}}(x + 90) f === :DstFont && return Ptr{Ptr{ImFont}}(x + 136) + error("Unrecognized field of type `ImFontConfig`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) + f === :FontData && return unsafe_load(_getptr(x, f)) + f === :FontDataSize && return unsafe_load(_getptr(x, f)) + f === :FontDataOwnedByAtlas && return unsafe_load(_getptr(x, f)) + f === :FontNo && return unsafe_load(_getptr(x, f)) + f === :SizePixels && return unsafe_load(_getptr(x, f)) + f === :OversampleH && return unsafe_load(_getptr(x, f)) + f === :OversampleV && return unsafe_load(_getptr(x, f)) + f === :PixelSnapH && return unsafe_load(_getptr(x, f)) + f === :GlyphExtraSpacing && return _getptr(x, f) + f === :GlyphOffset && return _getptr(x, f) + f === :GlyphRanges && return unsafe_load(_getptr(x, f)) + f === :GlyphMinAdvanceX && return unsafe_load(_getptr(x, f)) + f === :GlyphMaxAdvanceX && return unsafe_load(_getptr(x, f)) + f === :MergeMode && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :RasterizerMultiply && return unsafe_load(_getptr(x, f)) + f === :RasterizerDensity && return unsafe_load(_getptr(x, f)) + f === :EllipsisChar && return unsafe_load(_getptr(x, f)) + f === :Name && return _getptr(x, f) + f === :DstFont && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontConfig}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImFontConfig @@ -332,7 +415,7 @@ struct ImFontAtlas PackIdMouseCursors::Cint PackIdLines::Cint end -function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) +function _getptr(x::Ptr{ImFontAtlas}, f::Symbol) f === :Flags && return Ptr{ImFontAtlasFlags}(x + 0) f === :TexID && return Ptr{ImTextureID}(x + 8) f === :TexDesiredWidth && return Ptr{Cint}(x + 16) @@ -355,11 +438,37 @@ function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) f === :FontBuilderFlags && return Ptr{Cuint}(x + 1168) f === :PackIdMouseCursors && return Ptr{Cint}(x + 1172) f === :PackIdLines && return Ptr{Cint}(x + 1176) + error("Unrecognized field of type `ImFontAtlas`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :TexID && return unsafe_load(_getptr(x, f)) + f === :TexDesiredWidth && return unsafe_load(_getptr(x, f)) + f === :TexGlyphPadding && return unsafe_load(_getptr(x, f)) + f === :Locked && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :TexReady && return unsafe_load(_getptr(x, f)) + f === :TexPixelsUseColors && return unsafe_load(_getptr(x, f)) + f === :TexPixelsAlpha8 && return unsafe_load(_getptr(x, f)) + f === :TexPixelsRGBA32 && return unsafe_load(_getptr(x, f)) + f === :TexWidth && return unsafe_load(_getptr(x, f)) + f === :TexHeight && return unsafe_load(_getptr(x, f)) + f === :TexUvScale && return _getptr(x, f) + f === :TexUvWhitePixel && return _getptr(x, f) + f === :Fonts && return _getptr(x, f) + f === :CustomRects && return _getptr(x, f) + f === :ConfigData && return _getptr(x, f) + f === :TexUvLines && return _getptr(x, f) + f === :FontBuilderIO && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :PackIdMouseCursors && return unsafe_load(_getptr(x, f)) + f === :PackIdLines && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontAtlas}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -456,7 +565,7 @@ struct ImDrawList _FringeScale::Cfloat _OwnerName::Ptr{Cchar} end -function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) +function _getptr(x::Ptr{ImDrawList}, f::Symbol) f === :CmdBuffer && return Ptr{ImVector_ImDrawCmd}(x + 0) f === :IdxBuffer && return Ptr{ImVector_ImDrawIdx}(x + 16) f === :VtxBuffer && return Ptr{ImVector_ImDrawVert}(x + 32) @@ -472,11 +581,30 @@ function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) f === :_TextureIdStack && return Ptr{ImVector_ImTextureID}(x + 168) f === :_FringeScale && return Ptr{Cfloat}(x + 184) f === :_OwnerName && return Ptr{Ptr{Cchar}}(x + 192) + error("Unrecognized field of type `ImDrawList`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) + f === :CmdBuffer && return _getptr(x, f) + f === :IdxBuffer && return _getptr(x, f) + f === :VtxBuffer && return _getptr(x, f) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :_VtxCurrentIdx && return unsafe_load(_getptr(x, f)) + f === :_Data && return unsafe_load(_getptr(x, f)) + f === :_VtxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_IdxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_Path && return _getptr(x, f) + f === :_CmdHeader && return _getptr(x, f) + f === :_Splitter && return _getptr(x, f) + f === :_ClipRectStack && return _getptr(x, f) + f === :_TextureIdStack && return _getptr(x, f) + f === :_FringeScale && return unsafe_load(_getptr(x, f)) + f === :_OwnerName && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawList}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -515,7 +643,7 @@ function Base.getproperty(x::ImGuiViewport, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) +function _getptr(x::Ptr{ImGuiViewport}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiViewportFlags}(x + 4) f === :Pos && return Ptr{ImVec2}(x + 8) @@ -533,11 +661,32 @@ function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) f === :PlatformRequestMove && return Ptr{Bool}(x + 89) f === :PlatformRequestResize && return Ptr{Bool}(x + 90) f === :PlatformRequestClose && return Ptr{Bool}(x + 91) + error("Unrecognized field of type `ImGuiViewport`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :ParentViewportId && return unsafe_load(_getptr(x, f)) + f === :DrawData && return unsafe_load(_getptr(x, f)) + f === :RendererUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) + f === :PlatformHandleRaw && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowCreated && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestMove && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestResize && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestClose && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiViewport}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImDrawData @@ -551,7 +700,7 @@ struct ImDrawData FramebufferScale::ImVec2 OwnerViewport::Ptr{ImGuiViewport} end -function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) +function _getptr(x::Ptr{ImDrawData}, f::Symbol) f === :Valid && return Ptr{Bool}(x + 0) f === :CmdListsCount && return Ptr{Cint}(x + 4) f === :TotalIdxCount && return Ptr{Cint}(x + 8) @@ -561,11 +710,24 @@ function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) f === :DisplaySize && return Ptr{ImVec2}(x + 40) f === :FramebufferScale && return Ptr{ImVec2}(x + 48) f === :OwnerViewport && return Ptr{Ptr{ImGuiViewport}}(x + 56) + error("Unrecognized field of type `ImDrawData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) + f === :Valid && return unsafe_load(_getptr(x, f)) + f === :CmdListsCount && return unsafe_load(_getptr(x, f)) + f === :TotalIdxCount && return unsafe_load(_getptr(x, f)) + f === :TotalVtxCount && return unsafe_load(_getptr(x, f)) + f === :CmdLists && return _getptr(x, f) + f === :DisplayPos && return _getptr(x, f) + f === :DisplaySize && return _getptr(x, f) + f === :FramebufferScale && return _getptr(x, f) + f === :OwnerViewport && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -602,6 +764,26 @@ struct ImGuiKeyData DownDurationPrev::Cfloat AnalogValue::Cfloat end +function _getptr(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return Ptr{Bool}(x + 0) + f === :DownDuration && return Ptr{Cfloat}(x + 4) + f === :DownDurationPrev && return Ptr{Cfloat}(x + 8) + f === :AnalogValue && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImGuiKeyData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return unsafe_load(_getptr(x, f)) + f === :DownDuration && return unsafe_load(_getptr(x, f)) + f === :DownDurationPrev && return unsafe_load(_getptr(x, f)) + f === :AnalogValue && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImGuiKeyData}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImU16 = Cushort @@ -715,7 +897,7 @@ function Base.getproperty(x::ImGuiIO, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiIO}, f::Symbol) f === :ConfigFlags && return Ptr{ImGuiConfigFlags}(x + 0) f === :BackendFlags && return Ptr{ImGuiBackendFlags}(x + 4) f === :DisplaySize && return Ptr{ImVec2}(x + 8) @@ -816,11 +998,115 @@ function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) f === :BackendUsingLegacyNavInputArray && return Ptr{Bool}(x + 3003) f === :InputQueueSurrogate && return Ptr{ImWchar16}(x + 3004) f === :InputQueueCharacters && return Ptr{ImVector_ImWchar}(x + 3008) + error("Unrecognized field of type `ImGuiIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) + f === :ConfigFlags && return unsafe_load(_getptr(x, f)) + f === :BackendFlags && return unsafe_load(_getptr(x, f)) + f === :DisplaySize && return _getptr(x, f) + f === :DeltaTime && return unsafe_load(_getptr(x, f)) + f === :IniSavingRate && return unsafe_load(_getptr(x, f)) + f === :IniFilename && return unsafe_load(_getptr(x, f)) + f === :LogFilename && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Fonts && return unsafe_load(_getptr(x, f)) + f === :FontGlobalScale && return unsafe_load(_getptr(x, f)) + f === :FontAllowUserScaling && return unsafe_load(_getptr(x, f)) + f === :FontDefault && return unsafe_load(_getptr(x, f)) + f === :DisplayFramebufferScale && return _getptr(x, f) + f === :ConfigDockingNoSplit && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingWithShift && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingAlwaysTabBar && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingTransparentPayload && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoAutoMerge && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoTaskBarIcon && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDecoration && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDefaultParent && return unsafe_load(_getptr(x, f)) + f === :MouseDrawCursor && return unsafe_load(_getptr(x, f)) + f === :ConfigMacOSXBehaviors && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTrickleEventQueue && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextCursorBlink && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextEnterKeepActive && return unsafe_load(_getptr(x, f)) + f === :ConfigDragClickToInputText && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsResizeFromEdges && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsMoveFromTitleBarOnly && return unsafe_load(_getptr(x, f)) + f === :ConfigMemoryCompactTimer && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickTime && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickMaxDist && return unsafe_load(_getptr(x, f)) + f === :MouseDragThreshold && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatDelay && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatRate && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIsDebuggerPresent && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueOnce && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueLoop && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIgnoreFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIniSettings && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformName && return unsafe_load(_getptr(x, f)) + f === :BackendRendererName && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformUserData && return unsafe_load(_getptr(x, f)) + f === :BackendRendererUserData && return unsafe_load(_getptr(x, f)) + f === :BackendLanguageUserData && return unsafe_load(_getptr(x, f)) + f === :GetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :SetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :ClipboardUserData && return unsafe_load(_getptr(x, f)) + f === :SetPlatformImeDataFn && return unsafe_load(_getptr(x, f)) + f === :PlatformLocaleDecimalPoint && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouse && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboard && return unsafe_load(_getptr(x, f)) + f === :WantTextInput && return unsafe_load(_getptr(x, f)) + f === :WantSetMousePos && return unsafe_load(_getptr(x, f)) + f === :WantSaveIniSettings && return unsafe_load(_getptr(x, f)) + f === :NavActive && return unsafe_load(_getptr(x, f)) + f === :NavVisible && return unsafe_load(_getptr(x, f)) + f === :Framerate && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderVertices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderIndices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderWindows && return unsafe_load(_getptr(x, f)) + f === :MetricsActiveWindows && return unsafe_load(_getptr(x, f)) + f === :MouseDelta && return _getptr(x, f) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseDown && return _getptr(x, f) + f === :MouseWheel && return unsafe_load(_getptr(x, f)) + f === :MouseWheelH && return unsafe_load(_getptr(x, f)) + f === :MouseSource && return unsafe_load(_getptr(x, f)) + f === :MouseHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :KeyCtrl && return unsafe_load(_getptr(x, f)) + f === :KeyShift && return unsafe_load(_getptr(x, f)) + f === :KeyAlt && return unsafe_load(_getptr(x, f)) + f === :KeySuper && return unsafe_load(_getptr(x, f)) + f === :KeyMods && return unsafe_load(_getptr(x, f)) + f === :KeysData && return _getptr(x, f) + f === :WantCaptureMouseUnlessPopupClose && return unsafe_load(_getptr(x, f)) + f === :MousePosPrev && return _getptr(x, f) + f === :MouseClickedPos && return _getptr(x, f) + f === :MouseClickedTime && return _getptr(x, f) + f === :MouseClicked && return _getptr(x, f) + f === :MouseDoubleClicked && return _getptr(x, f) + f === :MouseClickedCount && return _getptr(x, f) + f === :MouseClickedLastCount && return _getptr(x, f) + f === :MouseReleased && return _getptr(x, f) + f === :MouseDownOwned && return _getptr(x, f) + f === :MouseDownOwnedUnlessPopupClose && return _getptr(x, f) + f === :MouseWheelRequestAxisSwap && return unsafe_load(_getptr(x, f)) + f === :MouseCtrlLeftAsRightClick && return unsafe_load(_getptr(x, f)) + f === :MouseDownDuration && return _getptr(x, f) + f === :MouseDownDurationPrev && return _getptr(x, f) + f === :MouseDragMaxDistanceAbs && return _getptr(x, f) + f === :MouseDragMaxDistanceSqr && return _getptr(x, f) + f === :PenPressure && return unsafe_load(_getptr(x, f)) + f === :AppFocusLost && return unsafe_load(_getptr(x, f)) + f === :AppAcceptingEvents && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyKeyArrays && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyNavInputArray && return unsafe_load(_getptr(x, f)) + f === :InputQueueSurrogate && return unsafe_load(_getptr(x, f)) + f === :InputQueueCharacters && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImGuiPlatformMonitor @@ -831,18 +1117,28 @@ struct ImGuiPlatformMonitor DpiScale::Cfloat PlatformHandle::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) f === :MainPos && return Ptr{ImVec2}(x + 0) f === :MainSize && return Ptr{ImVec2}(x + 8) f === :WorkPos && return Ptr{ImVec2}(x + 16) f === :WorkSize && return Ptr{ImVec2}(x + 24) f === :DpiScale && return Ptr{Cfloat}(x + 32) f === :PlatformHandle && return Ptr{Ptr{Cvoid}}(x + 40) + error("Unrecognized field of type `ImGuiPlatformMonitor`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) + f === :MainPos && return _getptr(x, f) + f === :MainSize && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformMonitor}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -885,7 +1181,7 @@ struct ImGuiPlatformIO Monitors::ImVector_ImGuiPlatformMonitor Viewports::ImVector_ImGuiViewportPtr end -function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Platform_CreateWindow && return Ptr{Ptr{Cvoid}}(x + 0) f === :Platform_DestroyWindow && return Ptr{Ptr{Cvoid}}(x + 8) f === :Platform_ShowWindow && return Ptr{Ptr{Cvoid}}(x + 16) @@ -911,11 +1207,40 @@ function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Renderer_SwapBuffers && return Ptr{Ptr{Cvoid}}(x + 176) f === :Monitors && return Ptr{ImVector_ImGuiPlatformMonitor}(x + 184) f === :Viewports && return Ptr{ImVector_ImGuiViewportPtr}(x + 200) + error("Unrecognized field of type `ImGuiPlatformIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) + f === :Platform_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_ShowWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowMinimized && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowTitle && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowAlpha && return unsafe_load(_getptr(x, f)) + f === :Platform_UpdateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowDpiScale && return unsafe_load(_getptr(x, f)) + f === :Platform_OnChangedViewport && return unsafe_load(_getptr(x, f)) + f === :Platform_CreateVkSurface && return unsafe_load(_getptr(x, f)) + f === :Renderer_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Renderer_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Monitors && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -985,7 +1310,7 @@ struct ImGuiStyle HoverFlagsForTooltipMouse::ImGuiHoveredFlags HoverFlagsForTooltipNav::ImGuiHoveredFlags end -function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyle}, f::Symbol) f === :Alpha && return Ptr{Cfloat}(x + 0) f === :DisabledAlpha && return Ptr{Cfloat}(x + 4) f === :WindowPadding && return Ptr{ImVec2}(x + 8) @@ -1039,11 +1364,68 @@ function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) f === :HoverDelayNormal && return Ptr{Cfloat}(x + 1128) f === :HoverFlagsForTooltipMouse && return Ptr{ImGuiHoveredFlags}(x + 1132) f === :HoverFlagsForTooltipNav && return Ptr{ImGuiHoveredFlags}(x + 1136) + error("Unrecognized field of type `ImGuiStyle`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) + f === :Alpha && return unsafe_load(_getptr(x, f)) + f === :DisabledAlpha && return unsafe_load(_getptr(x, f)) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :WindowMinSize && return _getptr(x, f) + f === :WindowTitleAlign && return _getptr(x, f) + f === :WindowMenuButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ChildRounding && return unsafe_load(_getptr(x, f)) + f === :ChildBorderSize && return unsafe_load(_getptr(x, f)) + f === :PopupRounding && return unsafe_load(_getptr(x, f)) + f === :PopupBorderSize && return unsafe_load(_getptr(x, f)) + f === :FramePadding && return _getptr(x, f) + f === :FrameRounding && return unsafe_load(_getptr(x, f)) + f === :FrameBorderSize && return unsafe_load(_getptr(x, f)) + f === :ItemSpacing && return _getptr(x, f) + f === :ItemInnerSpacing && return _getptr(x, f) + f === :CellPadding && return _getptr(x, f) + f === :TouchExtraPadding && return _getptr(x, f) + f === :IndentSpacing && return unsafe_load(_getptr(x, f)) + f === :ColumnsMinSpacing && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSize && return unsafe_load(_getptr(x, f)) + f === :ScrollbarRounding && return unsafe_load(_getptr(x, f)) + f === :GrabMinSize && return unsafe_load(_getptr(x, f)) + f === :GrabRounding && return unsafe_load(_getptr(x, f)) + f === :LogSliderDeadzone && return unsafe_load(_getptr(x, f)) + f === :TabRounding && return unsafe_load(_getptr(x, f)) + f === :TabBorderSize && return unsafe_load(_getptr(x, f)) + f === :TabMinWidthForCloseButton && return unsafe_load(_getptr(x, f)) + f === :TabBarBorderSize && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersAngle && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersTextAlign && return _getptr(x, f) + f === :ColorButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ButtonTextAlign && return _getptr(x, f) + f === :SelectableTextAlign && return _getptr(x, f) + f === :SeparatorTextBorderSize && return unsafe_load(_getptr(x, f)) + f === :SeparatorTextAlign && return _getptr(x, f) + f === :SeparatorTextPadding && return _getptr(x, f) + f === :DisplayWindowPadding && return _getptr(x, f) + f === :DisplaySafeAreaPadding && return _getptr(x, f) + f === :DockingSeparatorSize && return unsafe_load(_getptr(x, f)) + f === :MouseCursorScale && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLines && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLinesUseTex && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedFill && return unsafe_load(_getptr(x, f)) + f === :CurveTessellationTol && return unsafe_load(_getptr(x, f)) + f === :CircleTessellationMaxError && return unsafe_load(_getptr(x, f)) + f === :Colors && return _getptr(x, f) + f === :HoverStationaryDelay && return unsafe_load(_getptr(x, f)) + f === :HoverDelayShort && return unsafe_load(_getptr(x, f)) + f === :HoverDelayNormal && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipMouse && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipNav && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiStyle}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -1071,7 +1453,7 @@ struct ImGuiInputEvent data::NTuple{28, UInt8} end -function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) +function _getptr(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Type && return Ptr{ImGuiInputEventType}(x + 0) f === :Source && return Ptr{ImGuiInputSource}(x + 4) f === :EventId && return Ptr{ImU32}(x + 8) @@ -1083,6 +1465,21 @@ function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Text && return Ptr{ImGuiInputEventText}(x + 12) f === :AppFocused && return Ptr{ImGuiInputEventAppFocused}(x + 12) f === :AddedByTestEngine && return Ptr{Bool}(x + 24) + error("Unrecognized field of type `ImGuiInputEvent`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) + f === :Type && return unsafe_load(_getptr(x, f)) + f === :Source && return unsafe_load(_getptr(x, f)) + f === :EventId && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseWheel && return _getptr(x, f) + f === :MouseButton && return _getptr(x, f) + f === :MouseViewport && return _getptr(x, f) + f === :Key && return _getptr(x, f) + f === :Text && return _getptr(x, f) + f === :AppFocused && return _getptr(x, f) + f === :AddedByTestEngine && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1094,7 +1491,7 @@ function Base.getproperty(x::ImGuiInputEvent, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiInputEvent}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiInputEvent @@ -1202,11 +1599,19 @@ struct ImGuiStoragePair data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) +function _getptr(x::Ptr{ImGuiStoragePair}, f::Symbol) f === :key && return Ptr{ImGuiID}(x + 0) f === :val_i && return Ptr{Cint}(x + 8) f === :val_f && return Ptr{Cfloat}(x + 8) f === :val_p && return Ptr{Ptr{Cvoid}}(x + 8) + error("Unrecognized field of type `ImGuiStoragePair`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) + f === :key && return unsafe_load(_getptr(x, f)) + f === :val_i && return unsafe_load(_getptr(x, f)) + f === :val_f && return unsafe_load(_getptr(x, f)) + f === :val_p && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1218,7 +1623,7 @@ function Base.getproperty(x::ImGuiStoragePair, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStoragePair}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStoragePair @@ -1426,7 +1831,7 @@ struct ImGuiDockNode data::NTuple{208, UInt8} end -function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) +function _getptr(x::Ptr{ImGuiDockNode}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :SharedFlags && return Ptr{ImGuiDockNodeFlags}(x + 4) f === :LocalFlags && return Ptr{ImGuiDockNodeFlags}(x + 8) @@ -1469,6 +1874,52 @@ function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) f === :WantMouseMove && return (Ptr{Bool}(x + 200), 17, 1) f === :WantHiddenTabBarUpdate && return (Ptr{Bool}(x + 200), 18, 1) f === :WantHiddenTabBarToggle && return (Ptr{Bool}(x + 200), 19, 1) + error("Unrecognized field of type `ImGuiDockNode`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :SharedFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlagsInWindows && return unsafe_load(_getptr(x, f)) + f === :MergedFlags && return unsafe_load(_getptr(x, f)) + f === :State && return unsafe_load(_getptr(x, f)) + f === :ParentNode && return unsafe_load(_getptr(x, f)) + f === :ChildNodes && return _getptr(x, f) + f === :Windows && return _getptr(x, f) + f === :TabBar && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeRef && return _getptr(x, f) + f === :SplitAxis && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :LastBgColor && return unsafe_load(_getptr(x, f)) + f === :HostWindow && return unsafe_load(_getptr(x, f)) + f === :VisibleWindow && return unsafe_load(_getptr(x, f)) + f === :CentralNode && return unsafe_load(_getptr(x, f)) + f === :OnlyNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :CountNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :LastFrameAlive && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameFocused && return unsafe_load(_getptr(x, f)) + f === :LastFocusedNodeId && return unsafe_load(_getptr(x, f)) + f === :SelectedTabId && return unsafe_load(_getptr(x, f)) + f === :WantCloseTabId && return unsafe_load(_getptr(x, f)) + f === :RefViewportId && return unsafe_load(_getptr(x, f)) + f === :AuthorityForPos && return unsafe_load(_getptr(x, f)) + f === :AuthorityForSize && return unsafe_load(_getptr(x, f)) + f === :AuthorityForViewport && return unsafe_load(_getptr(x, f)) + f === :IsVisible && return unsafe_load(_getptr(x, f)) + f === :IsFocused && return unsafe_load(_getptr(x, f)) + f === :IsBgDrawnThisFrame && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :HasWindowMenuButton && return unsafe_load(_getptr(x, f)) + f === :HasCentralNodeChild && return unsafe_load(_getptr(x, f)) + f === :WantCloseAll && return unsafe_load(_getptr(x, f)) + f === :WantLockSizeOnce && return unsafe_load(_getptr(x, f)) + f === :WantMouseMove && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarUpdate && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarToggle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1496,7 +1947,7 @@ end function Base.setproperty!(x::Ptr{ImGuiDockNode}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1521,7 +1972,7 @@ struct ImGuiWindow data::NTuple{1160, UInt8} end -function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) +function _getptr(x::Ptr{ImGuiWindow}, f::Symbol) f === :Ctx && return Ptr{Ptr{ImGuiContext}}(x + 0) f === :Name && return Ptr{Ptr{Cchar}}(x + 8) f === :ID && return Ptr{ImGuiID}(x + 16) @@ -1646,6 +2097,134 @@ function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) f === :DockId && return Ptr{ImGuiID}(x + 1136) f === :DockTabItemStatusFlags && return Ptr{ImGuiItemStatusFlags}(x + 1140) f === :DockTabItemRect && return Ptr{ImRect}(x + 1144) + error("Unrecognized field of type `ImGuiWindow`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :Name && return unsafe_load(_getptr(x, f)) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :FlagsPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ChildFlags && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :Viewport && return unsafe_load(_getptr(x, f)) + f === :ViewportId && return unsafe_load(_getptr(x, f)) + f === :ViewportPos && return _getptr(x, f) + f === :ViewportAllowPlatformMonitorExtend && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeFull && return _getptr(x, f) + f === :ContentSize && return _getptr(x, f) + f === :ContentSizeIdeal && return _getptr(x, f) + f === :ContentSizeExplicit && return _getptr(x, f) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :TitleBarHeight && return unsafe_load(_getptr(x, f)) + f === :MenuBarHeight && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX2 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY2 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeY1 && return unsafe_load(_getptr(x, f)) + f === :NameBufLen && return unsafe_load(_getptr(x, f)) + f === :MoveId && return unsafe_load(_getptr(x, f)) + f === :TabId && return unsafe_load(_getptr(x, f)) + f === :ChildId && return unsafe_load(_getptr(x, f)) + f === :PopupId && return unsafe_load(_getptr(x, f)) + f === :Scroll && return _getptr(x, f) + f === :ScrollMax && return _getptr(x, f) + f === :ScrollTarget && return _getptr(x, f) + f === :ScrollTargetCenterRatio && return _getptr(x, f) + f === :ScrollTargetEdgeSnapDist && return _getptr(x, f) + f === :ScrollbarSizes && return _getptr(x, f) + f === :ScrollbarX && return unsafe_load(_getptr(x, f)) + f === :ScrollbarY && return unsafe_load(_getptr(x, f)) + f === :ViewportOwned && return unsafe_load(_getptr(x, f)) + f === :Active && return unsafe_load(_getptr(x, f)) + f === :WasActive && return unsafe_load(_getptr(x, f)) + f === :WriteAccessed && return unsafe_load(_getptr(x, f)) + f === :Collapsed && return unsafe_load(_getptr(x, f)) + f === :WantCollapseToggle && return unsafe_load(_getptr(x, f)) + f === :SkipItems && return unsafe_load(_getptr(x, f)) + f === :SkipRefresh && return unsafe_load(_getptr(x, f)) + f === :Appearing && return unsafe_load(_getptr(x, f)) + f === :Hidden && return unsafe_load(_getptr(x, f)) + f === :IsFallbackWindow && return unsafe_load(_getptr(x, f)) + f === :IsExplicitChild && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHovered && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHeld && return unsafe_load(_getptr(x, f)) + f === :BeginCount && return unsafe_load(_getptr(x, f)) + f === :BeginCountPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinParent && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinContext && return unsafe_load(_getptr(x, f)) + f === :FocusOrder && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesX && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesY && return unsafe_load(_getptr(x, f)) + f === :AutoFitOnlyGrows && return unsafe_load(_getptr(x, f)) + f === :AutoPosLastDirection && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCanSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCannotSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesForRenderOnly && return unsafe_load(_getptr(x, f)) + f === :DisableInputsFrames && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowSizeAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowCollapsedAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowDockAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosVal && return _getptr(x, f) + f === :SetWindowPosPivot && return _getptr(x, f) + f === :IDStack && return _getptr(x, f) + f === :DC && return _getptr(x, f) + f === :OuterRectClipped && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :ParentWorkRect && return _getptr(x, f) + f === :ClipRect && return _getptr(x, f) + f === :ContentRegionRect && return _getptr(x, f) + f === :HitTestHoleSize && return _getptr(x, f) + f === :HitTestHoleOffset && return _getptr(x, f) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameJustFocused && return unsafe_load(_getptr(x, f)) + f === :LastTimeActive && return unsafe_load(_getptr(x, f)) + f === :ItemWidthDefault && return unsafe_load(_getptr(x, f)) + f === :StateStorage && return _getptr(x, f) + f === :ColumnsStorage && return _getptr(x, f) + f === :FontWindowScale && return unsafe_load(_getptr(x, f)) + f === :FontDpiScale && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :DrawList && return unsafe_load(_getptr(x, f)) + f === :DrawListInst && return _getptr(x, f) + f === :ParentWindow && return unsafe_load(_getptr(x, f)) + f === :ParentWindowInBeginStack && return unsafe_load(_getptr(x, f)) + f === :RootWindow && return unsafe_load(_getptr(x, f)) + f === :RootWindowPopupTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowDockTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowForTitleBarHighlight && return unsafe_load(_getptr(x, f)) + f === :RootWindowForNav && return unsafe_load(_getptr(x, f)) + f === :ParentWindowForFocusRoute && return unsafe_load(_getptr(x, f)) + f === :NavLastChildNavWindow && return unsafe_load(_getptr(x, f)) + f === :NavLastIds && return _getptr(x, f) + f === :NavRectRel && return _getptr(x, f) + f === :NavPreferredScoringPosRel && return _getptr(x, f) + f === :NavRootFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListIdxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListVtxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :DockIsActive && return unsafe_load(_getptr(x, f)) + f === :DockNodeIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabWantClose && return unsafe_load(_getptr(x, f)) + f === :DockOrder && return unsafe_load(_getptr(x, f)) + f === :DockStyle && return _getptr(x, f) + f === :DockNode && return unsafe_load(_getptr(x, f)) + f === :DockNodeAsHost && return unsafe_load(_getptr(x, f)) + f === :DockId && return unsafe_load(_getptr(x, f)) + f === :DockTabItemStatusFlags && return unsafe_load(_getptr(x, f)) + f === :DockTabItemRect && return _getptr(x, f) return getfield(x, f) end @@ -1673,7 +2252,7 @@ end function Base.setproperty!(x::Ptr{ImGuiWindow}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1841,10 +2420,17 @@ struct ImGuiStyleMod data::NTuple{12, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyleMod}, f::Symbol) f === :VarIdx && return Ptr{ImGuiStyleVar}(x + 0) f === :BackupInt && return Ptr{NTuple{2, Cint}}(x + 4) f === :BackupFloat && return Ptr{NTuple{2, Cfloat}}(x + 4) + error("Unrecognized field of type `ImGuiStyleMod`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) + f === :VarIdx && return unsafe_load(_getptr(x, f)) + f === :BackupInt && return _getptr(x, f) + f === :BackupFloat && return _getptr(x, f) return getfield(x, f) end @@ -1856,7 +2442,7 @@ function Base.getproperty(x::ImGuiStyleMod, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStyleMod}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStyleMod @@ -2231,7 +2817,7 @@ struct ImGuiTableColumn data::NTuple{112, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :Flags && return Ptr{ImGuiTableColumnFlags}(x + 0) f === :WidthGiven && return Ptr{Cfloat}(x + 4) f === :MinX && return Ptr{Cfloat}(x + 8) @@ -2273,6 +2859,51 @@ function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :SortDirectionsAvailCount && return (Ptr{ImU8}(x + 108), 10, 2) f === :SortDirectionsAvailMask && return (Ptr{ImU8}(x + 108), 12, 4) f === :SortDirectionsAvailList && return Ptr{ImU8}(x + 110) + error("Unrecognized field of type `ImGuiTableColumn`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :WidthGiven && return unsafe_load(_getptr(x, f)) + f === :MinX && return unsafe_load(_getptr(x, f)) + f === :MaxX && return unsafe_load(_getptr(x, f)) + f === :WidthRequest && return unsafe_load(_getptr(x, f)) + f === :WidthAuto && return unsafe_load(_getptr(x, f)) + f === :StretchWeight && return unsafe_load(_getptr(x, f)) + f === :InitStretchWeightOrWidth && return unsafe_load(_getptr(x, f)) + f === :ClipRect && return _getptr(x, f) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :WorkMinX && return unsafe_load(_getptr(x, f)) + f === :WorkMaxX && return unsafe_load(_getptr(x, f)) + f === :ItemWidth && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXFrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXUnfrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersUsed && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersIdeal && return unsafe_load(_getptr(x, f)) + f === :NameOffset && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IndexWithinEnabledSet && return unsafe_load(_getptr(x, f)) + f === :PrevEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :NextEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :DrawChannelFrozen && return unsafe_load(_getptr(x, f)) + f === :DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabledNextFrame && return unsafe_load(_getptr(x, f)) + f === :IsVisibleX && return unsafe_load(_getptr(x, f)) + f === :IsVisibleY && return unsafe_load(_getptr(x, f)) + f === :IsRequestOutput && return unsafe_load(_getptr(x, f)) + f === :IsSkipItems && return unsafe_load(_getptr(x, f)) + f === :IsPreserveWidthAuto && return unsafe_load(_getptr(x, f)) + f === :NavLayerCurrent && return unsafe_load(_getptr(x, f)) + f === :AutoFitQueue && return unsafe_load(_getptr(x, f)) + f === :CannotSkipItemsQueue && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailCount && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailMask && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailList && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2300,7 +2931,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumn}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2387,7 +3018,7 @@ struct ImGuiTable data::NTuple{592, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) +function _getptr(x::Ptr{ImGuiTable}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiTableFlags}(x + 4) f === :RawData && return Ptr{Ptr{Cvoid}}(x + 8) @@ -2500,6 +3131,122 @@ function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) f === :HasScrollbarYPrev && return Ptr{Bool}(x + 583) f === :MemoryCompacted && return Ptr{Bool}(x + 584) f === :HostSkipItems && return Ptr{Bool}(x + 585) + error("Unrecognized field of type `ImGuiTable`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :RawData && return unsafe_load(_getptr(x, f)) + f === :TempData && return unsafe_load(_getptr(x, f)) + f === :Columns && return _getptr(x, f) + f === :DisplayOrderToIndex && return _getptr(x, f) + f === :RowCellData && return _getptr(x, f) + f === :EnabledMaskByDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :EnabledMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :VisibleMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :SettingsLoadedFlags && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :ColumnsCount && return unsafe_load(_getptr(x, f)) + f === :CurrentRow && return unsafe_load(_getptr(x, f)) + f === :CurrentColumn && return unsafe_load(_getptr(x, f)) + f === :InstanceCurrent && return unsafe_load(_getptr(x, f)) + f === :InstanceInteracted && return unsafe_load(_getptr(x, f)) + f === :RowPosY1 && return unsafe_load(_getptr(x, f)) + f === :RowPosY2 && return unsafe_load(_getptr(x, f)) + f === :RowMinHeight && return unsafe_load(_getptr(x, f)) + f === :RowCellPaddingY && return unsafe_load(_getptr(x, f)) + f === :RowTextBaseline && return unsafe_load(_getptr(x, f)) + f === :RowIndentOffsetX && return unsafe_load(_getptr(x, f)) + f === :RowFlags && return unsafe_load(_getptr(x, f)) + f === :LastRowFlags && return unsafe_load(_getptr(x, f)) + f === :RowBgColorCounter && return unsafe_load(_getptr(x, f)) + f === :RowBgColor && return _getptr(x, f) + f === :BorderColorStrong && return unsafe_load(_getptr(x, f)) + f === :BorderColorLight && return unsafe_load(_getptr(x, f)) + f === :BorderX1 && return unsafe_load(_getptr(x, f)) + f === :BorderX2 && return unsafe_load(_getptr(x, f)) + f === :HostIndentX && return unsafe_load(_getptr(x, f)) + f === :MinColumnWidth && return unsafe_load(_getptr(x, f)) + f === :OuterPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX1 && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX2 && return unsafe_load(_getptr(x, f)) + f === :InnerWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsGivenWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsAutoFitWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsStretchSumWeights && return unsafe_load(_getptr(x, f)) + f === :ResizedColumnNextWidth && return unsafe_load(_getptr(x, f)) + f === :ResizeLockMinContentsX2 && return unsafe_load(_getptr(x, f)) + f === :RefScale && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersHeight && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersSlope && return unsafe_load(_getptr(x, f)) + f === :OuterRect && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :BgClipRect && return _getptr(x, f) + f === :Bg0ClipRectForDrawCmd && return _getptr(x, f) + f === :Bg2ClipRectForDrawCmd && return _getptr(x, f) + f === :HostClipRect && return _getptr(x, f) + f === :HostBackupInnerClipRect && return _getptr(x, f) + f === :OuterWindow && return unsafe_load(_getptr(x, f)) + f === :InnerWindow && return unsafe_load(_getptr(x, f)) + f === :ColumnsNames && return _getptr(x, f) + f === :DrawSplitter && return unsafe_load(_getptr(x, f)) + f === :InstanceDataFirst && return _getptr(x, f) + f === :InstanceDataExtra && return _getptr(x, f) + f === :SortSpecsSingle && return _getptr(x, f) + f === :SortSpecsMulti && return _getptr(x, f) + f === :SortSpecs && return _getptr(x, f) + f === :SortSpecsCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledFixedCount && return unsafe_load(_getptr(x, f)) + f === :DeclColumnsCount && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersCount && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBody && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBorder && return unsafe_load(_getptr(x, f)) + f === :HighlightColumnHeader && return unsafe_load(_getptr(x, f)) + f === :AutoFitSingleColumn && return unsafe_load(_getptr(x, f)) + f === :ResizedColumn && return unsafe_load(_getptr(x, f)) + f === :LastResizedColumn && return unsafe_load(_getptr(x, f)) + f === :HeldHeaderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumnDir && return unsafe_load(_getptr(x, f)) + f === :LeftMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :LeftMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :ContextPopupColumn && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsCount && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsCount && return unsafe_load(_getptr(x, f)) + f === :RowCellDataCurrent && return unsafe_load(_getptr(x, f)) + f === :DummyDrawChannel && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsLayoutLocked && return unsafe_load(_getptr(x, f)) + f === :IsInsideRow && return unsafe_load(_getptr(x, f)) + f === :IsInitializing && return unsafe_load(_getptr(x, f)) + f === :IsSortSpecsDirty && return unsafe_load(_getptr(x, f)) + f === :IsUsingHeaders && return unsafe_load(_getptr(x, f)) + f === :IsContextPopupOpen && return unsafe_load(_getptr(x, f)) + f === :DisableDefaultContextMenu && return unsafe_load(_getptr(x, f)) + f === :IsSettingsRequestLoad && return unsafe_load(_getptr(x, f)) + f === :IsSettingsDirty && return unsafe_load(_getptr(x, f)) + f === :IsDefaultDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IsResetAllRequest && return unsafe_load(_getptr(x, f)) + f === :IsResetDisplayOrderRequest && return unsafe_load(_getptr(x, f)) + f === :IsUnfrozenRows && return unsafe_load(_getptr(x, f)) + f === :IsDefaultSizingPolicy && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdAliveBeforeTable && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdInTable && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYCurr && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYPrev && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :HostSkipItems && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2527,7 +3274,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTable}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2832,12 +3579,21 @@ struct ImGuiStackLevelInfo data::NTuple{64, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) +function _getptr(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :QueryFrameCount && return Ptr{ImS8}(x + 4) f === :QuerySuccess && return Ptr{Bool}(x + 5) f === :DataType && return (Ptr{ImGuiDataType}(x + 4), 16, 8) f === :Desc && return Ptr{NTuple{57, Cchar}}(x + 7) + error("Unrecognized field of type `ImGuiStackLevelInfo`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :QueryFrameCount && return unsafe_load(_getptr(x, f)) + f === :QuerySuccess && return unsafe_load(_getptr(x, f)) + f === :DataType && return unsafe_load(_getptr(x, f)) + f === :Desc && return _getptr(x, f) return getfield(x, f) end @@ -2865,7 +3621,7 @@ end function Base.setproperty!(x::Ptr{ImGuiStackLevelInfo}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2916,7 +3672,7 @@ struct ImGuiContext data::NTuple{14184, UInt8} end -function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) +function _getptr(x::Ptr{ImGuiContext}, f::Symbol) f === :Initialized && return Ptr{Bool}(x + 0) f === :FontAtlasOwnedByContext && return Ptr{Bool}(x + 1) f === :IO && return Ptr{ImGuiIO}(x + 8) @@ -3207,6 +3963,300 @@ function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) f === :WantTextInputNextFrame && return Ptr{Cint}(x + 14100) f === :TempBuffer && return Ptr{ImVector_char}(x + 14104) f === :TempKeychordName && return Ptr{NTuple{64, Cchar}}(x + 14120) + error("Unrecognized field of type `ImGuiContext`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) + f === :Initialized && return unsafe_load(_getptr(x, f)) + f === :FontAtlasOwnedByContext && return unsafe_load(_getptr(x, f)) + f === :IO && return _getptr(x, f) + f === :PlatformIO && return _getptr(x, f) + f === :Style && return _getptr(x, f) + f === :ConfigFlagsCurrFrame && return unsafe_load(_getptr(x, f)) + f === :ConfigFlagsLastFrame && return unsafe_load(_getptr(x, f)) + f === :Font && return unsafe_load(_getptr(x, f)) + f === :FontSize && return unsafe_load(_getptr(x, f)) + f === :FontBaseSize && return unsafe_load(_getptr(x, f)) + f === :CurrentDpiScale && return unsafe_load(_getptr(x, f)) + f === :DrawListSharedData && return _getptr(x, f) + f === :Time && return unsafe_load(_getptr(x, f)) + f === :FrameCount && return unsafe_load(_getptr(x, f)) + f === :FrameCountEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountPlatformEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountRendered && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScope && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScopeWithImplicitWindow && return unsafe_load(_getptr(x, f)) + f === :WithinEndChild && return unsafe_load(_getptr(x, f)) + f === :GcCompactAll && return unsafe_load(_getptr(x, f)) + f === :TestEngineHookItems && return unsafe_load(_getptr(x, f)) + f === :TestEngine && return unsafe_load(_getptr(x, f)) + f === :InputEventsQueue && return _getptr(x, f) + f === :InputEventsTrail && return _getptr(x, f) + f === :InputEventsNextMouseSource && return unsafe_load(_getptr(x, f)) + f === :InputEventsNextEventId && return unsafe_load(_getptr(x, f)) + f === :Windows && return _getptr(x, f) + f === :WindowsFocusOrder && return _getptr(x, f) + f === :WindowsTempSortBuffer && return _getptr(x, f) + f === :CurrentWindowStack && return _getptr(x, f) + f === :WindowsById && return _getptr(x, f) + f === :WindowsActiveCount && return unsafe_load(_getptr(x, f)) + f === :WindowsHoverPadding && return _getptr(x, f) + f === :DebugBreakInWindow && return unsafe_load(_getptr(x, f)) + f === :CurrentWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindowUnderMovingWindow && return unsafe_load(_getptr(x, f)) + f === :MovingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowRefMousePos && return _getptr(x, f) + f === :WheelingWindowStartFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowScrolledFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowReleaseTimer && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowWheelRemainder && return _getptr(x, f) + f === :WheelingAxisAvg && return _getptr(x, f) + f === :DebugHookIdInfo && return unsafe_load(_getptr(x, f)) + f === :HoveredId && return unsafe_load(_getptr(x, f)) + f === :HoveredIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoveredIdTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdNotActiveTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :HoveredIdDisabled && return unsafe_load(_getptr(x, f)) + f === :ItemUnclipByLog && return unsafe_load(_getptr(x, f)) + f === :ActiveId && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsJustActivated && return unsafe_load(_getptr(x, f)) + f === :ActiveIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :ActiveIdNoClearOnFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenPressedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedThisFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdFromShortcut && return unsafe_load(_getptr(x, f)) + f === :ActiveIdMouseButton && return unsafe_load(_getptr(x, f)) + f === :ActiveIdClickOffset && return _getptr(x, f) + f === :ActiveIdWindow && return unsafe_load(_getptr(x, f)) + f === :ActiveIdSource && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameWindow && return unsafe_load(_getptr(x, f)) + f === :LastActiveId && return unsafe_load(_getptr(x, f)) + f === :LastActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeFromNoneTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyboardKeyPressTime && return unsafe_load(_getptr(x, f)) + f === :KeysMayBeCharInput && return _getptr(x, f) + f === :KeysOwnerData && return _getptr(x, f) + f === :KeysRoutingTable && return _getptr(x, f) + f === :ActiveIdUsingNavDirMask && return unsafe_load(_getptr(x, f)) + f === :ActiveIdUsingAllKeyboardKeys && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInShortcutRouting && return unsafe_load(_getptr(x, f)) + f === :CurrentFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :CurrentItemFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLocateId && return unsafe_load(_getptr(x, f)) + f === :NextItemData && return _getptr(x, f) + f === :LastItemData && return _getptr(x, f) + f === :NextWindowData && return _getptr(x, f) + f === :DebugShowGroupRects && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorIdx && return unsafe_load(_getptr(x, f)) + f === :ColorStack && return _getptr(x, f) + f === :StyleVarStack && return _getptr(x, f) + f === :FontStack && return _getptr(x, f) + f === :FocusScopeStack && return _getptr(x, f) + f === :ItemFlagsStack && return _getptr(x, f) + f === :GroupStack && return _getptr(x, f) + f === :OpenPopupStack && return _getptr(x, f) + f === :BeginPopupStack && return _getptr(x, f) + f === :NavTreeNodeStack && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) + f === :CurrentViewport && return unsafe_load(_getptr(x, f)) + f === :MouseViewport && return unsafe_load(_getptr(x, f)) + f === :MouseLastHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :PlatformLastFocusedViewportId && return unsafe_load(_getptr(x, f)) + f === :FallbackMonitor && return _getptr(x, f) + f === :PlatformMonitorsFullWorkRect && return _getptr(x, f) + f === :ViewportCreatedCount && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowsCreatedCount && return unsafe_load(_getptr(x, f)) + f === :ViewportFocusedStampCount && return unsafe_load(_getptr(x, f)) + f === :NavWindow && return unsafe_load(_getptr(x, f)) + f === :NavId && return unsafe_load(_getptr(x, f)) + f === :NavFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavActivateId && return unsafe_load(_getptr(x, f)) + f === :NavActivateDownId && return unsafe_load(_getptr(x, f)) + f === :NavActivatePressedId && return unsafe_load(_getptr(x, f)) + f === :NavActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavFocusRoute && return _getptr(x, f) + f === :NavHighlightActivatedId && return unsafe_load(_getptr(x, f)) + f === :NavHighlightActivatedTimer && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateId && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavInputSource && return unsafe_load(_getptr(x, f)) + f === :NavLayer && return unsafe_load(_getptr(x, f)) + f === :NavLastValidSelectionUserData && return unsafe_load(_getptr(x, f)) + f === :NavIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :NavMousePosDirty && return unsafe_load(_getptr(x, f)) + f === :NavDisableHighlight && return unsafe_load(_getptr(x, f)) + f === :NavDisableMouseHover && return unsafe_load(_getptr(x, f)) + f === :NavAnyRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequestFromMove && return unsafe_load(_getptr(x, f)) + f === :NavInitResult && return _getptr(x, f) + f === :NavMoveSubmitted && return unsafe_load(_getptr(x, f)) + f === :NavMoveScoringItems && return unsafe_load(_getptr(x, f)) + f === :NavMoveForwardToNextFrame && return unsafe_load(_getptr(x, f)) + f === :NavMoveFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveScrollFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavMoveDir && return unsafe_load(_getptr(x, f)) + f === :NavMoveDirForDebug && return unsafe_load(_getptr(x, f)) + f === :NavMoveClipDir && return unsafe_load(_getptr(x, f)) + f === :NavScoringRect && return _getptr(x, f) + f === :NavScoringNoClipRect && return _getptr(x, f) + f === :NavScoringDebugCount && return unsafe_load(_getptr(x, f)) + f === :NavTabbingDir && return unsafe_load(_getptr(x, f)) + f === :NavTabbingCounter && return unsafe_load(_getptr(x, f)) + f === :NavMoveResultLocal && return _getptr(x, f) + f === :NavMoveResultLocalVisible && return _getptr(x, f) + f === :NavMoveResultOther && return _getptr(x, f) + f === :NavTabbingResultFirst && return _getptr(x, f) + f === :ConfigNavWindowingKeyNext && return unsafe_load(_getptr(x, f)) + f === :ConfigNavWindowingKeyPrev && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTarget && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTargetAnim && return unsafe_load(_getptr(x, f)) + f === :NavWindowingListWindow && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTimer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingHighlightAlpha && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleLayer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleKey && return unsafe_load(_getptr(x, f)) + f === :NavWindowingAccumDeltaPos && return _getptr(x, f) + f === :NavWindowingAccumDeltaSize && return _getptr(x, f) + f === :DimBgRatio && return unsafe_load(_getptr(x, f)) + f === :DragDropActive && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinSource && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinTarget && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropMouseButton && return unsafe_load(_getptr(x, f)) + f === :DragDropPayload && return _getptr(x, f) + f === :DragDropTargetRect && return _getptr(x, f) + f === :DragDropTargetClipRect && return _getptr(x, f) + f === :DragDropTargetId && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurrRectSurface && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurr && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdPrev && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropHoldJustPressedId && return unsafe_load(_getptr(x, f)) + f === :DragDropPayloadBufHeap && return _getptr(x, f) + f === :DragDropPayloadBufLocal && return _getptr(x, f) + f === :ClipperTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :ClipperTempData && return _getptr(x, f) + f === :CurrentTable && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInTable && return unsafe_load(_getptr(x, f)) + f === :TablesTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :TablesTempData && return _getptr(x, f) + f === :Tables && return _getptr(x, f) + f === :TablesLastTimeActive && return _getptr(x, f) + f === :DrawChannelsTempMergeBuffer && return _getptr(x, f) + f === :CurrentTabBar && return unsafe_load(_getptr(x, f)) + f === :TabBars && return _getptr(x, f) + f === :CurrentTabBarStack && return _getptr(x, f) + f === :ShrinkWidthBuffer && return _getptr(x, f) + f === :HoverItemDelayId && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayClearTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :HoverWindowUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :MouseCursor && return unsafe_load(_getptr(x, f)) + f === :MouseStationaryTimer && return unsafe_load(_getptr(x, f)) + f === :MouseLastValidPos && return _getptr(x, f) + f === :InputTextState && return _getptr(x, f) + f === :InputTextDeactivatedState && return _getptr(x, f) + f === :InputTextPasswordFont && return _getptr(x, f) + f === :TempInputId && return unsafe_load(_getptr(x, f)) + f === :DataTypeZeroValue && return _getptr(x, f) + f === :BeginMenuDepth && return unsafe_load(_getptr(x, f)) + f === :BeginComboDepth && return unsafe_load(_getptr(x, f)) + f === :ColorEditOptions && return unsafe_load(_getptr(x, f)) + f === :ColorEditCurrentID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedHue && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedSat && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedColor && return unsafe_load(_getptr(x, f)) + f === :ColorPickerRef && return _getptr(x, f) + f === :ComboPreviewData && return _getptr(x, f) + f === :WindowResizeBorderExpectedRect && return _getptr(x, f) + f === :WindowResizeRelativeMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSeekMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarClickDeltaToGrabCenter && return unsafe_load(_getptr(x, f)) + f === :SliderGrabClickOffset && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :DragSpeedDefaultRatio && return unsafe_load(_getptr(x, f)) + f === :DisabledAlphaBackup && return unsafe_load(_getptr(x, f)) + f === :DisabledStackSize && return unsafe_load(_getptr(x, f)) + f === :LockMarkEdited && return unsafe_load(_getptr(x, f)) + f === :TooltipOverrideCount && return unsafe_load(_getptr(x, f)) + f === :ClipboardHandlerData && return _getptr(x, f) + f === :MenusIdSubmittedThisFrame && return _getptr(x, f) + f === :TypingSelectState && return _getptr(x, f) + f === :PlatformImeData && return _getptr(x, f) + f === :PlatformImeDataPrev && return _getptr(x, f) + f === :PlatformImeViewport && return unsafe_load(_getptr(x, f)) + f === :DockContext && return _getptr(x, f) + f === :DockNodeWindowMenuHandler && return unsafe_load(_getptr(x, f)) + f === :SettingsLoaded && return unsafe_load(_getptr(x, f)) + f === :SettingsDirtyTimer && return unsafe_load(_getptr(x, f)) + f === :SettingsIniData && return _getptr(x, f) + f === :SettingsHandlers && return _getptr(x, f) + f === :SettingsWindows && return _getptr(x, f) + f === :SettingsTables && return _getptr(x, f) + f === :Hooks && return _getptr(x, f) + f === :HookIdNext && return unsafe_load(_getptr(x, f)) + f === :LocalizationTable && return _getptr(x, f) + f === :LogEnabled && return unsafe_load(_getptr(x, f)) + f === :LogType && return unsafe_load(_getptr(x, f)) + f === :LogFile && return unsafe_load(_getptr(x, f)) + f === :LogBuffer && return _getptr(x, f) + f === :LogNextPrefix && return unsafe_load(_getptr(x, f)) + f === :LogNextSuffix && return unsafe_load(_getptr(x, f)) + f === :LogLinePosY && return unsafe_load(_getptr(x, f)) + f === :LogLineFirstItem && return unsafe_load(_getptr(x, f)) + f === :LogDepthRef && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpand && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpandDefault && return unsafe_load(_getptr(x, f)) + f === :DebugLogFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogBuf && return _getptr(x, f) + f === :DebugLogIndex && return _getptr(x, f) + f === :DebugLogAutoDisableFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogAutoDisableFrames && return unsafe_load(_getptr(x, f)) + f === :DebugLocateFrames && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInLocateId && return unsafe_load(_getptr(x, f)) + f === :DebugBreakKeyChord && return unsafe_load(_getptr(x, f)) + f === :DebugBeginReturnValueCullDepth && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerActive && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerMouseButton && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerBreakId && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorTime && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorBackup && return _getptr(x, f) + f === :DebugMetricsConfig && return _getptr(x, f) + f === :DebugIDStackTool && return _getptr(x, f) + f === :DebugAllocInfo && return _getptr(x, f) + f === :DebugHoveredDockNode && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrame && return _getptr(x, f) + f === :FramerateSecPerFrameIdx && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameCount && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameAccum && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouseNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboardNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantTextInputNextFrame && return unsafe_load(_getptr(x, f)) + f === :TempBuffer && return _getptr(x, f) + f === :TempKeychordName && return _getptr(x, f) return getfield(x, f) end @@ -3234,7 +4284,7 @@ end function Base.setproperty!(x::Ptr{ImGuiContext}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -3279,16 +4329,24 @@ struct ImGuiSizeCallbackData CurrentSize::ImVec2 DesiredSize::ImVec2 end -function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) +function _getptr(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) f === :UserData && return Ptr{Ptr{Cvoid}}(x + 0) f === :Pos && return Ptr{ImVec2}(x + 8) f === :CurrentSize && return Ptr{ImVec2}(x + 16) f === :DesiredSize && return Ptr{ImVec2}(x + 24) + error("Unrecognized field of type `ImGuiSizeCallbackData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :CurrentSize && return _getptr(x, f) + f === :DesiredSize && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiSizeCallbackData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -4381,7 +5439,7 @@ struct ImGuiTableColumnSettings data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :WidthOrWeight && return Ptr{Cfloat}(x + 0) f === :UserID && return Ptr{ImGuiID}(x + 4) f === :Index && return Ptr{ImGuiTableColumnIdx}(x + 8) @@ -4390,6 +5448,18 @@ function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :SortDirection && return (Ptr{ImU8}(x + 12), 16, 2) f === :IsEnabled && return (Ptr{ImU8}(x + 12), 18, 1) f === :IsStretch && return (Ptr{ImU8}(x + 12), 19, 1) + error("Unrecognized field of type `ImGuiTableColumnSettings`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) + f === :WidthOrWeight && return unsafe_load(_getptr(x, f)) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :Index && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsStretch && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -4417,7 +5487,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumnSettings}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) diff --git a/lib/aarch64-linux-gnu.jl b/lib/aarch64-linux-gnu.jl index 34deedc..45789fc 100644 --- a/lib/aarch64-linux-gnu.jl +++ b/lib/aarch64-linux-gnu.jl @@ -1,4 +1,4 @@ -using CEnum +using CEnum: CEnum, @cenum to_c_type(t::Type) = t to_c_type_pairs(va_list) = map(enumerate(to_c_type.(va_list))) do (ind, type) @@ -32,16 +32,24 @@ struct ImVec4 z::Cfloat w::Cfloat end -function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) +function _getptr(x::Ptr{ImVec4}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) f === :z && return Ptr{Cfloat}(x + 8) f === :w && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImVec4`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) + f === :z && return unsafe_load(_getptr(x, f)) + f === :w && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec4}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -56,7 +64,7 @@ struct ImDrawCmd UserCallback::ImDrawCallback UserCallbackData::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) +function _getptr(x::Ptr{ImDrawCmd}, f::Symbol) f === :ClipRect && return Ptr{ImVec4}(x + 0) f === :TextureId && return Ptr{ImTextureID}(x + 16) f === :VtxOffset && return Ptr{Cuint}(x + 24) @@ -64,11 +72,22 @@ function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) f === :ElemCount && return Ptr{Cuint}(x + 32) f === :UserCallback && return Ptr{ImDrawCallback}(x + 40) f === :UserCallbackData && return Ptr{Ptr{Cvoid}}(x + 48) + error("Unrecognized field of type `ImDrawCmd`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) + f === :ClipRect && return _getptr(x, f) + f === :TextureId && return unsafe_load(_getptr(x, f)) + f === :VtxOffset && return unsafe_load(_getptr(x, f)) + f === :IdxOffset && return unsafe_load(_getptr(x, f)) + f === :ElemCount && return unsafe_load(_getptr(x, f)) + f === :UserCallback && return unsafe_load(_getptr(x, f)) + f === :UserCallbackData && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawCmd}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -95,14 +114,20 @@ struct ImVec2 x::Cfloat y::Cfloat end -function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) +function _getptr(x::Ptr{ImVec2}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) + error("Unrecognized field of type `ImVec2`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec2}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -119,6 +144,24 @@ struct ImVector_ImDrawVert Capacity::Cint Data::Ptr{ImDrawVert} end +function _getptr(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return Ptr{Cint}(x + 0) + f === :Capacity && return Ptr{Cint}(x + 4) + f === :Data && return Ptr{Ptr{ImDrawVert}}(x + 8) + error("Unrecognized field of type `ImVector_ImDrawVert`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return unsafe_load(_getptr(x, f)) + f === :Capacity && return unsafe_load(_getptr(x, f)) + f === :Data && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImVector_ImDrawVert}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImDrawListFlags = Cint @@ -142,7 +185,7 @@ struct ImFontGlyph data::NTuple{40, UInt8} end -function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) +function _getptr(x::Ptr{ImFontGlyph}, f::Symbol) f === :Colored && return (Ptr{Cuint}(x + 0), 0, 1) f === :Visible && return (Ptr{Cuint}(x + 0), 1, 1) f === :Codepoint && return (Ptr{Cuint}(x + 0), 2, 30) @@ -155,6 +198,22 @@ function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) f === :V0 && return Ptr{Cfloat}(x + 28) f === :U1 && return Ptr{Cfloat}(x + 32) f === :V1 && return Ptr{Cfloat}(x + 36) + error("Unrecognized field of type `ImFontGlyph`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) + f === :Colored && return unsafe_load(_getptr(x, f)) + f === :Visible && return unsafe_load(_getptr(x, f)) + f === :Codepoint && return unsafe_load(_getptr(x, f)) + f === :AdvanceX && return unsafe_load(_getptr(x, f)) + f === :X0 && return unsafe_load(_getptr(x, f)) + f === :Y0 && return unsafe_load(_getptr(x, f)) + f === :X1 && return unsafe_load(_getptr(x, f)) + f === :Y1 && return unsafe_load(_getptr(x, f)) + f === :U0 && return unsafe_load(_getptr(x, f)) + f === :V0 && return unsafe_load(_getptr(x, f)) + f === :U1 && return unsafe_load(_getptr(x, f)) + f === :V1 && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -182,7 +241,7 @@ end function Base.setproperty!(x::Ptr{ImFontGlyph}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -270,7 +329,7 @@ function Base.getproperty(x::ImFontConfig, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) +function _getptr(x::Ptr{ImFontConfig}, f::Symbol) f === :FontData && return Ptr{Ptr{Cvoid}}(x + 0) f === :FontDataSize && return Ptr{Cint}(x + 8) f === :FontDataOwnedByAtlas && return Ptr{Bool}(x + 12) @@ -291,11 +350,35 @@ function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) f === :EllipsisChar && return Ptr{ImWchar}(x + 88) f === :Name && return Ptr{NTuple{40, Cchar}}(x + 90) f === :DstFont && return Ptr{Ptr{ImFont}}(x + 136) + error("Unrecognized field of type `ImFontConfig`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) + f === :FontData && return unsafe_load(_getptr(x, f)) + f === :FontDataSize && return unsafe_load(_getptr(x, f)) + f === :FontDataOwnedByAtlas && return unsafe_load(_getptr(x, f)) + f === :FontNo && return unsafe_load(_getptr(x, f)) + f === :SizePixels && return unsafe_load(_getptr(x, f)) + f === :OversampleH && return unsafe_load(_getptr(x, f)) + f === :OversampleV && return unsafe_load(_getptr(x, f)) + f === :PixelSnapH && return unsafe_load(_getptr(x, f)) + f === :GlyphExtraSpacing && return _getptr(x, f) + f === :GlyphOffset && return _getptr(x, f) + f === :GlyphRanges && return unsafe_load(_getptr(x, f)) + f === :GlyphMinAdvanceX && return unsafe_load(_getptr(x, f)) + f === :GlyphMaxAdvanceX && return unsafe_load(_getptr(x, f)) + f === :MergeMode && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :RasterizerMultiply && return unsafe_load(_getptr(x, f)) + f === :RasterizerDensity && return unsafe_load(_getptr(x, f)) + f === :EllipsisChar && return unsafe_load(_getptr(x, f)) + f === :Name && return _getptr(x, f) + f === :DstFont && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontConfig}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImFontConfig @@ -332,7 +415,7 @@ struct ImFontAtlas PackIdMouseCursors::Cint PackIdLines::Cint end -function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) +function _getptr(x::Ptr{ImFontAtlas}, f::Symbol) f === :Flags && return Ptr{ImFontAtlasFlags}(x + 0) f === :TexID && return Ptr{ImTextureID}(x + 8) f === :TexDesiredWidth && return Ptr{Cint}(x + 16) @@ -355,11 +438,37 @@ function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) f === :FontBuilderFlags && return Ptr{Cuint}(x + 1168) f === :PackIdMouseCursors && return Ptr{Cint}(x + 1172) f === :PackIdLines && return Ptr{Cint}(x + 1176) + error("Unrecognized field of type `ImFontAtlas`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :TexID && return unsafe_load(_getptr(x, f)) + f === :TexDesiredWidth && return unsafe_load(_getptr(x, f)) + f === :TexGlyphPadding && return unsafe_load(_getptr(x, f)) + f === :Locked && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :TexReady && return unsafe_load(_getptr(x, f)) + f === :TexPixelsUseColors && return unsafe_load(_getptr(x, f)) + f === :TexPixelsAlpha8 && return unsafe_load(_getptr(x, f)) + f === :TexPixelsRGBA32 && return unsafe_load(_getptr(x, f)) + f === :TexWidth && return unsafe_load(_getptr(x, f)) + f === :TexHeight && return unsafe_load(_getptr(x, f)) + f === :TexUvScale && return _getptr(x, f) + f === :TexUvWhitePixel && return _getptr(x, f) + f === :Fonts && return _getptr(x, f) + f === :CustomRects && return _getptr(x, f) + f === :ConfigData && return _getptr(x, f) + f === :TexUvLines && return _getptr(x, f) + f === :FontBuilderIO && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :PackIdMouseCursors && return unsafe_load(_getptr(x, f)) + f === :PackIdLines && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontAtlas}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -456,7 +565,7 @@ struct ImDrawList _FringeScale::Cfloat _OwnerName::Ptr{Cchar} end -function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) +function _getptr(x::Ptr{ImDrawList}, f::Symbol) f === :CmdBuffer && return Ptr{ImVector_ImDrawCmd}(x + 0) f === :IdxBuffer && return Ptr{ImVector_ImDrawIdx}(x + 16) f === :VtxBuffer && return Ptr{ImVector_ImDrawVert}(x + 32) @@ -472,11 +581,30 @@ function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) f === :_TextureIdStack && return Ptr{ImVector_ImTextureID}(x + 168) f === :_FringeScale && return Ptr{Cfloat}(x + 184) f === :_OwnerName && return Ptr{Ptr{Cchar}}(x + 192) + error("Unrecognized field of type `ImDrawList`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) + f === :CmdBuffer && return _getptr(x, f) + f === :IdxBuffer && return _getptr(x, f) + f === :VtxBuffer && return _getptr(x, f) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :_VtxCurrentIdx && return unsafe_load(_getptr(x, f)) + f === :_Data && return unsafe_load(_getptr(x, f)) + f === :_VtxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_IdxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_Path && return _getptr(x, f) + f === :_CmdHeader && return _getptr(x, f) + f === :_Splitter && return _getptr(x, f) + f === :_ClipRectStack && return _getptr(x, f) + f === :_TextureIdStack && return _getptr(x, f) + f === :_FringeScale && return unsafe_load(_getptr(x, f)) + f === :_OwnerName && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawList}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -515,7 +643,7 @@ function Base.getproperty(x::ImGuiViewport, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) +function _getptr(x::Ptr{ImGuiViewport}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiViewportFlags}(x + 4) f === :Pos && return Ptr{ImVec2}(x + 8) @@ -533,11 +661,32 @@ function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) f === :PlatformRequestMove && return Ptr{Bool}(x + 89) f === :PlatformRequestResize && return Ptr{Bool}(x + 90) f === :PlatformRequestClose && return Ptr{Bool}(x + 91) + error("Unrecognized field of type `ImGuiViewport`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :ParentViewportId && return unsafe_load(_getptr(x, f)) + f === :DrawData && return unsafe_load(_getptr(x, f)) + f === :RendererUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) + f === :PlatformHandleRaw && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowCreated && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestMove && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestResize && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestClose && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiViewport}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImDrawData @@ -551,7 +700,7 @@ struct ImDrawData FramebufferScale::ImVec2 OwnerViewport::Ptr{ImGuiViewport} end -function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) +function _getptr(x::Ptr{ImDrawData}, f::Symbol) f === :Valid && return Ptr{Bool}(x + 0) f === :CmdListsCount && return Ptr{Cint}(x + 4) f === :TotalIdxCount && return Ptr{Cint}(x + 8) @@ -561,11 +710,24 @@ function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) f === :DisplaySize && return Ptr{ImVec2}(x + 40) f === :FramebufferScale && return Ptr{ImVec2}(x + 48) f === :OwnerViewport && return Ptr{Ptr{ImGuiViewport}}(x + 56) + error("Unrecognized field of type `ImDrawData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) + f === :Valid && return unsafe_load(_getptr(x, f)) + f === :CmdListsCount && return unsafe_load(_getptr(x, f)) + f === :TotalIdxCount && return unsafe_load(_getptr(x, f)) + f === :TotalVtxCount && return unsafe_load(_getptr(x, f)) + f === :CmdLists && return _getptr(x, f) + f === :DisplayPos && return _getptr(x, f) + f === :DisplaySize && return _getptr(x, f) + f === :FramebufferScale && return _getptr(x, f) + f === :OwnerViewport && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -602,6 +764,26 @@ struct ImGuiKeyData DownDurationPrev::Cfloat AnalogValue::Cfloat end +function _getptr(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return Ptr{Bool}(x + 0) + f === :DownDuration && return Ptr{Cfloat}(x + 4) + f === :DownDurationPrev && return Ptr{Cfloat}(x + 8) + f === :AnalogValue && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImGuiKeyData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return unsafe_load(_getptr(x, f)) + f === :DownDuration && return unsafe_load(_getptr(x, f)) + f === :DownDurationPrev && return unsafe_load(_getptr(x, f)) + f === :AnalogValue && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImGuiKeyData}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImU16 = Cushort @@ -715,7 +897,7 @@ function Base.getproperty(x::ImGuiIO, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiIO}, f::Symbol) f === :ConfigFlags && return Ptr{ImGuiConfigFlags}(x + 0) f === :BackendFlags && return Ptr{ImGuiBackendFlags}(x + 4) f === :DisplaySize && return Ptr{ImVec2}(x + 8) @@ -816,11 +998,115 @@ function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) f === :BackendUsingLegacyNavInputArray && return Ptr{Bool}(x + 3003) f === :InputQueueSurrogate && return Ptr{ImWchar16}(x + 3004) f === :InputQueueCharacters && return Ptr{ImVector_ImWchar}(x + 3008) + error("Unrecognized field of type `ImGuiIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) + f === :ConfigFlags && return unsafe_load(_getptr(x, f)) + f === :BackendFlags && return unsafe_load(_getptr(x, f)) + f === :DisplaySize && return _getptr(x, f) + f === :DeltaTime && return unsafe_load(_getptr(x, f)) + f === :IniSavingRate && return unsafe_load(_getptr(x, f)) + f === :IniFilename && return unsafe_load(_getptr(x, f)) + f === :LogFilename && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Fonts && return unsafe_load(_getptr(x, f)) + f === :FontGlobalScale && return unsafe_load(_getptr(x, f)) + f === :FontAllowUserScaling && return unsafe_load(_getptr(x, f)) + f === :FontDefault && return unsafe_load(_getptr(x, f)) + f === :DisplayFramebufferScale && return _getptr(x, f) + f === :ConfigDockingNoSplit && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingWithShift && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingAlwaysTabBar && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingTransparentPayload && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoAutoMerge && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoTaskBarIcon && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDecoration && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDefaultParent && return unsafe_load(_getptr(x, f)) + f === :MouseDrawCursor && return unsafe_load(_getptr(x, f)) + f === :ConfigMacOSXBehaviors && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTrickleEventQueue && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextCursorBlink && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextEnterKeepActive && return unsafe_load(_getptr(x, f)) + f === :ConfigDragClickToInputText && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsResizeFromEdges && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsMoveFromTitleBarOnly && return unsafe_load(_getptr(x, f)) + f === :ConfigMemoryCompactTimer && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickTime && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickMaxDist && return unsafe_load(_getptr(x, f)) + f === :MouseDragThreshold && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatDelay && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatRate && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIsDebuggerPresent && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueOnce && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueLoop && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIgnoreFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIniSettings && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformName && return unsafe_load(_getptr(x, f)) + f === :BackendRendererName && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformUserData && return unsafe_load(_getptr(x, f)) + f === :BackendRendererUserData && return unsafe_load(_getptr(x, f)) + f === :BackendLanguageUserData && return unsafe_load(_getptr(x, f)) + f === :GetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :SetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :ClipboardUserData && return unsafe_load(_getptr(x, f)) + f === :SetPlatformImeDataFn && return unsafe_load(_getptr(x, f)) + f === :PlatformLocaleDecimalPoint && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouse && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboard && return unsafe_load(_getptr(x, f)) + f === :WantTextInput && return unsafe_load(_getptr(x, f)) + f === :WantSetMousePos && return unsafe_load(_getptr(x, f)) + f === :WantSaveIniSettings && return unsafe_load(_getptr(x, f)) + f === :NavActive && return unsafe_load(_getptr(x, f)) + f === :NavVisible && return unsafe_load(_getptr(x, f)) + f === :Framerate && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderVertices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderIndices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderWindows && return unsafe_load(_getptr(x, f)) + f === :MetricsActiveWindows && return unsafe_load(_getptr(x, f)) + f === :MouseDelta && return _getptr(x, f) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseDown && return _getptr(x, f) + f === :MouseWheel && return unsafe_load(_getptr(x, f)) + f === :MouseWheelH && return unsafe_load(_getptr(x, f)) + f === :MouseSource && return unsafe_load(_getptr(x, f)) + f === :MouseHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :KeyCtrl && return unsafe_load(_getptr(x, f)) + f === :KeyShift && return unsafe_load(_getptr(x, f)) + f === :KeyAlt && return unsafe_load(_getptr(x, f)) + f === :KeySuper && return unsafe_load(_getptr(x, f)) + f === :KeyMods && return unsafe_load(_getptr(x, f)) + f === :KeysData && return _getptr(x, f) + f === :WantCaptureMouseUnlessPopupClose && return unsafe_load(_getptr(x, f)) + f === :MousePosPrev && return _getptr(x, f) + f === :MouseClickedPos && return _getptr(x, f) + f === :MouseClickedTime && return _getptr(x, f) + f === :MouseClicked && return _getptr(x, f) + f === :MouseDoubleClicked && return _getptr(x, f) + f === :MouseClickedCount && return _getptr(x, f) + f === :MouseClickedLastCount && return _getptr(x, f) + f === :MouseReleased && return _getptr(x, f) + f === :MouseDownOwned && return _getptr(x, f) + f === :MouseDownOwnedUnlessPopupClose && return _getptr(x, f) + f === :MouseWheelRequestAxisSwap && return unsafe_load(_getptr(x, f)) + f === :MouseCtrlLeftAsRightClick && return unsafe_load(_getptr(x, f)) + f === :MouseDownDuration && return _getptr(x, f) + f === :MouseDownDurationPrev && return _getptr(x, f) + f === :MouseDragMaxDistanceAbs && return _getptr(x, f) + f === :MouseDragMaxDistanceSqr && return _getptr(x, f) + f === :PenPressure && return unsafe_load(_getptr(x, f)) + f === :AppFocusLost && return unsafe_load(_getptr(x, f)) + f === :AppAcceptingEvents && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyKeyArrays && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyNavInputArray && return unsafe_load(_getptr(x, f)) + f === :InputQueueSurrogate && return unsafe_load(_getptr(x, f)) + f === :InputQueueCharacters && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImGuiPlatformMonitor @@ -831,18 +1117,28 @@ struct ImGuiPlatformMonitor DpiScale::Cfloat PlatformHandle::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) f === :MainPos && return Ptr{ImVec2}(x + 0) f === :MainSize && return Ptr{ImVec2}(x + 8) f === :WorkPos && return Ptr{ImVec2}(x + 16) f === :WorkSize && return Ptr{ImVec2}(x + 24) f === :DpiScale && return Ptr{Cfloat}(x + 32) f === :PlatformHandle && return Ptr{Ptr{Cvoid}}(x + 40) + error("Unrecognized field of type `ImGuiPlatformMonitor`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) + f === :MainPos && return _getptr(x, f) + f === :MainSize && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformMonitor}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -885,7 +1181,7 @@ struct ImGuiPlatformIO Monitors::ImVector_ImGuiPlatformMonitor Viewports::ImVector_ImGuiViewportPtr end -function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Platform_CreateWindow && return Ptr{Ptr{Cvoid}}(x + 0) f === :Platform_DestroyWindow && return Ptr{Ptr{Cvoid}}(x + 8) f === :Platform_ShowWindow && return Ptr{Ptr{Cvoid}}(x + 16) @@ -911,11 +1207,40 @@ function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Renderer_SwapBuffers && return Ptr{Ptr{Cvoid}}(x + 176) f === :Monitors && return Ptr{ImVector_ImGuiPlatformMonitor}(x + 184) f === :Viewports && return Ptr{ImVector_ImGuiViewportPtr}(x + 200) + error("Unrecognized field of type `ImGuiPlatformIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) + f === :Platform_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_ShowWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowMinimized && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowTitle && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowAlpha && return unsafe_load(_getptr(x, f)) + f === :Platform_UpdateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowDpiScale && return unsafe_load(_getptr(x, f)) + f === :Platform_OnChangedViewport && return unsafe_load(_getptr(x, f)) + f === :Platform_CreateVkSurface && return unsafe_load(_getptr(x, f)) + f === :Renderer_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Renderer_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Monitors && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -985,7 +1310,7 @@ struct ImGuiStyle HoverFlagsForTooltipMouse::ImGuiHoveredFlags HoverFlagsForTooltipNav::ImGuiHoveredFlags end -function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyle}, f::Symbol) f === :Alpha && return Ptr{Cfloat}(x + 0) f === :DisabledAlpha && return Ptr{Cfloat}(x + 4) f === :WindowPadding && return Ptr{ImVec2}(x + 8) @@ -1039,11 +1364,68 @@ function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) f === :HoverDelayNormal && return Ptr{Cfloat}(x + 1128) f === :HoverFlagsForTooltipMouse && return Ptr{ImGuiHoveredFlags}(x + 1132) f === :HoverFlagsForTooltipNav && return Ptr{ImGuiHoveredFlags}(x + 1136) + error("Unrecognized field of type `ImGuiStyle`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) + f === :Alpha && return unsafe_load(_getptr(x, f)) + f === :DisabledAlpha && return unsafe_load(_getptr(x, f)) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :WindowMinSize && return _getptr(x, f) + f === :WindowTitleAlign && return _getptr(x, f) + f === :WindowMenuButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ChildRounding && return unsafe_load(_getptr(x, f)) + f === :ChildBorderSize && return unsafe_load(_getptr(x, f)) + f === :PopupRounding && return unsafe_load(_getptr(x, f)) + f === :PopupBorderSize && return unsafe_load(_getptr(x, f)) + f === :FramePadding && return _getptr(x, f) + f === :FrameRounding && return unsafe_load(_getptr(x, f)) + f === :FrameBorderSize && return unsafe_load(_getptr(x, f)) + f === :ItemSpacing && return _getptr(x, f) + f === :ItemInnerSpacing && return _getptr(x, f) + f === :CellPadding && return _getptr(x, f) + f === :TouchExtraPadding && return _getptr(x, f) + f === :IndentSpacing && return unsafe_load(_getptr(x, f)) + f === :ColumnsMinSpacing && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSize && return unsafe_load(_getptr(x, f)) + f === :ScrollbarRounding && return unsafe_load(_getptr(x, f)) + f === :GrabMinSize && return unsafe_load(_getptr(x, f)) + f === :GrabRounding && return unsafe_load(_getptr(x, f)) + f === :LogSliderDeadzone && return unsafe_load(_getptr(x, f)) + f === :TabRounding && return unsafe_load(_getptr(x, f)) + f === :TabBorderSize && return unsafe_load(_getptr(x, f)) + f === :TabMinWidthForCloseButton && return unsafe_load(_getptr(x, f)) + f === :TabBarBorderSize && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersAngle && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersTextAlign && return _getptr(x, f) + f === :ColorButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ButtonTextAlign && return _getptr(x, f) + f === :SelectableTextAlign && return _getptr(x, f) + f === :SeparatorTextBorderSize && return unsafe_load(_getptr(x, f)) + f === :SeparatorTextAlign && return _getptr(x, f) + f === :SeparatorTextPadding && return _getptr(x, f) + f === :DisplayWindowPadding && return _getptr(x, f) + f === :DisplaySafeAreaPadding && return _getptr(x, f) + f === :DockingSeparatorSize && return unsafe_load(_getptr(x, f)) + f === :MouseCursorScale && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLines && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLinesUseTex && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedFill && return unsafe_load(_getptr(x, f)) + f === :CurveTessellationTol && return unsafe_load(_getptr(x, f)) + f === :CircleTessellationMaxError && return unsafe_load(_getptr(x, f)) + f === :Colors && return _getptr(x, f) + f === :HoverStationaryDelay && return unsafe_load(_getptr(x, f)) + f === :HoverDelayShort && return unsafe_load(_getptr(x, f)) + f === :HoverDelayNormal && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipMouse && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipNav && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiStyle}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -1071,7 +1453,7 @@ struct ImGuiInputEvent data::NTuple{28, UInt8} end -function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) +function _getptr(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Type && return Ptr{ImGuiInputEventType}(x + 0) f === :Source && return Ptr{ImGuiInputSource}(x + 4) f === :EventId && return Ptr{ImU32}(x + 8) @@ -1083,6 +1465,21 @@ function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Text && return Ptr{ImGuiInputEventText}(x + 12) f === :AppFocused && return Ptr{ImGuiInputEventAppFocused}(x + 12) f === :AddedByTestEngine && return Ptr{Bool}(x + 24) + error("Unrecognized field of type `ImGuiInputEvent`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) + f === :Type && return unsafe_load(_getptr(x, f)) + f === :Source && return unsafe_load(_getptr(x, f)) + f === :EventId && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseWheel && return _getptr(x, f) + f === :MouseButton && return _getptr(x, f) + f === :MouseViewport && return _getptr(x, f) + f === :Key && return _getptr(x, f) + f === :Text && return _getptr(x, f) + f === :AppFocused && return _getptr(x, f) + f === :AddedByTestEngine && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1094,7 +1491,7 @@ function Base.getproperty(x::ImGuiInputEvent, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiInputEvent}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiInputEvent @@ -1202,11 +1599,19 @@ struct ImGuiStoragePair data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) +function _getptr(x::Ptr{ImGuiStoragePair}, f::Symbol) f === :key && return Ptr{ImGuiID}(x + 0) f === :val_i && return Ptr{Cint}(x + 8) f === :val_f && return Ptr{Cfloat}(x + 8) f === :val_p && return Ptr{Ptr{Cvoid}}(x + 8) + error("Unrecognized field of type `ImGuiStoragePair`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) + f === :key && return unsafe_load(_getptr(x, f)) + f === :val_i && return unsafe_load(_getptr(x, f)) + f === :val_f && return unsafe_load(_getptr(x, f)) + f === :val_p && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1218,7 +1623,7 @@ function Base.getproperty(x::ImGuiStoragePair, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStoragePair}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStoragePair @@ -1426,7 +1831,7 @@ struct ImGuiDockNode data::NTuple{208, UInt8} end -function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) +function _getptr(x::Ptr{ImGuiDockNode}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :SharedFlags && return Ptr{ImGuiDockNodeFlags}(x + 4) f === :LocalFlags && return Ptr{ImGuiDockNodeFlags}(x + 8) @@ -1469,6 +1874,52 @@ function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) f === :WantMouseMove && return (Ptr{Bool}(x + 200), 17, 1) f === :WantHiddenTabBarUpdate && return (Ptr{Bool}(x + 200), 18, 1) f === :WantHiddenTabBarToggle && return (Ptr{Bool}(x + 200), 19, 1) + error("Unrecognized field of type `ImGuiDockNode`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :SharedFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlagsInWindows && return unsafe_load(_getptr(x, f)) + f === :MergedFlags && return unsafe_load(_getptr(x, f)) + f === :State && return unsafe_load(_getptr(x, f)) + f === :ParentNode && return unsafe_load(_getptr(x, f)) + f === :ChildNodes && return _getptr(x, f) + f === :Windows && return _getptr(x, f) + f === :TabBar && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeRef && return _getptr(x, f) + f === :SplitAxis && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :LastBgColor && return unsafe_load(_getptr(x, f)) + f === :HostWindow && return unsafe_load(_getptr(x, f)) + f === :VisibleWindow && return unsafe_load(_getptr(x, f)) + f === :CentralNode && return unsafe_load(_getptr(x, f)) + f === :OnlyNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :CountNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :LastFrameAlive && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameFocused && return unsafe_load(_getptr(x, f)) + f === :LastFocusedNodeId && return unsafe_load(_getptr(x, f)) + f === :SelectedTabId && return unsafe_load(_getptr(x, f)) + f === :WantCloseTabId && return unsafe_load(_getptr(x, f)) + f === :RefViewportId && return unsafe_load(_getptr(x, f)) + f === :AuthorityForPos && return unsafe_load(_getptr(x, f)) + f === :AuthorityForSize && return unsafe_load(_getptr(x, f)) + f === :AuthorityForViewport && return unsafe_load(_getptr(x, f)) + f === :IsVisible && return unsafe_load(_getptr(x, f)) + f === :IsFocused && return unsafe_load(_getptr(x, f)) + f === :IsBgDrawnThisFrame && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :HasWindowMenuButton && return unsafe_load(_getptr(x, f)) + f === :HasCentralNodeChild && return unsafe_load(_getptr(x, f)) + f === :WantCloseAll && return unsafe_load(_getptr(x, f)) + f === :WantLockSizeOnce && return unsafe_load(_getptr(x, f)) + f === :WantMouseMove && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarUpdate && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarToggle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1496,7 +1947,7 @@ end function Base.setproperty!(x::Ptr{ImGuiDockNode}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1521,7 +1972,7 @@ struct ImGuiWindow data::NTuple{1160, UInt8} end -function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) +function _getptr(x::Ptr{ImGuiWindow}, f::Symbol) f === :Ctx && return Ptr{Ptr{ImGuiContext}}(x + 0) f === :Name && return Ptr{Ptr{Cchar}}(x + 8) f === :ID && return Ptr{ImGuiID}(x + 16) @@ -1646,6 +2097,134 @@ function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) f === :DockId && return Ptr{ImGuiID}(x + 1136) f === :DockTabItemStatusFlags && return Ptr{ImGuiItemStatusFlags}(x + 1140) f === :DockTabItemRect && return Ptr{ImRect}(x + 1144) + error("Unrecognized field of type `ImGuiWindow`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :Name && return unsafe_load(_getptr(x, f)) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :FlagsPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ChildFlags && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :Viewport && return unsafe_load(_getptr(x, f)) + f === :ViewportId && return unsafe_load(_getptr(x, f)) + f === :ViewportPos && return _getptr(x, f) + f === :ViewportAllowPlatformMonitorExtend && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeFull && return _getptr(x, f) + f === :ContentSize && return _getptr(x, f) + f === :ContentSizeIdeal && return _getptr(x, f) + f === :ContentSizeExplicit && return _getptr(x, f) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :TitleBarHeight && return unsafe_load(_getptr(x, f)) + f === :MenuBarHeight && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX2 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY2 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeY1 && return unsafe_load(_getptr(x, f)) + f === :NameBufLen && return unsafe_load(_getptr(x, f)) + f === :MoveId && return unsafe_load(_getptr(x, f)) + f === :TabId && return unsafe_load(_getptr(x, f)) + f === :ChildId && return unsafe_load(_getptr(x, f)) + f === :PopupId && return unsafe_load(_getptr(x, f)) + f === :Scroll && return _getptr(x, f) + f === :ScrollMax && return _getptr(x, f) + f === :ScrollTarget && return _getptr(x, f) + f === :ScrollTargetCenterRatio && return _getptr(x, f) + f === :ScrollTargetEdgeSnapDist && return _getptr(x, f) + f === :ScrollbarSizes && return _getptr(x, f) + f === :ScrollbarX && return unsafe_load(_getptr(x, f)) + f === :ScrollbarY && return unsafe_load(_getptr(x, f)) + f === :ViewportOwned && return unsafe_load(_getptr(x, f)) + f === :Active && return unsafe_load(_getptr(x, f)) + f === :WasActive && return unsafe_load(_getptr(x, f)) + f === :WriteAccessed && return unsafe_load(_getptr(x, f)) + f === :Collapsed && return unsafe_load(_getptr(x, f)) + f === :WantCollapseToggle && return unsafe_load(_getptr(x, f)) + f === :SkipItems && return unsafe_load(_getptr(x, f)) + f === :SkipRefresh && return unsafe_load(_getptr(x, f)) + f === :Appearing && return unsafe_load(_getptr(x, f)) + f === :Hidden && return unsafe_load(_getptr(x, f)) + f === :IsFallbackWindow && return unsafe_load(_getptr(x, f)) + f === :IsExplicitChild && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHovered && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHeld && return unsafe_load(_getptr(x, f)) + f === :BeginCount && return unsafe_load(_getptr(x, f)) + f === :BeginCountPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinParent && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinContext && return unsafe_load(_getptr(x, f)) + f === :FocusOrder && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesX && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesY && return unsafe_load(_getptr(x, f)) + f === :AutoFitOnlyGrows && return unsafe_load(_getptr(x, f)) + f === :AutoPosLastDirection && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCanSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCannotSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesForRenderOnly && return unsafe_load(_getptr(x, f)) + f === :DisableInputsFrames && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowSizeAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowCollapsedAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowDockAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosVal && return _getptr(x, f) + f === :SetWindowPosPivot && return _getptr(x, f) + f === :IDStack && return _getptr(x, f) + f === :DC && return _getptr(x, f) + f === :OuterRectClipped && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :ParentWorkRect && return _getptr(x, f) + f === :ClipRect && return _getptr(x, f) + f === :ContentRegionRect && return _getptr(x, f) + f === :HitTestHoleSize && return _getptr(x, f) + f === :HitTestHoleOffset && return _getptr(x, f) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameJustFocused && return unsafe_load(_getptr(x, f)) + f === :LastTimeActive && return unsafe_load(_getptr(x, f)) + f === :ItemWidthDefault && return unsafe_load(_getptr(x, f)) + f === :StateStorage && return _getptr(x, f) + f === :ColumnsStorage && return _getptr(x, f) + f === :FontWindowScale && return unsafe_load(_getptr(x, f)) + f === :FontDpiScale && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :DrawList && return unsafe_load(_getptr(x, f)) + f === :DrawListInst && return _getptr(x, f) + f === :ParentWindow && return unsafe_load(_getptr(x, f)) + f === :ParentWindowInBeginStack && return unsafe_load(_getptr(x, f)) + f === :RootWindow && return unsafe_load(_getptr(x, f)) + f === :RootWindowPopupTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowDockTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowForTitleBarHighlight && return unsafe_load(_getptr(x, f)) + f === :RootWindowForNav && return unsafe_load(_getptr(x, f)) + f === :ParentWindowForFocusRoute && return unsafe_load(_getptr(x, f)) + f === :NavLastChildNavWindow && return unsafe_load(_getptr(x, f)) + f === :NavLastIds && return _getptr(x, f) + f === :NavRectRel && return _getptr(x, f) + f === :NavPreferredScoringPosRel && return _getptr(x, f) + f === :NavRootFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListIdxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListVtxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :DockIsActive && return unsafe_load(_getptr(x, f)) + f === :DockNodeIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabWantClose && return unsafe_load(_getptr(x, f)) + f === :DockOrder && return unsafe_load(_getptr(x, f)) + f === :DockStyle && return _getptr(x, f) + f === :DockNode && return unsafe_load(_getptr(x, f)) + f === :DockNodeAsHost && return unsafe_load(_getptr(x, f)) + f === :DockId && return unsafe_load(_getptr(x, f)) + f === :DockTabItemStatusFlags && return unsafe_load(_getptr(x, f)) + f === :DockTabItemRect && return _getptr(x, f) return getfield(x, f) end @@ -1673,7 +2252,7 @@ end function Base.setproperty!(x::Ptr{ImGuiWindow}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1841,10 +2420,17 @@ struct ImGuiStyleMod data::NTuple{12, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyleMod}, f::Symbol) f === :VarIdx && return Ptr{ImGuiStyleVar}(x + 0) f === :BackupInt && return Ptr{NTuple{2, Cint}}(x + 4) f === :BackupFloat && return Ptr{NTuple{2, Cfloat}}(x + 4) + error("Unrecognized field of type `ImGuiStyleMod`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) + f === :VarIdx && return unsafe_load(_getptr(x, f)) + f === :BackupInt && return _getptr(x, f) + f === :BackupFloat && return _getptr(x, f) return getfield(x, f) end @@ -1856,7 +2442,7 @@ function Base.getproperty(x::ImGuiStyleMod, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStyleMod}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStyleMod @@ -2231,7 +2817,7 @@ struct ImGuiTableColumn data::NTuple{112, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :Flags && return Ptr{ImGuiTableColumnFlags}(x + 0) f === :WidthGiven && return Ptr{Cfloat}(x + 4) f === :MinX && return Ptr{Cfloat}(x + 8) @@ -2273,6 +2859,51 @@ function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :SortDirectionsAvailCount && return (Ptr{ImU8}(x + 108), 10, 2) f === :SortDirectionsAvailMask && return (Ptr{ImU8}(x + 108), 12, 4) f === :SortDirectionsAvailList && return Ptr{ImU8}(x + 110) + error("Unrecognized field of type `ImGuiTableColumn`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :WidthGiven && return unsafe_load(_getptr(x, f)) + f === :MinX && return unsafe_load(_getptr(x, f)) + f === :MaxX && return unsafe_load(_getptr(x, f)) + f === :WidthRequest && return unsafe_load(_getptr(x, f)) + f === :WidthAuto && return unsafe_load(_getptr(x, f)) + f === :StretchWeight && return unsafe_load(_getptr(x, f)) + f === :InitStretchWeightOrWidth && return unsafe_load(_getptr(x, f)) + f === :ClipRect && return _getptr(x, f) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :WorkMinX && return unsafe_load(_getptr(x, f)) + f === :WorkMaxX && return unsafe_load(_getptr(x, f)) + f === :ItemWidth && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXFrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXUnfrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersUsed && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersIdeal && return unsafe_load(_getptr(x, f)) + f === :NameOffset && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IndexWithinEnabledSet && return unsafe_load(_getptr(x, f)) + f === :PrevEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :NextEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :DrawChannelFrozen && return unsafe_load(_getptr(x, f)) + f === :DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabledNextFrame && return unsafe_load(_getptr(x, f)) + f === :IsVisibleX && return unsafe_load(_getptr(x, f)) + f === :IsVisibleY && return unsafe_load(_getptr(x, f)) + f === :IsRequestOutput && return unsafe_load(_getptr(x, f)) + f === :IsSkipItems && return unsafe_load(_getptr(x, f)) + f === :IsPreserveWidthAuto && return unsafe_load(_getptr(x, f)) + f === :NavLayerCurrent && return unsafe_load(_getptr(x, f)) + f === :AutoFitQueue && return unsafe_load(_getptr(x, f)) + f === :CannotSkipItemsQueue && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailCount && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailMask && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailList && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2300,7 +2931,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumn}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2387,7 +3018,7 @@ struct ImGuiTable data::NTuple{592, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) +function _getptr(x::Ptr{ImGuiTable}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiTableFlags}(x + 4) f === :RawData && return Ptr{Ptr{Cvoid}}(x + 8) @@ -2500,6 +3131,122 @@ function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) f === :HasScrollbarYPrev && return Ptr{Bool}(x + 583) f === :MemoryCompacted && return Ptr{Bool}(x + 584) f === :HostSkipItems && return Ptr{Bool}(x + 585) + error("Unrecognized field of type `ImGuiTable`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :RawData && return unsafe_load(_getptr(x, f)) + f === :TempData && return unsafe_load(_getptr(x, f)) + f === :Columns && return _getptr(x, f) + f === :DisplayOrderToIndex && return _getptr(x, f) + f === :RowCellData && return _getptr(x, f) + f === :EnabledMaskByDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :EnabledMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :VisibleMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :SettingsLoadedFlags && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :ColumnsCount && return unsafe_load(_getptr(x, f)) + f === :CurrentRow && return unsafe_load(_getptr(x, f)) + f === :CurrentColumn && return unsafe_load(_getptr(x, f)) + f === :InstanceCurrent && return unsafe_load(_getptr(x, f)) + f === :InstanceInteracted && return unsafe_load(_getptr(x, f)) + f === :RowPosY1 && return unsafe_load(_getptr(x, f)) + f === :RowPosY2 && return unsafe_load(_getptr(x, f)) + f === :RowMinHeight && return unsafe_load(_getptr(x, f)) + f === :RowCellPaddingY && return unsafe_load(_getptr(x, f)) + f === :RowTextBaseline && return unsafe_load(_getptr(x, f)) + f === :RowIndentOffsetX && return unsafe_load(_getptr(x, f)) + f === :RowFlags && return unsafe_load(_getptr(x, f)) + f === :LastRowFlags && return unsafe_load(_getptr(x, f)) + f === :RowBgColorCounter && return unsafe_load(_getptr(x, f)) + f === :RowBgColor && return _getptr(x, f) + f === :BorderColorStrong && return unsafe_load(_getptr(x, f)) + f === :BorderColorLight && return unsafe_load(_getptr(x, f)) + f === :BorderX1 && return unsafe_load(_getptr(x, f)) + f === :BorderX2 && return unsafe_load(_getptr(x, f)) + f === :HostIndentX && return unsafe_load(_getptr(x, f)) + f === :MinColumnWidth && return unsafe_load(_getptr(x, f)) + f === :OuterPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX1 && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX2 && return unsafe_load(_getptr(x, f)) + f === :InnerWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsGivenWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsAutoFitWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsStretchSumWeights && return unsafe_load(_getptr(x, f)) + f === :ResizedColumnNextWidth && return unsafe_load(_getptr(x, f)) + f === :ResizeLockMinContentsX2 && return unsafe_load(_getptr(x, f)) + f === :RefScale && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersHeight && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersSlope && return unsafe_load(_getptr(x, f)) + f === :OuterRect && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :BgClipRect && return _getptr(x, f) + f === :Bg0ClipRectForDrawCmd && return _getptr(x, f) + f === :Bg2ClipRectForDrawCmd && return _getptr(x, f) + f === :HostClipRect && return _getptr(x, f) + f === :HostBackupInnerClipRect && return _getptr(x, f) + f === :OuterWindow && return unsafe_load(_getptr(x, f)) + f === :InnerWindow && return unsafe_load(_getptr(x, f)) + f === :ColumnsNames && return _getptr(x, f) + f === :DrawSplitter && return unsafe_load(_getptr(x, f)) + f === :InstanceDataFirst && return _getptr(x, f) + f === :InstanceDataExtra && return _getptr(x, f) + f === :SortSpecsSingle && return _getptr(x, f) + f === :SortSpecsMulti && return _getptr(x, f) + f === :SortSpecs && return _getptr(x, f) + f === :SortSpecsCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledFixedCount && return unsafe_load(_getptr(x, f)) + f === :DeclColumnsCount && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersCount && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBody && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBorder && return unsafe_load(_getptr(x, f)) + f === :HighlightColumnHeader && return unsafe_load(_getptr(x, f)) + f === :AutoFitSingleColumn && return unsafe_load(_getptr(x, f)) + f === :ResizedColumn && return unsafe_load(_getptr(x, f)) + f === :LastResizedColumn && return unsafe_load(_getptr(x, f)) + f === :HeldHeaderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumnDir && return unsafe_load(_getptr(x, f)) + f === :LeftMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :LeftMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :ContextPopupColumn && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsCount && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsCount && return unsafe_load(_getptr(x, f)) + f === :RowCellDataCurrent && return unsafe_load(_getptr(x, f)) + f === :DummyDrawChannel && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsLayoutLocked && return unsafe_load(_getptr(x, f)) + f === :IsInsideRow && return unsafe_load(_getptr(x, f)) + f === :IsInitializing && return unsafe_load(_getptr(x, f)) + f === :IsSortSpecsDirty && return unsafe_load(_getptr(x, f)) + f === :IsUsingHeaders && return unsafe_load(_getptr(x, f)) + f === :IsContextPopupOpen && return unsafe_load(_getptr(x, f)) + f === :DisableDefaultContextMenu && return unsafe_load(_getptr(x, f)) + f === :IsSettingsRequestLoad && return unsafe_load(_getptr(x, f)) + f === :IsSettingsDirty && return unsafe_load(_getptr(x, f)) + f === :IsDefaultDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IsResetAllRequest && return unsafe_load(_getptr(x, f)) + f === :IsResetDisplayOrderRequest && return unsafe_load(_getptr(x, f)) + f === :IsUnfrozenRows && return unsafe_load(_getptr(x, f)) + f === :IsDefaultSizingPolicy && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdAliveBeforeTable && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdInTable && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYCurr && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYPrev && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :HostSkipItems && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2527,7 +3274,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTable}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2832,12 +3579,21 @@ struct ImGuiStackLevelInfo data::NTuple{64, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) +function _getptr(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :QueryFrameCount && return Ptr{ImS8}(x + 4) f === :QuerySuccess && return Ptr{Bool}(x + 5) f === :DataType && return (Ptr{ImGuiDataType}(x + 4), 16, 8) f === :Desc && return Ptr{NTuple{57, Cchar}}(x + 7) + error("Unrecognized field of type `ImGuiStackLevelInfo`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :QueryFrameCount && return unsafe_load(_getptr(x, f)) + f === :QuerySuccess && return unsafe_load(_getptr(x, f)) + f === :DataType && return unsafe_load(_getptr(x, f)) + f === :Desc && return _getptr(x, f) return getfield(x, f) end @@ -2865,7 +3621,7 @@ end function Base.setproperty!(x::Ptr{ImGuiStackLevelInfo}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2916,7 +3672,7 @@ struct ImGuiContext data::NTuple{14184, UInt8} end -function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) +function _getptr(x::Ptr{ImGuiContext}, f::Symbol) f === :Initialized && return Ptr{Bool}(x + 0) f === :FontAtlasOwnedByContext && return Ptr{Bool}(x + 1) f === :IO && return Ptr{ImGuiIO}(x + 8) @@ -3207,6 +3963,300 @@ function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) f === :WantTextInputNextFrame && return Ptr{Cint}(x + 14100) f === :TempBuffer && return Ptr{ImVector_char}(x + 14104) f === :TempKeychordName && return Ptr{NTuple{64, Cchar}}(x + 14120) + error("Unrecognized field of type `ImGuiContext`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) + f === :Initialized && return unsafe_load(_getptr(x, f)) + f === :FontAtlasOwnedByContext && return unsafe_load(_getptr(x, f)) + f === :IO && return _getptr(x, f) + f === :PlatformIO && return _getptr(x, f) + f === :Style && return _getptr(x, f) + f === :ConfigFlagsCurrFrame && return unsafe_load(_getptr(x, f)) + f === :ConfigFlagsLastFrame && return unsafe_load(_getptr(x, f)) + f === :Font && return unsafe_load(_getptr(x, f)) + f === :FontSize && return unsafe_load(_getptr(x, f)) + f === :FontBaseSize && return unsafe_load(_getptr(x, f)) + f === :CurrentDpiScale && return unsafe_load(_getptr(x, f)) + f === :DrawListSharedData && return _getptr(x, f) + f === :Time && return unsafe_load(_getptr(x, f)) + f === :FrameCount && return unsafe_load(_getptr(x, f)) + f === :FrameCountEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountPlatformEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountRendered && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScope && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScopeWithImplicitWindow && return unsafe_load(_getptr(x, f)) + f === :WithinEndChild && return unsafe_load(_getptr(x, f)) + f === :GcCompactAll && return unsafe_load(_getptr(x, f)) + f === :TestEngineHookItems && return unsafe_load(_getptr(x, f)) + f === :TestEngine && return unsafe_load(_getptr(x, f)) + f === :InputEventsQueue && return _getptr(x, f) + f === :InputEventsTrail && return _getptr(x, f) + f === :InputEventsNextMouseSource && return unsafe_load(_getptr(x, f)) + f === :InputEventsNextEventId && return unsafe_load(_getptr(x, f)) + f === :Windows && return _getptr(x, f) + f === :WindowsFocusOrder && return _getptr(x, f) + f === :WindowsTempSortBuffer && return _getptr(x, f) + f === :CurrentWindowStack && return _getptr(x, f) + f === :WindowsById && return _getptr(x, f) + f === :WindowsActiveCount && return unsafe_load(_getptr(x, f)) + f === :WindowsHoverPadding && return _getptr(x, f) + f === :DebugBreakInWindow && return unsafe_load(_getptr(x, f)) + f === :CurrentWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindowUnderMovingWindow && return unsafe_load(_getptr(x, f)) + f === :MovingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowRefMousePos && return _getptr(x, f) + f === :WheelingWindowStartFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowScrolledFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowReleaseTimer && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowWheelRemainder && return _getptr(x, f) + f === :WheelingAxisAvg && return _getptr(x, f) + f === :DebugHookIdInfo && return unsafe_load(_getptr(x, f)) + f === :HoveredId && return unsafe_load(_getptr(x, f)) + f === :HoveredIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoveredIdTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdNotActiveTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :HoveredIdDisabled && return unsafe_load(_getptr(x, f)) + f === :ItemUnclipByLog && return unsafe_load(_getptr(x, f)) + f === :ActiveId && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsJustActivated && return unsafe_load(_getptr(x, f)) + f === :ActiveIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :ActiveIdNoClearOnFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenPressedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedThisFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdFromShortcut && return unsafe_load(_getptr(x, f)) + f === :ActiveIdMouseButton && return unsafe_load(_getptr(x, f)) + f === :ActiveIdClickOffset && return _getptr(x, f) + f === :ActiveIdWindow && return unsafe_load(_getptr(x, f)) + f === :ActiveIdSource && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameWindow && return unsafe_load(_getptr(x, f)) + f === :LastActiveId && return unsafe_load(_getptr(x, f)) + f === :LastActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeFromNoneTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyboardKeyPressTime && return unsafe_load(_getptr(x, f)) + f === :KeysMayBeCharInput && return _getptr(x, f) + f === :KeysOwnerData && return _getptr(x, f) + f === :KeysRoutingTable && return _getptr(x, f) + f === :ActiveIdUsingNavDirMask && return unsafe_load(_getptr(x, f)) + f === :ActiveIdUsingAllKeyboardKeys && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInShortcutRouting && return unsafe_load(_getptr(x, f)) + f === :CurrentFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :CurrentItemFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLocateId && return unsafe_load(_getptr(x, f)) + f === :NextItemData && return _getptr(x, f) + f === :LastItemData && return _getptr(x, f) + f === :NextWindowData && return _getptr(x, f) + f === :DebugShowGroupRects && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorIdx && return unsafe_load(_getptr(x, f)) + f === :ColorStack && return _getptr(x, f) + f === :StyleVarStack && return _getptr(x, f) + f === :FontStack && return _getptr(x, f) + f === :FocusScopeStack && return _getptr(x, f) + f === :ItemFlagsStack && return _getptr(x, f) + f === :GroupStack && return _getptr(x, f) + f === :OpenPopupStack && return _getptr(x, f) + f === :BeginPopupStack && return _getptr(x, f) + f === :NavTreeNodeStack && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) + f === :CurrentViewport && return unsafe_load(_getptr(x, f)) + f === :MouseViewport && return unsafe_load(_getptr(x, f)) + f === :MouseLastHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :PlatformLastFocusedViewportId && return unsafe_load(_getptr(x, f)) + f === :FallbackMonitor && return _getptr(x, f) + f === :PlatformMonitorsFullWorkRect && return _getptr(x, f) + f === :ViewportCreatedCount && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowsCreatedCount && return unsafe_load(_getptr(x, f)) + f === :ViewportFocusedStampCount && return unsafe_load(_getptr(x, f)) + f === :NavWindow && return unsafe_load(_getptr(x, f)) + f === :NavId && return unsafe_load(_getptr(x, f)) + f === :NavFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavActivateId && return unsafe_load(_getptr(x, f)) + f === :NavActivateDownId && return unsafe_load(_getptr(x, f)) + f === :NavActivatePressedId && return unsafe_load(_getptr(x, f)) + f === :NavActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavFocusRoute && return _getptr(x, f) + f === :NavHighlightActivatedId && return unsafe_load(_getptr(x, f)) + f === :NavHighlightActivatedTimer && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateId && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavInputSource && return unsafe_load(_getptr(x, f)) + f === :NavLayer && return unsafe_load(_getptr(x, f)) + f === :NavLastValidSelectionUserData && return unsafe_load(_getptr(x, f)) + f === :NavIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :NavMousePosDirty && return unsafe_load(_getptr(x, f)) + f === :NavDisableHighlight && return unsafe_load(_getptr(x, f)) + f === :NavDisableMouseHover && return unsafe_load(_getptr(x, f)) + f === :NavAnyRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequestFromMove && return unsafe_load(_getptr(x, f)) + f === :NavInitResult && return _getptr(x, f) + f === :NavMoveSubmitted && return unsafe_load(_getptr(x, f)) + f === :NavMoveScoringItems && return unsafe_load(_getptr(x, f)) + f === :NavMoveForwardToNextFrame && return unsafe_load(_getptr(x, f)) + f === :NavMoveFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveScrollFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavMoveDir && return unsafe_load(_getptr(x, f)) + f === :NavMoveDirForDebug && return unsafe_load(_getptr(x, f)) + f === :NavMoveClipDir && return unsafe_load(_getptr(x, f)) + f === :NavScoringRect && return _getptr(x, f) + f === :NavScoringNoClipRect && return _getptr(x, f) + f === :NavScoringDebugCount && return unsafe_load(_getptr(x, f)) + f === :NavTabbingDir && return unsafe_load(_getptr(x, f)) + f === :NavTabbingCounter && return unsafe_load(_getptr(x, f)) + f === :NavMoveResultLocal && return _getptr(x, f) + f === :NavMoveResultLocalVisible && return _getptr(x, f) + f === :NavMoveResultOther && return _getptr(x, f) + f === :NavTabbingResultFirst && return _getptr(x, f) + f === :ConfigNavWindowingKeyNext && return unsafe_load(_getptr(x, f)) + f === :ConfigNavWindowingKeyPrev && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTarget && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTargetAnim && return unsafe_load(_getptr(x, f)) + f === :NavWindowingListWindow && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTimer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingHighlightAlpha && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleLayer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleKey && return unsafe_load(_getptr(x, f)) + f === :NavWindowingAccumDeltaPos && return _getptr(x, f) + f === :NavWindowingAccumDeltaSize && return _getptr(x, f) + f === :DimBgRatio && return unsafe_load(_getptr(x, f)) + f === :DragDropActive && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinSource && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinTarget && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropMouseButton && return unsafe_load(_getptr(x, f)) + f === :DragDropPayload && return _getptr(x, f) + f === :DragDropTargetRect && return _getptr(x, f) + f === :DragDropTargetClipRect && return _getptr(x, f) + f === :DragDropTargetId && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurrRectSurface && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurr && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdPrev && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropHoldJustPressedId && return unsafe_load(_getptr(x, f)) + f === :DragDropPayloadBufHeap && return _getptr(x, f) + f === :DragDropPayloadBufLocal && return _getptr(x, f) + f === :ClipperTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :ClipperTempData && return _getptr(x, f) + f === :CurrentTable && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInTable && return unsafe_load(_getptr(x, f)) + f === :TablesTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :TablesTempData && return _getptr(x, f) + f === :Tables && return _getptr(x, f) + f === :TablesLastTimeActive && return _getptr(x, f) + f === :DrawChannelsTempMergeBuffer && return _getptr(x, f) + f === :CurrentTabBar && return unsafe_load(_getptr(x, f)) + f === :TabBars && return _getptr(x, f) + f === :CurrentTabBarStack && return _getptr(x, f) + f === :ShrinkWidthBuffer && return _getptr(x, f) + f === :HoverItemDelayId && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayClearTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :HoverWindowUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :MouseCursor && return unsafe_load(_getptr(x, f)) + f === :MouseStationaryTimer && return unsafe_load(_getptr(x, f)) + f === :MouseLastValidPos && return _getptr(x, f) + f === :InputTextState && return _getptr(x, f) + f === :InputTextDeactivatedState && return _getptr(x, f) + f === :InputTextPasswordFont && return _getptr(x, f) + f === :TempInputId && return unsafe_load(_getptr(x, f)) + f === :DataTypeZeroValue && return _getptr(x, f) + f === :BeginMenuDepth && return unsafe_load(_getptr(x, f)) + f === :BeginComboDepth && return unsafe_load(_getptr(x, f)) + f === :ColorEditOptions && return unsafe_load(_getptr(x, f)) + f === :ColorEditCurrentID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedHue && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedSat && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedColor && return unsafe_load(_getptr(x, f)) + f === :ColorPickerRef && return _getptr(x, f) + f === :ComboPreviewData && return _getptr(x, f) + f === :WindowResizeBorderExpectedRect && return _getptr(x, f) + f === :WindowResizeRelativeMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSeekMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarClickDeltaToGrabCenter && return unsafe_load(_getptr(x, f)) + f === :SliderGrabClickOffset && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :DragSpeedDefaultRatio && return unsafe_load(_getptr(x, f)) + f === :DisabledAlphaBackup && return unsafe_load(_getptr(x, f)) + f === :DisabledStackSize && return unsafe_load(_getptr(x, f)) + f === :LockMarkEdited && return unsafe_load(_getptr(x, f)) + f === :TooltipOverrideCount && return unsafe_load(_getptr(x, f)) + f === :ClipboardHandlerData && return _getptr(x, f) + f === :MenusIdSubmittedThisFrame && return _getptr(x, f) + f === :TypingSelectState && return _getptr(x, f) + f === :PlatformImeData && return _getptr(x, f) + f === :PlatformImeDataPrev && return _getptr(x, f) + f === :PlatformImeViewport && return unsafe_load(_getptr(x, f)) + f === :DockContext && return _getptr(x, f) + f === :DockNodeWindowMenuHandler && return unsafe_load(_getptr(x, f)) + f === :SettingsLoaded && return unsafe_load(_getptr(x, f)) + f === :SettingsDirtyTimer && return unsafe_load(_getptr(x, f)) + f === :SettingsIniData && return _getptr(x, f) + f === :SettingsHandlers && return _getptr(x, f) + f === :SettingsWindows && return _getptr(x, f) + f === :SettingsTables && return _getptr(x, f) + f === :Hooks && return _getptr(x, f) + f === :HookIdNext && return unsafe_load(_getptr(x, f)) + f === :LocalizationTable && return _getptr(x, f) + f === :LogEnabled && return unsafe_load(_getptr(x, f)) + f === :LogType && return unsafe_load(_getptr(x, f)) + f === :LogFile && return unsafe_load(_getptr(x, f)) + f === :LogBuffer && return _getptr(x, f) + f === :LogNextPrefix && return unsafe_load(_getptr(x, f)) + f === :LogNextSuffix && return unsafe_load(_getptr(x, f)) + f === :LogLinePosY && return unsafe_load(_getptr(x, f)) + f === :LogLineFirstItem && return unsafe_load(_getptr(x, f)) + f === :LogDepthRef && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpand && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpandDefault && return unsafe_load(_getptr(x, f)) + f === :DebugLogFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogBuf && return _getptr(x, f) + f === :DebugLogIndex && return _getptr(x, f) + f === :DebugLogAutoDisableFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogAutoDisableFrames && return unsafe_load(_getptr(x, f)) + f === :DebugLocateFrames && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInLocateId && return unsafe_load(_getptr(x, f)) + f === :DebugBreakKeyChord && return unsafe_load(_getptr(x, f)) + f === :DebugBeginReturnValueCullDepth && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerActive && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerMouseButton && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerBreakId && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorTime && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorBackup && return _getptr(x, f) + f === :DebugMetricsConfig && return _getptr(x, f) + f === :DebugIDStackTool && return _getptr(x, f) + f === :DebugAllocInfo && return _getptr(x, f) + f === :DebugHoveredDockNode && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrame && return _getptr(x, f) + f === :FramerateSecPerFrameIdx && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameCount && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameAccum && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouseNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboardNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantTextInputNextFrame && return unsafe_load(_getptr(x, f)) + f === :TempBuffer && return _getptr(x, f) + f === :TempKeychordName && return _getptr(x, f) return getfield(x, f) end @@ -3234,7 +4284,7 @@ end function Base.setproperty!(x::Ptr{ImGuiContext}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -3279,16 +4329,24 @@ struct ImGuiSizeCallbackData CurrentSize::ImVec2 DesiredSize::ImVec2 end -function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) +function _getptr(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) f === :UserData && return Ptr{Ptr{Cvoid}}(x + 0) f === :Pos && return Ptr{ImVec2}(x + 8) f === :CurrentSize && return Ptr{ImVec2}(x + 16) f === :DesiredSize && return Ptr{ImVec2}(x + 24) + error("Unrecognized field of type `ImGuiSizeCallbackData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :CurrentSize && return _getptr(x, f) + f === :DesiredSize && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiSizeCallbackData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -4381,7 +5439,7 @@ struct ImGuiTableColumnSettings data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :WidthOrWeight && return Ptr{Cfloat}(x + 0) f === :UserID && return Ptr{ImGuiID}(x + 4) f === :Index && return Ptr{ImGuiTableColumnIdx}(x + 8) @@ -4390,6 +5448,18 @@ function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :SortDirection && return (Ptr{ImU8}(x + 12), 16, 2) f === :IsEnabled && return (Ptr{ImU8}(x + 12), 18, 1) f === :IsStretch && return (Ptr{ImU8}(x + 12), 19, 1) + error("Unrecognized field of type `ImGuiTableColumnSettings`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) + f === :WidthOrWeight && return unsafe_load(_getptr(x, f)) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :Index && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsStretch && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -4417,7 +5487,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumnSettings}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) diff --git a/lib/aarch64-linux-musl.jl b/lib/aarch64-linux-musl.jl index e03b7c5..dd5f2cb 100644 --- a/lib/aarch64-linux-musl.jl +++ b/lib/aarch64-linux-musl.jl @@ -1,4 +1,4 @@ -using CEnum +using CEnum: CEnum, @cenum to_c_type(t::Type) = t to_c_type_pairs(va_list) = map(enumerate(to_c_type.(va_list))) do (ind, type) @@ -30,16 +30,24 @@ struct ImVec4 z::Cfloat w::Cfloat end -function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) +function _getptr(x::Ptr{ImVec4}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) f === :z && return Ptr{Cfloat}(x + 8) f === :w && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImVec4`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) + f === :z && return unsafe_load(_getptr(x, f)) + f === :w && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec4}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -54,7 +62,7 @@ struct ImDrawCmd UserCallback::ImDrawCallback UserCallbackData::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) +function _getptr(x::Ptr{ImDrawCmd}, f::Symbol) f === :ClipRect && return Ptr{ImVec4}(x + 0) f === :TextureId && return Ptr{ImTextureID}(x + 16) f === :VtxOffset && return Ptr{Cuint}(x + 24) @@ -62,11 +70,22 @@ function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) f === :ElemCount && return Ptr{Cuint}(x + 32) f === :UserCallback && return Ptr{ImDrawCallback}(x + 40) f === :UserCallbackData && return Ptr{Ptr{Cvoid}}(x + 48) + error("Unrecognized field of type `ImDrawCmd`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) + f === :ClipRect && return _getptr(x, f) + f === :TextureId && return unsafe_load(_getptr(x, f)) + f === :VtxOffset && return unsafe_load(_getptr(x, f)) + f === :IdxOffset && return unsafe_load(_getptr(x, f)) + f === :ElemCount && return unsafe_load(_getptr(x, f)) + f === :UserCallback && return unsafe_load(_getptr(x, f)) + f === :UserCallbackData && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawCmd}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -93,14 +112,20 @@ struct ImVec2 x::Cfloat y::Cfloat end -function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) +function _getptr(x::Ptr{ImVec2}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) + error("Unrecognized field of type `ImVec2`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec2}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -117,6 +142,24 @@ struct ImVector_ImDrawVert Capacity::Cint Data::Ptr{ImDrawVert} end +function _getptr(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return Ptr{Cint}(x + 0) + f === :Capacity && return Ptr{Cint}(x + 4) + f === :Data && return Ptr{Ptr{ImDrawVert}}(x + 8) + error("Unrecognized field of type `ImVector_ImDrawVert`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return unsafe_load(_getptr(x, f)) + f === :Capacity && return unsafe_load(_getptr(x, f)) + f === :Data && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImVector_ImDrawVert}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImDrawListFlags = Cint @@ -140,7 +183,7 @@ struct ImFontGlyph data::NTuple{40, UInt8} end -function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) +function _getptr(x::Ptr{ImFontGlyph}, f::Symbol) f === :Colored && return (Ptr{Cuint}(x + 0), 0, 1) f === :Visible && return (Ptr{Cuint}(x + 0), 1, 1) f === :Codepoint && return (Ptr{Cuint}(x + 0), 2, 30) @@ -153,6 +196,22 @@ function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) f === :V0 && return Ptr{Cfloat}(x + 28) f === :U1 && return Ptr{Cfloat}(x + 32) f === :V1 && return Ptr{Cfloat}(x + 36) + error("Unrecognized field of type `ImFontGlyph`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) + f === :Colored && return unsafe_load(_getptr(x, f)) + f === :Visible && return unsafe_load(_getptr(x, f)) + f === :Codepoint && return unsafe_load(_getptr(x, f)) + f === :AdvanceX && return unsafe_load(_getptr(x, f)) + f === :X0 && return unsafe_load(_getptr(x, f)) + f === :Y0 && return unsafe_load(_getptr(x, f)) + f === :X1 && return unsafe_load(_getptr(x, f)) + f === :Y1 && return unsafe_load(_getptr(x, f)) + f === :U0 && return unsafe_load(_getptr(x, f)) + f === :V0 && return unsafe_load(_getptr(x, f)) + f === :U1 && return unsafe_load(_getptr(x, f)) + f === :V1 && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -180,7 +239,7 @@ end function Base.setproperty!(x::Ptr{ImFontGlyph}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -268,7 +327,7 @@ function Base.getproperty(x::ImFontConfig, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) +function _getptr(x::Ptr{ImFontConfig}, f::Symbol) f === :FontData && return Ptr{Ptr{Cvoid}}(x + 0) f === :FontDataSize && return Ptr{Cint}(x + 8) f === :FontDataOwnedByAtlas && return Ptr{Bool}(x + 12) @@ -289,11 +348,35 @@ function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) f === :EllipsisChar && return Ptr{ImWchar}(x + 88) f === :Name && return Ptr{NTuple{40, Cchar}}(x + 90) f === :DstFont && return Ptr{Ptr{ImFont}}(x + 136) + error("Unrecognized field of type `ImFontConfig`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) + f === :FontData && return unsafe_load(_getptr(x, f)) + f === :FontDataSize && return unsafe_load(_getptr(x, f)) + f === :FontDataOwnedByAtlas && return unsafe_load(_getptr(x, f)) + f === :FontNo && return unsafe_load(_getptr(x, f)) + f === :SizePixels && return unsafe_load(_getptr(x, f)) + f === :OversampleH && return unsafe_load(_getptr(x, f)) + f === :OversampleV && return unsafe_load(_getptr(x, f)) + f === :PixelSnapH && return unsafe_load(_getptr(x, f)) + f === :GlyphExtraSpacing && return _getptr(x, f) + f === :GlyphOffset && return _getptr(x, f) + f === :GlyphRanges && return unsafe_load(_getptr(x, f)) + f === :GlyphMinAdvanceX && return unsafe_load(_getptr(x, f)) + f === :GlyphMaxAdvanceX && return unsafe_load(_getptr(x, f)) + f === :MergeMode && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :RasterizerMultiply && return unsafe_load(_getptr(x, f)) + f === :RasterizerDensity && return unsafe_load(_getptr(x, f)) + f === :EllipsisChar && return unsafe_load(_getptr(x, f)) + f === :Name && return _getptr(x, f) + f === :DstFont && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontConfig}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImFontConfig @@ -330,7 +413,7 @@ struct ImFontAtlas PackIdMouseCursors::Cint PackIdLines::Cint end -function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) +function _getptr(x::Ptr{ImFontAtlas}, f::Symbol) f === :Flags && return Ptr{ImFontAtlasFlags}(x + 0) f === :TexID && return Ptr{ImTextureID}(x + 8) f === :TexDesiredWidth && return Ptr{Cint}(x + 16) @@ -353,11 +436,37 @@ function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) f === :FontBuilderFlags && return Ptr{Cuint}(x + 1168) f === :PackIdMouseCursors && return Ptr{Cint}(x + 1172) f === :PackIdLines && return Ptr{Cint}(x + 1176) + error("Unrecognized field of type `ImFontAtlas`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :TexID && return unsafe_load(_getptr(x, f)) + f === :TexDesiredWidth && return unsafe_load(_getptr(x, f)) + f === :TexGlyphPadding && return unsafe_load(_getptr(x, f)) + f === :Locked && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :TexReady && return unsafe_load(_getptr(x, f)) + f === :TexPixelsUseColors && return unsafe_load(_getptr(x, f)) + f === :TexPixelsAlpha8 && return unsafe_load(_getptr(x, f)) + f === :TexPixelsRGBA32 && return unsafe_load(_getptr(x, f)) + f === :TexWidth && return unsafe_load(_getptr(x, f)) + f === :TexHeight && return unsafe_load(_getptr(x, f)) + f === :TexUvScale && return _getptr(x, f) + f === :TexUvWhitePixel && return _getptr(x, f) + f === :Fonts && return _getptr(x, f) + f === :CustomRects && return _getptr(x, f) + f === :ConfigData && return _getptr(x, f) + f === :TexUvLines && return _getptr(x, f) + f === :FontBuilderIO && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :PackIdMouseCursors && return unsafe_load(_getptr(x, f)) + f === :PackIdLines && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontAtlas}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -454,7 +563,7 @@ struct ImDrawList _FringeScale::Cfloat _OwnerName::Ptr{Cchar} end -function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) +function _getptr(x::Ptr{ImDrawList}, f::Symbol) f === :CmdBuffer && return Ptr{ImVector_ImDrawCmd}(x + 0) f === :IdxBuffer && return Ptr{ImVector_ImDrawIdx}(x + 16) f === :VtxBuffer && return Ptr{ImVector_ImDrawVert}(x + 32) @@ -470,11 +579,30 @@ function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) f === :_TextureIdStack && return Ptr{ImVector_ImTextureID}(x + 168) f === :_FringeScale && return Ptr{Cfloat}(x + 184) f === :_OwnerName && return Ptr{Ptr{Cchar}}(x + 192) + error("Unrecognized field of type `ImDrawList`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) + f === :CmdBuffer && return _getptr(x, f) + f === :IdxBuffer && return _getptr(x, f) + f === :VtxBuffer && return _getptr(x, f) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :_VtxCurrentIdx && return unsafe_load(_getptr(x, f)) + f === :_Data && return unsafe_load(_getptr(x, f)) + f === :_VtxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_IdxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_Path && return _getptr(x, f) + f === :_CmdHeader && return _getptr(x, f) + f === :_Splitter && return _getptr(x, f) + f === :_ClipRectStack && return _getptr(x, f) + f === :_TextureIdStack && return _getptr(x, f) + f === :_FringeScale && return unsafe_load(_getptr(x, f)) + f === :_OwnerName && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawList}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -513,7 +641,7 @@ function Base.getproperty(x::ImGuiViewport, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) +function _getptr(x::Ptr{ImGuiViewport}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiViewportFlags}(x + 4) f === :Pos && return Ptr{ImVec2}(x + 8) @@ -531,11 +659,32 @@ function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) f === :PlatformRequestMove && return Ptr{Bool}(x + 89) f === :PlatformRequestResize && return Ptr{Bool}(x + 90) f === :PlatformRequestClose && return Ptr{Bool}(x + 91) + error("Unrecognized field of type `ImGuiViewport`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :ParentViewportId && return unsafe_load(_getptr(x, f)) + f === :DrawData && return unsafe_load(_getptr(x, f)) + f === :RendererUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) + f === :PlatformHandleRaw && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowCreated && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestMove && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestResize && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestClose && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiViewport}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImDrawData @@ -549,7 +698,7 @@ struct ImDrawData FramebufferScale::ImVec2 OwnerViewport::Ptr{ImGuiViewport} end -function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) +function _getptr(x::Ptr{ImDrawData}, f::Symbol) f === :Valid && return Ptr{Bool}(x + 0) f === :CmdListsCount && return Ptr{Cint}(x + 4) f === :TotalIdxCount && return Ptr{Cint}(x + 8) @@ -559,11 +708,24 @@ function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) f === :DisplaySize && return Ptr{ImVec2}(x + 40) f === :FramebufferScale && return Ptr{ImVec2}(x + 48) f === :OwnerViewport && return Ptr{Ptr{ImGuiViewport}}(x + 56) + error("Unrecognized field of type `ImDrawData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) + f === :Valid && return unsafe_load(_getptr(x, f)) + f === :CmdListsCount && return unsafe_load(_getptr(x, f)) + f === :TotalIdxCount && return unsafe_load(_getptr(x, f)) + f === :TotalVtxCount && return unsafe_load(_getptr(x, f)) + f === :CmdLists && return _getptr(x, f) + f === :DisplayPos && return _getptr(x, f) + f === :DisplaySize && return _getptr(x, f) + f === :FramebufferScale && return _getptr(x, f) + f === :OwnerViewport && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -600,6 +762,26 @@ struct ImGuiKeyData DownDurationPrev::Cfloat AnalogValue::Cfloat end +function _getptr(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return Ptr{Bool}(x + 0) + f === :DownDuration && return Ptr{Cfloat}(x + 4) + f === :DownDurationPrev && return Ptr{Cfloat}(x + 8) + f === :AnalogValue && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImGuiKeyData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return unsafe_load(_getptr(x, f)) + f === :DownDuration && return unsafe_load(_getptr(x, f)) + f === :DownDurationPrev && return unsafe_load(_getptr(x, f)) + f === :AnalogValue && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImGuiKeyData}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImU16 = Cushort @@ -713,7 +895,7 @@ function Base.getproperty(x::ImGuiIO, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiIO}, f::Symbol) f === :ConfigFlags && return Ptr{ImGuiConfigFlags}(x + 0) f === :BackendFlags && return Ptr{ImGuiBackendFlags}(x + 4) f === :DisplaySize && return Ptr{ImVec2}(x + 8) @@ -814,11 +996,115 @@ function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) f === :BackendUsingLegacyNavInputArray && return Ptr{Bool}(x + 3003) f === :InputQueueSurrogate && return Ptr{ImWchar16}(x + 3004) f === :InputQueueCharacters && return Ptr{ImVector_ImWchar}(x + 3008) + error("Unrecognized field of type `ImGuiIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) + f === :ConfigFlags && return unsafe_load(_getptr(x, f)) + f === :BackendFlags && return unsafe_load(_getptr(x, f)) + f === :DisplaySize && return _getptr(x, f) + f === :DeltaTime && return unsafe_load(_getptr(x, f)) + f === :IniSavingRate && return unsafe_load(_getptr(x, f)) + f === :IniFilename && return unsafe_load(_getptr(x, f)) + f === :LogFilename && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Fonts && return unsafe_load(_getptr(x, f)) + f === :FontGlobalScale && return unsafe_load(_getptr(x, f)) + f === :FontAllowUserScaling && return unsafe_load(_getptr(x, f)) + f === :FontDefault && return unsafe_load(_getptr(x, f)) + f === :DisplayFramebufferScale && return _getptr(x, f) + f === :ConfigDockingNoSplit && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingWithShift && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingAlwaysTabBar && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingTransparentPayload && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoAutoMerge && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoTaskBarIcon && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDecoration && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDefaultParent && return unsafe_load(_getptr(x, f)) + f === :MouseDrawCursor && return unsafe_load(_getptr(x, f)) + f === :ConfigMacOSXBehaviors && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTrickleEventQueue && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextCursorBlink && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextEnterKeepActive && return unsafe_load(_getptr(x, f)) + f === :ConfigDragClickToInputText && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsResizeFromEdges && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsMoveFromTitleBarOnly && return unsafe_load(_getptr(x, f)) + f === :ConfigMemoryCompactTimer && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickTime && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickMaxDist && return unsafe_load(_getptr(x, f)) + f === :MouseDragThreshold && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatDelay && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatRate && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIsDebuggerPresent && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueOnce && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueLoop && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIgnoreFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIniSettings && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformName && return unsafe_load(_getptr(x, f)) + f === :BackendRendererName && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformUserData && return unsafe_load(_getptr(x, f)) + f === :BackendRendererUserData && return unsafe_load(_getptr(x, f)) + f === :BackendLanguageUserData && return unsafe_load(_getptr(x, f)) + f === :GetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :SetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :ClipboardUserData && return unsafe_load(_getptr(x, f)) + f === :SetPlatformImeDataFn && return unsafe_load(_getptr(x, f)) + f === :PlatformLocaleDecimalPoint && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouse && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboard && return unsafe_load(_getptr(x, f)) + f === :WantTextInput && return unsafe_load(_getptr(x, f)) + f === :WantSetMousePos && return unsafe_load(_getptr(x, f)) + f === :WantSaveIniSettings && return unsafe_load(_getptr(x, f)) + f === :NavActive && return unsafe_load(_getptr(x, f)) + f === :NavVisible && return unsafe_load(_getptr(x, f)) + f === :Framerate && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderVertices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderIndices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderWindows && return unsafe_load(_getptr(x, f)) + f === :MetricsActiveWindows && return unsafe_load(_getptr(x, f)) + f === :MouseDelta && return _getptr(x, f) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseDown && return _getptr(x, f) + f === :MouseWheel && return unsafe_load(_getptr(x, f)) + f === :MouseWheelH && return unsafe_load(_getptr(x, f)) + f === :MouseSource && return unsafe_load(_getptr(x, f)) + f === :MouseHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :KeyCtrl && return unsafe_load(_getptr(x, f)) + f === :KeyShift && return unsafe_load(_getptr(x, f)) + f === :KeyAlt && return unsafe_load(_getptr(x, f)) + f === :KeySuper && return unsafe_load(_getptr(x, f)) + f === :KeyMods && return unsafe_load(_getptr(x, f)) + f === :KeysData && return _getptr(x, f) + f === :WantCaptureMouseUnlessPopupClose && return unsafe_load(_getptr(x, f)) + f === :MousePosPrev && return _getptr(x, f) + f === :MouseClickedPos && return _getptr(x, f) + f === :MouseClickedTime && return _getptr(x, f) + f === :MouseClicked && return _getptr(x, f) + f === :MouseDoubleClicked && return _getptr(x, f) + f === :MouseClickedCount && return _getptr(x, f) + f === :MouseClickedLastCount && return _getptr(x, f) + f === :MouseReleased && return _getptr(x, f) + f === :MouseDownOwned && return _getptr(x, f) + f === :MouseDownOwnedUnlessPopupClose && return _getptr(x, f) + f === :MouseWheelRequestAxisSwap && return unsafe_load(_getptr(x, f)) + f === :MouseCtrlLeftAsRightClick && return unsafe_load(_getptr(x, f)) + f === :MouseDownDuration && return _getptr(x, f) + f === :MouseDownDurationPrev && return _getptr(x, f) + f === :MouseDragMaxDistanceAbs && return _getptr(x, f) + f === :MouseDragMaxDistanceSqr && return _getptr(x, f) + f === :PenPressure && return unsafe_load(_getptr(x, f)) + f === :AppFocusLost && return unsafe_load(_getptr(x, f)) + f === :AppAcceptingEvents && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyKeyArrays && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyNavInputArray && return unsafe_load(_getptr(x, f)) + f === :InputQueueSurrogate && return unsafe_load(_getptr(x, f)) + f === :InputQueueCharacters && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImGuiPlatformMonitor @@ -829,18 +1115,28 @@ struct ImGuiPlatformMonitor DpiScale::Cfloat PlatformHandle::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) f === :MainPos && return Ptr{ImVec2}(x + 0) f === :MainSize && return Ptr{ImVec2}(x + 8) f === :WorkPos && return Ptr{ImVec2}(x + 16) f === :WorkSize && return Ptr{ImVec2}(x + 24) f === :DpiScale && return Ptr{Cfloat}(x + 32) f === :PlatformHandle && return Ptr{Ptr{Cvoid}}(x + 40) + error("Unrecognized field of type `ImGuiPlatformMonitor`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) + f === :MainPos && return _getptr(x, f) + f === :MainSize && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformMonitor}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -883,7 +1179,7 @@ struct ImGuiPlatformIO Monitors::ImVector_ImGuiPlatformMonitor Viewports::ImVector_ImGuiViewportPtr end -function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Platform_CreateWindow && return Ptr{Ptr{Cvoid}}(x + 0) f === :Platform_DestroyWindow && return Ptr{Ptr{Cvoid}}(x + 8) f === :Platform_ShowWindow && return Ptr{Ptr{Cvoid}}(x + 16) @@ -909,11 +1205,40 @@ function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Renderer_SwapBuffers && return Ptr{Ptr{Cvoid}}(x + 176) f === :Monitors && return Ptr{ImVector_ImGuiPlatformMonitor}(x + 184) f === :Viewports && return Ptr{ImVector_ImGuiViewportPtr}(x + 200) + error("Unrecognized field of type `ImGuiPlatformIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) + f === :Platform_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_ShowWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowMinimized && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowTitle && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowAlpha && return unsafe_load(_getptr(x, f)) + f === :Platform_UpdateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowDpiScale && return unsafe_load(_getptr(x, f)) + f === :Platform_OnChangedViewport && return unsafe_load(_getptr(x, f)) + f === :Platform_CreateVkSurface && return unsafe_load(_getptr(x, f)) + f === :Renderer_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Renderer_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Monitors && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -983,7 +1308,7 @@ struct ImGuiStyle HoverFlagsForTooltipMouse::ImGuiHoveredFlags HoverFlagsForTooltipNav::ImGuiHoveredFlags end -function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyle}, f::Symbol) f === :Alpha && return Ptr{Cfloat}(x + 0) f === :DisabledAlpha && return Ptr{Cfloat}(x + 4) f === :WindowPadding && return Ptr{ImVec2}(x + 8) @@ -1037,11 +1362,68 @@ function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) f === :HoverDelayNormal && return Ptr{Cfloat}(x + 1128) f === :HoverFlagsForTooltipMouse && return Ptr{ImGuiHoveredFlags}(x + 1132) f === :HoverFlagsForTooltipNav && return Ptr{ImGuiHoveredFlags}(x + 1136) + error("Unrecognized field of type `ImGuiStyle`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) + f === :Alpha && return unsafe_load(_getptr(x, f)) + f === :DisabledAlpha && return unsafe_load(_getptr(x, f)) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :WindowMinSize && return _getptr(x, f) + f === :WindowTitleAlign && return _getptr(x, f) + f === :WindowMenuButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ChildRounding && return unsafe_load(_getptr(x, f)) + f === :ChildBorderSize && return unsafe_load(_getptr(x, f)) + f === :PopupRounding && return unsafe_load(_getptr(x, f)) + f === :PopupBorderSize && return unsafe_load(_getptr(x, f)) + f === :FramePadding && return _getptr(x, f) + f === :FrameRounding && return unsafe_load(_getptr(x, f)) + f === :FrameBorderSize && return unsafe_load(_getptr(x, f)) + f === :ItemSpacing && return _getptr(x, f) + f === :ItemInnerSpacing && return _getptr(x, f) + f === :CellPadding && return _getptr(x, f) + f === :TouchExtraPadding && return _getptr(x, f) + f === :IndentSpacing && return unsafe_load(_getptr(x, f)) + f === :ColumnsMinSpacing && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSize && return unsafe_load(_getptr(x, f)) + f === :ScrollbarRounding && return unsafe_load(_getptr(x, f)) + f === :GrabMinSize && return unsafe_load(_getptr(x, f)) + f === :GrabRounding && return unsafe_load(_getptr(x, f)) + f === :LogSliderDeadzone && return unsafe_load(_getptr(x, f)) + f === :TabRounding && return unsafe_load(_getptr(x, f)) + f === :TabBorderSize && return unsafe_load(_getptr(x, f)) + f === :TabMinWidthForCloseButton && return unsafe_load(_getptr(x, f)) + f === :TabBarBorderSize && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersAngle && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersTextAlign && return _getptr(x, f) + f === :ColorButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ButtonTextAlign && return _getptr(x, f) + f === :SelectableTextAlign && return _getptr(x, f) + f === :SeparatorTextBorderSize && return unsafe_load(_getptr(x, f)) + f === :SeparatorTextAlign && return _getptr(x, f) + f === :SeparatorTextPadding && return _getptr(x, f) + f === :DisplayWindowPadding && return _getptr(x, f) + f === :DisplaySafeAreaPadding && return _getptr(x, f) + f === :DockingSeparatorSize && return unsafe_load(_getptr(x, f)) + f === :MouseCursorScale && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLines && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLinesUseTex && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedFill && return unsafe_load(_getptr(x, f)) + f === :CurveTessellationTol && return unsafe_load(_getptr(x, f)) + f === :CircleTessellationMaxError && return unsafe_load(_getptr(x, f)) + f === :Colors && return _getptr(x, f) + f === :HoverStationaryDelay && return unsafe_load(_getptr(x, f)) + f === :HoverDelayShort && return unsafe_load(_getptr(x, f)) + f === :HoverDelayNormal && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipMouse && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipNav && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiStyle}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -1069,7 +1451,7 @@ struct ImGuiInputEvent data::NTuple{28, UInt8} end -function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) +function _getptr(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Type && return Ptr{ImGuiInputEventType}(x + 0) f === :Source && return Ptr{ImGuiInputSource}(x + 4) f === :EventId && return Ptr{ImU32}(x + 8) @@ -1081,6 +1463,21 @@ function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Text && return Ptr{ImGuiInputEventText}(x + 12) f === :AppFocused && return Ptr{ImGuiInputEventAppFocused}(x + 12) f === :AddedByTestEngine && return Ptr{Bool}(x + 24) + error("Unrecognized field of type `ImGuiInputEvent`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) + f === :Type && return unsafe_load(_getptr(x, f)) + f === :Source && return unsafe_load(_getptr(x, f)) + f === :EventId && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseWheel && return _getptr(x, f) + f === :MouseButton && return _getptr(x, f) + f === :MouseViewport && return _getptr(x, f) + f === :Key && return _getptr(x, f) + f === :Text && return _getptr(x, f) + f === :AppFocused && return _getptr(x, f) + f === :AddedByTestEngine && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1092,7 +1489,7 @@ function Base.getproperty(x::ImGuiInputEvent, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiInputEvent}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiInputEvent @@ -1200,11 +1597,19 @@ struct ImGuiStoragePair data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) +function _getptr(x::Ptr{ImGuiStoragePair}, f::Symbol) f === :key && return Ptr{ImGuiID}(x + 0) f === :val_i && return Ptr{Cint}(x + 8) f === :val_f && return Ptr{Cfloat}(x + 8) f === :val_p && return Ptr{Ptr{Cvoid}}(x + 8) + error("Unrecognized field of type `ImGuiStoragePair`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) + f === :key && return unsafe_load(_getptr(x, f)) + f === :val_i && return unsafe_load(_getptr(x, f)) + f === :val_f && return unsafe_load(_getptr(x, f)) + f === :val_p && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1216,7 +1621,7 @@ function Base.getproperty(x::ImGuiStoragePair, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStoragePair}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStoragePair @@ -1424,7 +1829,7 @@ struct ImGuiDockNode data::NTuple{208, UInt8} end -function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) +function _getptr(x::Ptr{ImGuiDockNode}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :SharedFlags && return Ptr{ImGuiDockNodeFlags}(x + 4) f === :LocalFlags && return Ptr{ImGuiDockNodeFlags}(x + 8) @@ -1467,6 +1872,52 @@ function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) f === :WantMouseMove && return (Ptr{Bool}(x + 200), 17, 1) f === :WantHiddenTabBarUpdate && return (Ptr{Bool}(x + 200), 18, 1) f === :WantHiddenTabBarToggle && return (Ptr{Bool}(x + 200), 19, 1) + error("Unrecognized field of type `ImGuiDockNode`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :SharedFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlagsInWindows && return unsafe_load(_getptr(x, f)) + f === :MergedFlags && return unsafe_load(_getptr(x, f)) + f === :State && return unsafe_load(_getptr(x, f)) + f === :ParentNode && return unsafe_load(_getptr(x, f)) + f === :ChildNodes && return _getptr(x, f) + f === :Windows && return _getptr(x, f) + f === :TabBar && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeRef && return _getptr(x, f) + f === :SplitAxis && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :LastBgColor && return unsafe_load(_getptr(x, f)) + f === :HostWindow && return unsafe_load(_getptr(x, f)) + f === :VisibleWindow && return unsafe_load(_getptr(x, f)) + f === :CentralNode && return unsafe_load(_getptr(x, f)) + f === :OnlyNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :CountNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :LastFrameAlive && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameFocused && return unsafe_load(_getptr(x, f)) + f === :LastFocusedNodeId && return unsafe_load(_getptr(x, f)) + f === :SelectedTabId && return unsafe_load(_getptr(x, f)) + f === :WantCloseTabId && return unsafe_load(_getptr(x, f)) + f === :RefViewportId && return unsafe_load(_getptr(x, f)) + f === :AuthorityForPos && return unsafe_load(_getptr(x, f)) + f === :AuthorityForSize && return unsafe_load(_getptr(x, f)) + f === :AuthorityForViewport && return unsafe_load(_getptr(x, f)) + f === :IsVisible && return unsafe_load(_getptr(x, f)) + f === :IsFocused && return unsafe_load(_getptr(x, f)) + f === :IsBgDrawnThisFrame && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :HasWindowMenuButton && return unsafe_load(_getptr(x, f)) + f === :HasCentralNodeChild && return unsafe_load(_getptr(x, f)) + f === :WantCloseAll && return unsafe_load(_getptr(x, f)) + f === :WantLockSizeOnce && return unsafe_load(_getptr(x, f)) + f === :WantMouseMove && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarUpdate && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarToggle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1494,7 +1945,7 @@ end function Base.setproperty!(x::Ptr{ImGuiDockNode}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1519,7 +1970,7 @@ struct ImGuiWindow data::NTuple{1160, UInt8} end -function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) +function _getptr(x::Ptr{ImGuiWindow}, f::Symbol) f === :Ctx && return Ptr{Ptr{ImGuiContext}}(x + 0) f === :Name && return Ptr{Ptr{Cchar}}(x + 8) f === :ID && return Ptr{ImGuiID}(x + 16) @@ -1644,6 +2095,134 @@ function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) f === :DockId && return Ptr{ImGuiID}(x + 1136) f === :DockTabItemStatusFlags && return Ptr{ImGuiItemStatusFlags}(x + 1140) f === :DockTabItemRect && return Ptr{ImRect}(x + 1144) + error("Unrecognized field of type `ImGuiWindow`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :Name && return unsafe_load(_getptr(x, f)) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :FlagsPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ChildFlags && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :Viewport && return unsafe_load(_getptr(x, f)) + f === :ViewportId && return unsafe_load(_getptr(x, f)) + f === :ViewportPos && return _getptr(x, f) + f === :ViewportAllowPlatformMonitorExtend && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeFull && return _getptr(x, f) + f === :ContentSize && return _getptr(x, f) + f === :ContentSizeIdeal && return _getptr(x, f) + f === :ContentSizeExplicit && return _getptr(x, f) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :TitleBarHeight && return unsafe_load(_getptr(x, f)) + f === :MenuBarHeight && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX2 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY2 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeY1 && return unsafe_load(_getptr(x, f)) + f === :NameBufLen && return unsafe_load(_getptr(x, f)) + f === :MoveId && return unsafe_load(_getptr(x, f)) + f === :TabId && return unsafe_load(_getptr(x, f)) + f === :ChildId && return unsafe_load(_getptr(x, f)) + f === :PopupId && return unsafe_load(_getptr(x, f)) + f === :Scroll && return _getptr(x, f) + f === :ScrollMax && return _getptr(x, f) + f === :ScrollTarget && return _getptr(x, f) + f === :ScrollTargetCenterRatio && return _getptr(x, f) + f === :ScrollTargetEdgeSnapDist && return _getptr(x, f) + f === :ScrollbarSizes && return _getptr(x, f) + f === :ScrollbarX && return unsafe_load(_getptr(x, f)) + f === :ScrollbarY && return unsafe_load(_getptr(x, f)) + f === :ViewportOwned && return unsafe_load(_getptr(x, f)) + f === :Active && return unsafe_load(_getptr(x, f)) + f === :WasActive && return unsafe_load(_getptr(x, f)) + f === :WriteAccessed && return unsafe_load(_getptr(x, f)) + f === :Collapsed && return unsafe_load(_getptr(x, f)) + f === :WantCollapseToggle && return unsafe_load(_getptr(x, f)) + f === :SkipItems && return unsafe_load(_getptr(x, f)) + f === :SkipRefresh && return unsafe_load(_getptr(x, f)) + f === :Appearing && return unsafe_load(_getptr(x, f)) + f === :Hidden && return unsafe_load(_getptr(x, f)) + f === :IsFallbackWindow && return unsafe_load(_getptr(x, f)) + f === :IsExplicitChild && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHovered && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHeld && return unsafe_load(_getptr(x, f)) + f === :BeginCount && return unsafe_load(_getptr(x, f)) + f === :BeginCountPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinParent && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinContext && return unsafe_load(_getptr(x, f)) + f === :FocusOrder && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesX && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesY && return unsafe_load(_getptr(x, f)) + f === :AutoFitOnlyGrows && return unsafe_load(_getptr(x, f)) + f === :AutoPosLastDirection && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCanSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCannotSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesForRenderOnly && return unsafe_load(_getptr(x, f)) + f === :DisableInputsFrames && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowSizeAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowCollapsedAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowDockAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosVal && return _getptr(x, f) + f === :SetWindowPosPivot && return _getptr(x, f) + f === :IDStack && return _getptr(x, f) + f === :DC && return _getptr(x, f) + f === :OuterRectClipped && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :ParentWorkRect && return _getptr(x, f) + f === :ClipRect && return _getptr(x, f) + f === :ContentRegionRect && return _getptr(x, f) + f === :HitTestHoleSize && return _getptr(x, f) + f === :HitTestHoleOffset && return _getptr(x, f) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameJustFocused && return unsafe_load(_getptr(x, f)) + f === :LastTimeActive && return unsafe_load(_getptr(x, f)) + f === :ItemWidthDefault && return unsafe_load(_getptr(x, f)) + f === :StateStorage && return _getptr(x, f) + f === :ColumnsStorage && return _getptr(x, f) + f === :FontWindowScale && return unsafe_load(_getptr(x, f)) + f === :FontDpiScale && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :DrawList && return unsafe_load(_getptr(x, f)) + f === :DrawListInst && return _getptr(x, f) + f === :ParentWindow && return unsafe_load(_getptr(x, f)) + f === :ParentWindowInBeginStack && return unsafe_load(_getptr(x, f)) + f === :RootWindow && return unsafe_load(_getptr(x, f)) + f === :RootWindowPopupTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowDockTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowForTitleBarHighlight && return unsafe_load(_getptr(x, f)) + f === :RootWindowForNav && return unsafe_load(_getptr(x, f)) + f === :ParentWindowForFocusRoute && return unsafe_load(_getptr(x, f)) + f === :NavLastChildNavWindow && return unsafe_load(_getptr(x, f)) + f === :NavLastIds && return _getptr(x, f) + f === :NavRectRel && return _getptr(x, f) + f === :NavPreferredScoringPosRel && return _getptr(x, f) + f === :NavRootFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListIdxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListVtxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :DockIsActive && return unsafe_load(_getptr(x, f)) + f === :DockNodeIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabWantClose && return unsafe_load(_getptr(x, f)) + f === :DockOrder && return unsafe_load(_getptr(x, f)) + f === :DockStyle && return _getptr(x, f) + f === :DockNode && return unsafe_load(_getptr(x, f)) + f === :DockNodeAsHost && return unsafe_load(_getptr(x, f)) + f === :DockId && return unsafe_load(_getptr(x, f)) + f === :DockTabItemStatusFlags && return unsafe_load(_getptr(x, f)) + f === :DockTabItemRect && return _getptr(x, f) return getfield(x, f) end @@ -1671,7 +2250,7 @@ end function Base.setproperty!(x::Ptr{ImGuiWindow}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1839,10 +2418,17 @@ struct ImGuiStyleMod data::NTuple{12, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyleMod}, f::Symbol) f === :VarIdx && return Ptr{ImGuiStyleVar}(x + 0) f === :BackupInt && return Ptr{NTuple{2, Cint}}(x + 4) f === :BackupFloat && return Ptr{NTuple{2, Cfloat}}(x + 4) + error("Unrecognized field of type `ImGuiStyleMod`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) + f === :VarIdx && return unsafe_load(_getptr(x, f)) + f === :BackupInt && return _getptr(x, f) + f === :BackupFloat && return _getptr(x, f) return getfield(x, f) end @@ -1854,7 +2440,7 @@ function Base.getproperty(x::ImGuiStyleMod, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStyleMod}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStyleMod @@ -2229,7 +2815,7 @@ struct ImGuiTableColumn data::NTuple{112, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :Flags && return Ptr{ImGuiTableColumnFlags}(x + 0) f === :WidthGiven && return Ptr{Cfloat}(x + 4) f === :MinX && return Ptr{Cfloat}(x + 8) @@ -2271,6 +2857,51 @@ function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :SortDirectionsAvailCount && return (Ptr{ImU8}(x + 108), 10, 2) f === :SortDirectionsAvailMask && return (Ptr{ImU8}(x + 108), 12, 4) f === :SortDirectionsAvailList && return Ptr{ImU8}(x + 110) + error("Unrecognized field of type `ImGuiTableColumn`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :WidthGiven && return unsafe_load(_getptr(x, f)) + f === :MinX && return unsafe_load(_getptr(x, f)) + f === :MaxX && return unsafe_load(_getptr(x, f)) + f === :WidthRequest && return unsafe_load(_getptr(x, f)) + f === :WidthAuto && return unsafe_load(_getptr(x, f)) + f === :StretchWeight && return unsafe_load(_getptr(x, f)) + f === :InitStretchWeightOrWidth && return unsafe_load(_getptr(x, f)) + f === :ClipRect && return _getptr(x, f) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :WorkMinX && return unsafe_load(_getptr(x, f)) + f === :WorkMaxX && return unsafe_load(_getptr(x, f)) + f === :ItemWidth && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXFrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXUnfrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersUsed && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersIdeal && return unsafe_load(_getptr(x, f)) + f === :NameOffset && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IndexWithinEnabledSet && return unsafe_load(_getptr(x, f)) + f === :PrevEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :NextEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :DrawChannelFrozen && return unsafe_load(_getptr(x, f)) + f === :DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabledNextFrame && return unsafe_load(_getptr(x, f)) + f === :IsVisibleX && return unsafe_load(_getptr(x, f)) + f === :IsVisibleY && return unsafe_load(_getptr(x, f)) + f === :IsRequestOutput && return unsafe_load(_getptr(x, f)) + f === :IsSkipItems && return unsafe_load(_getptr(x, f)) + f === :IsPreserveWidthAuto && return unsafe_load(_getptr(x, f)) + f === :NavLayerCurrent && return unsafe_load(_getptr(x, f)) + f === :AutoFitQueue && return unsafe_load(_getptr(x, f)) + f === :CannotSkipItemsQueue && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailCount && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailMask && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailList && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2298,7 +2929,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumn}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2385,7 +3016,7 @@ struct ImGuiTable data::NTuple{592, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) +function _getptr(x::Ptr{ImGuiTable}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiTableFlags}(x + 4) f === :RawData && return Ptr{Ptr{Cvoid}}(x + 8) @@ -2498,6 +3129,122 @@ function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) f === :HasScrollbarYPrev && return Ptr{Bool}(x + 583) f === :MemoryCompacted && return Ptr{Bool}(x + 584) f === :HostSkipItems && return Ptr{Bool}(x + 585) + error("Unrecognized field of type `ImGuiTable`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :RawData && return unsafe_load(_getptr(x, f)) + f === :TempData && return unsafe_load(_getptr(x, f)) + f === :Columns && return _getptr(x, f) + f === :DisplayOrderToIndex && return _getptr(x, f) + f === :RowCellData && return _getptr(x, f) + f === :EnabledMaskByDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :EnabledMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :VisibleMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :SettingsLoadedFlags && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :ColumnsCount && return unsafe_load(_getptr(x, f)) + f === :CurrentRow && return unsafe_load(_getptr(x, f)) + f === :CurrentColumn && return unsafe_load(_getptr(x, f)) + f === :InstanceCurrent && return unsafe_load(_getptr(x, f)) + f === :InstanceInteracted && return unsafe_load(_getptr(x, f)) + f === :RowPosY1 && return unsafe_load(_getptr(x, f)) + f === :RowPosY2 && return unsafe_load(_getptr(x, f)) + f === :RowMinHeight && return unsafe_load(_getptr(x, f)) + f === :RowCellPaddingY && return unsafe_load(_getptr(x, f)) + f === :RowTextBaseline && return unsafe_load(_getptr(x, f)) + f === :RowIndentOffsetX && return unsafe_load(_getptr(x, f)) + f === :RowFlags && return unsafe_load(_getptr(x, f)) + f === :LastRowFlags && return unsafe_load(_getptr(x, f)) + f === :RowBgColorCounter && return unsafe_load(_getptr(x, f)) + f === :RowBgColor && return _getptr(x, f) + f === :BorderColorStrong && return unsafe_load(_getptr(x, f)) + f === :BorderColorLight && return unsafe_load(_getptr(x, f)) + f === :BorderX1 && return unsafe_load(_getptr(x, f)) + f === :BorderX2 && return unsafe_load(_getptr(x, f)) + f === :HostIndentX && return unsafe_load(_getptr(x, f)) + f === :MinColumnWidth && return unsafe_load(_getptr(x, f)) + f === :OuterPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX1 && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX2 && return unsafe_load(_getptr(x, f)) + f === :InnerWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsGivenWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsAutoFitWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsStretchSumWeights && return unsafe_load(_getptr(x, f)) + f === :ResizedColumnNextWidth && return unsafe_load(_getptr(x, f)) + f === :ResizeLockMinContentsX2 && return unsafe_load(_getptr(x, f)) + f === :RefScale && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersHeight && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersSlope && return unsafe_load(_getptr(x, f)) + f === :OuterRect && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :BgClipRect && return _getptr(x, f) + f === :Bg0ClipRectForDrawCmd && return _getptr(x, f) + f === :Bg2ClipRectForDrawCmd && return _getptr(x, f) + f === :HostClipRect && return _getptr(x, f) + f === :HostBackupInnerClipRect && return _getptr(x, f) + f === :OuterWindow && return unsafe_load(_getptr(x, f)) + f === :InnerWindow && return unsafe_load(_getptr(x, f)) + f === :ColumnsNames && return _getptr(x, f) + f === :DrawSplitter && return unsafe_load(_getptr(x, f)) + f === :InstanceDataFirst && return _getptr(x, f) + f === :InstanceDataExtra && return _getptr(x, f) + f === :SortSpecsSingle && return _getptr(x, f) + f === :SortSpecsMulti && return _getptr(x, f) + f === :SortSpecs && return _getptr(x, f) + f === :SortSpecsCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledFixedCount && return unsafe_load(_getptr(x, f)) + f === :DeclColumnsCount && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersCount && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBody && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBorder && return unsafe_load(_getptr(x, f)) + f === :HighlightColumnHeader && return unsafe_load(_getptr(x, f)) + f === :AutoFitSingleColumn && return unsafe_load(_getptr(x, f)) + f === :ResizedColumn && return unsafe_load(_getptr(x, f)) + f === :LastResizedColumn && return unsafe_load(_getptr(x, f)) + f === :HeldHeaderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumnDir && return unsafe_load(_getptr(x, f)) + f === :LeftMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :LeftMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :ContextPopupColumn && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsCount && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsCount && return unsafe_load(_getptr(x, f)) + f === :RowCellDataCurrent && return unsafe_load(_getptr(x, f)) + f === :DummyDrawChannel && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsLayoutLocked && return unsafe_load(_getptr(x, f)) + f === :IsInsideRow && return unsafe_load(_getptr(x, f)) + f === :IsInitializing && return unsafe_load(_getptr(x, f)) + f === :IsSortSpecsDirty && return unsafe_load(_getptr(x, f)) + f === :IsUsingHeaders && return unsafe_load(_getptr(x, f)) + f === :IsContextPopupOpen && return unsafe_load(_getptr(x, f)) + f === :DisableDefaultContextMenu && return unsafe_load(_getptr(x, f)) + f === :IsSettingsRequestLoad && return unsafe_load(_getptr(x, f)) + f === :IsSettingsDirty && return unsafe_load(_getptr(x, f)) + f === :IsDefaultDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IsResetAllRequest && return unsafe_load(_getptr(x, f)) + f === :IsResetDisplayOrderRequest && return unsafe_load(_getptr(x, f)) + f === :IsUnfrozenRows && return unsafe_load(_getptr(x, f)) + f === :IsDefaultSizingPolicy && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdAliveBeforeTable && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdInTable && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYCurr && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYPrev && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :HostSkipItems && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2525,7 +3272,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTable}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2830,12 +3577,21 @@ struct ImGuiStackLevelInfo data::NTuple{64, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) +function _getptr(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :QueryFrameCount && return Ptr{ImS8}(x + 4) f === :QuerySuccess && return Ptr{Bool}(x + 5) f === :DataType && return (Ptr{ImGuiDataType}(x + 4), 16, 8) f === :Desc && return Ptr{NTuple{57, Cchar}}(x + 7) + error("Unrecognized field of type `ImGuiStackLevelInfo`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :QueryFrameCount && return unsafe_load(_getptr(x, f)) + f === :QuerySuccess && return unsafe_load(_getptr(x, f)) + f === :DataType && return unsafe_load(_getptr(x, f)) + f === :Desc && return _getptr(x, f) return getfield(x, f) end @@ -2863,7 +3619,7 @@ end function Base.setproperty!(x::Ptr{ImGuiStackLevelInfo}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2914,7 +3670,7 @@ struct ImGuiContext data::NTuple{14184, UInt8} end -function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) +function _getptr(x::Ptr{ImGuiContext}, f::Symbol) f === :Initialized && return Ptr{Bool}(x + 0) f === :FontAtlasOwnedByContext && return Ptr{Bool}(x + 1) f === :IO && return Ptr{ImGuiIO}(x + 8) @@ -3205,6 +3961,300 @@ function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) f === :WantTextInputNextFrame && return Ptr{Cint}(x + 14100) f === :TempBuffer && return Ptr{ImVector_char}(x + 14104) f === :TempKeychordName && return Ptr{NTuple{64, Cchar}}(x + 14120) + error("Unrecognized field of type `ImGuiContext`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) + f === :Initialized && return unsafe_load(_getptr(x, f)) + f === :FontAtlasOwnedByContext && return unsafe_load(_getptr(x, f)) + f === :IO && return _getptr(x, f) + f === :PlatformIO && return _getptr(x, f) + f === :Style && return _getptr(x, f) + f === :ConfigFlagsCurrFrame && return unsafe_load(_getptr(x, f)) + f === :ConfigFlagsLastFrame && return unsafe_load(_getptr(x, f)) + f === :Font && return unsafe_load(_getptr(x, f)) + f === :FontSize && return unsafe_load(_getptr(x, f)) + f === :FontBaseSize && return unsafe_load(_getptr(x, f)) + f === :CurrentDpiScale && return unsafe_load(_getptr(x, f)) + f === :DrawListSharedData && return _getptr(x, f) + f === :Time && return unsafe_load(_getptr(x, f)) + f === :FrameCount && return unsafe_load(_getptr(x, f)) + f === :FrameCountEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountPlatformEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountRendered && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScope && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScopeWithImplicitWindow && return unsafe_load(_getptr(x, f)) + f === :WithinEndChild && return unsafe_load(_getptr(x, f)) + f === :GcCompactAll && return unsafe_load(_getptr(x, f)) + f === :TestEngineHookItems && return unsafe_load(_getptr(x, f)) + f === :TestEngine && return unsafe_load(_getptr(x, f)) + f === :InputEventsQueue && return _getptr(x, f) + f === :InputEventsTrail && return _getptr(x, f) + f === :InputEventsNextMouseSource && return unsafe_load(_getptr(x, f)) + f === :InputEventsNextEventId && return unsafe_load(_getptr(x, f)) + f === :Windows && return _getptr(x, f) + f === :WindowsFocusOrder && return _getptr(x, f) + f === :WindowsTempSortBuffer && return _getptr(x, f) + f === :CurrentWindowStack && return _getptr(x, f) + f === :WindowsById && return _getptr(x, f) + f === :WindowsActiveCount && return unsafe_load(_getptr(x, f)) + f === :WindowsHoverPadding && return _getptr(x, f) + f === :DebugBreakInWindow && return unsafe_load(_getptr(x, f)) + f === :CurrentWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindowUnderMovingWindow && return unsafe_load(_getptr(x, f)) + f === :MovingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowRefMousePos && return _getptr(x, f) + f === :WheelingWindowStartFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowScrolledFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowReleaseTimer && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowWheelRemainder && return _getptr(x, f) + f === :WheelingAxisAvg && return _getptr(x, f) + f === :DebugHookIdInfo && return unsafe_load(_getptr(x, f)) + f === :HoveredId && return unsafe_load(_getptr(x, f)) + f === :HoveredIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoveredIdTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdNotActiveTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :HoveredIdDisabled && return unsafe_load(_getptr(x, f)) + f === :ItemUnclipByLog && return unsafe_load(_getptr(x, f)) + f === :ActiveId && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsJustActivated && return unsafe_load(_getptr(x, f)) + f === :ActiveIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :ActiveIdNoClearOnFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenPressedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedThisFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdFromShortcut && return unsafe_load(_getptr(x, f)) + f === :ActiveIdMouseButton && return unsafe_load(_getptr(x, f)) + f === :ActiveIdClickOffset && return _getptr(x, f) + f === :ActiveIdWindow && return unsafe_load(_getptr(x, f)) + f === :ActiveIdSource && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameWindow && return unsafe_load(_getptr(x, f)) + f === :LastActiveId && return unsafe_load(_getptr(x, f)) + f === :LastActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeFromNoneTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyboardKeyPressTime && return unsafe_load(_getptr(x, f)) + f === :KeysMayBeCharInput && return _getptr(x, f) + f === :KeysOwnerData && return _getptr(x, f) + f === :KeysRoutingTable && return _getptr(x, f) + f === :ActiveIdUsingNavDirMask && return unsafe_load(_getptr(x, f)) + f === :ActiveIdUsingAllKeyboardKeys && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInShortcutRouting && return unsafe_load(_getptr(x, f)) + f === :CurrentFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :CurrentItemFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLocateId && return unsafe_load(_getptr(x, f)) + f === :NextItemData && return _getptr(x, f) + f === :LastItemData && return _getptr(x, f) + f === :NextWindowData && return _getptr(x, f) + f === :DebugShowGroupRects && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorIdx && return unsafe_load(_getptr(x, f)) + f === :ColorStack && return _getptr(x, f) + f === :StyleVarStack && return _getptr(x, f) + f === :FontStack && return _getptr(x, f) + f === :FocusScopeStack && return _getptr(x, f) + f === :ItemFlagsStack && return _getptr(x, f) + f === :GroupStack && return _getptr(x, f) + f === :OpenPopupStack && return _getptr(x, f) + f === :BeginPopupStack && return _getptr(x, f) + f === :NavTreeNodeStack && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) + f === :CurrentViewport && return unsafe_load(_getptr(x, f)) + f === :MouseViewport && return unsafe_load(_getptr(x, f)) + f === :MouseLastHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :PlatformLastFocusedViewportId && return unsafe_load(_getptr(x, f)) + f === :FallbackMonitor && return _getptr(x, f) + f === :PlatformMonitorsFullWorkRect && return _getptr(x, f) + f === :ViewportCreatedCount && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowsCreatedCount && return unsafe_load(_getptr(x, f)) + f === :ViewportFocusedStampCount && return unsafe_load(_getptr(x, f)) + f === :NavWindow && return unsafe_load(_getptr(x, f)) + f === :NavId && return unsafe_load(_getptr(x, f)) + f === :NavFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavActivateId && return unsafe_load(_getptr(x, f)) + f === :NavActivateDownId && return unsafe_load(_getptr(x, f)) + f === :NavActivatePressedId && return unsafe_load(_getptr(x, f)) + f === :NavActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavFocusRoute && return _getptr(x, f) + f === :NavHighlightActivatedId && return unsafe_load(_getptr(x, f)) + f === :NavHighlightActivatedTimer && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateId && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavInputSource && return unsafe_load(_getptr(x, f)) + f === :NavLayer && return unsafe_load(_getptr(x, f)) + f === :NavLastValidSelectionUserData && return unsafe_load(_getptr(x, f)) + f === :NavIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :NavMousePosDirty && return unsafe_load(_getptr(x, f)) + f === :NavDisableHighlight && return unsafe_load(_getptr(x, f)) + f === :NavDisableMouseHover && return unsafe_load(_getptr(x, f)) + f === :NavAnyRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequestFromMove && return unsafe_load(_getptr(x, f)) + f === :NavInitResult && return _getptr(x, f) + f === :NavMoveSubmitted && return unsafe_load(_getptr(x, f)) + f === :NavMoveScoringItems && return unsafe_load(_getptr(x, f)) + f === :NavMoveForwardToNextFrame && return unsafe_load(_getptr(x, f)) + f === :NavMoveFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveScrollFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavMoveDir && return unsafe_load(_getptr(x, f)) + f === :NavMoveDirForDebug && return unsafe_load(_getptr(x, f)) + f === :NavMoveClipDir && return unsafe_load(_getptr(x, f)) + f === :NavScoringRect && return _getptr(x, f) + f === :NavScoringNoClipRect && return _getptr(x, f) + f === :NavScoringDebugCount && return unsafe_load(_getptr(x, f)) + f === :NavTabbingDir && return unsafe_load(_getptr(x, f)) + f === :NavTabbingCounter && return unsafe_load(_getptr(x, f)) + f === :NavMoveResultLocal && return _getptr(x, f) + f === :NavMoveResultLocalVisible && return _getptr(x, f) + f === :NavMoveResultOther && return _getptr(x, f) + f === :NavTabbingResultFirst && return _getptr(x, f) + f === :ConfigNavWindowingKeyNext && return unsafe_load(_getptr(x, f)) + f === :ConfigNavWindowingKeyPrev && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTarget && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTargetAnim && return unsafe_load(_getptr(x, f)) + f === :NavWindowingListWindow && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTimer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingHighlightAlpha && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleLayer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleKey && return unsafe_load(_getptr(x, f)) + f === :NavWindowingAccumDeltaPos && return _getptr(x, f) + f === :NavWindowingAccumDeltaSize && return _getptr(x, f) + f === :DimBgRatio && return unsafe_load(_getptr(x, f)) + f === :DragDropActive && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinSource && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinTarget && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropMouseButton && return unsafe_load(_getptr(x, f)) + f === :DragDropPayload && return _getptr(x, f) + f === :DragDropTargetRect && return _getptr(x, f) + f === :DragDropTargetClipRect && return _getptr(x, f) + f === :DragDropTargetId && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurrRectSurface && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurr && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdPrev && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropHoldJustPressedId && return unsafe_load(_getptr(x, f)) + f === :DragDropPayloadBufHeap && return _getptr(x, f) + f === :DragDropPayloadBufLocal && return _getptr(x, f) + f === :ClipperTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :ClipperTempData && return _getptr(x, f) + f === :CurrentTable && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInTable && return unsafe_load(_getptr(x, f)) + f === :TablesTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :TablesTempData && return _getptr(x, f) + f === :Tables && return _getptr(x, f) + f === :TablesLastTimeActive && return _getptr(x, f) + f === :DrawChannelsTempMergeBuffer && return _getptr(x, f) + f === :CurrentTabBar && return unsafe_load(_getptr(x, f)) + f === :TabBars && return _getptr(x, f) + f === :CurrentTabBarStack && return _getptr(x, f) + f === :ShrinkWidthBuffer && return _getptr(x, f) + f === :HoverItemDelayId && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayClearTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :HoverWindowUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :MouseCursor && return unsafe_load(_getptr(x, f)) + f === :MouseStationaryTimer && return unsafe_load(_getptr(x, f)) + f === :MouseLastValidPos && return _getptr(x, f) + f === :InputTextState && return _getptr(x, f) + f === :InputTextDeactivatedState && return _getptr(x, f) + f === :InputTextPasswordFont && return _getptr(x, f) + f === :TempInputId && return unsafe_load(_getptr(x, f)) + f === :DataTypeZeroValue && return _getptr(x, f) + f === :BeginMenuDepth && return unsafe_load(_getptr(x, f)) + f === :BeginComboDepth && return unsafe_load(_getptr(x, f)) + f === :ColorEditOptions && return unsafe_load(_getptr(x, f)) + f === :ColorEditCurrentID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedHue && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedSat && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedColor && return unsafe_load(_getptr(x, f)) + f === :ColorPickerRef && return _getptr(x, f) + f === :ComboPreviewData && return _getptr(x, f) + f === :WindowResizeBorderExpectedRect && return _getptr(x, f) + f === :WindowResizeRelativeMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSeekMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarClickDeltaToGrabCenter && return unsafe_load(_getptr(x, f)) + f === :SliderGrabClickOffset && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :DragSpeedDefaultRatio && return unsafe_load(_getptr(x, f)) + f === :DisabledAlphaBackup && return unsafe_load(_getptr(x, f)) + f === :DisabledStackSize && return unsafe_load(_getptr(x, f)) + f === :LockMarkEdited && return unsafe_load(_getptr(x, f)) + f === :TooltipOverrideCount && return unsafe_load(_getptr(x, f)) + f === :ClipboardHandlerData && return _getptr(x, f) + f === :MenusIdSubmittedThisFrame && return _getptr(x, f) + f === :TypingSelectState && return _getptr(x, f) + f === :PlatformImeData && return _getptr(x, f) + f === :PlatformImeDataPrev && return _getptr(x, f) + f === :PlatformImeViewport && return unsafe_load(_getptr(x, f)) + f === :DockContext && return _getptr(x, f) + f === :DockNodeWindowMenuHandler && return unsafe_load(_getptr(x, f)) + f === :SettingsLoaded && return unsafe_load(_getptr(x, f)) + f === :SettingsDirtyTimer && return unsafe_load(_getptr(x, f)) + f === :SettingsIniData && return _getptr(x, f) + f === :SettingsHandlers && return _getptr(x, f) + f === :SettingsWindows && return _getptr(x, f) + f === :SettingsTables && return _getptr(x, f) + f === :Hooks && return _getptr(x, f) + f === :HookIdNext && return unsafe_load(_getptr(x, f)) + f === :LocalizationTable && return _getptr(x, f) + f === :LogEnabled && return unsafe_load(_getptr(x, f)) + f === :LogType && return unsafe_load(_getptr(x, f)) + f === :LogFile && return unsafe_load(_getptr(x, f)) + f === :LogBuffer && return _getptr(x, f) + f === :LogNextPrefix && return unsafe_load(_getptr(x, f)) + f === :LogNextSuffix && return unsafe_load(_getptr(x, f)) + f === :LogLinePosY && return unsafe_load(_getptr(x, f)) + f === :LogLineFirstItem && return unsafe_load(_getptr(x, f)) + f === :LogDepthRef && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpand && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpandDefault && return unsafe_load(_getptr(x, f)) + f === :DebugLogFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogBuf && return _getptr(x, f) + f === :DebugLogIndex && return _getptr(x, f) + f === :DebugLogAutoDisableFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogAutoDisableFrames && return unsafe_load(_getptr(x, f)) + f === :DebugLocateFrames && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInLocateId && return unsafe_load(_getptr(x, f)) + f === :DebugBreakKeyChord && return unsafe_load(_getptr(x, f)) + f === :DebugBeginReturnValueCullDepth && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerActive && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerMouseButton && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerBreakId && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorTime && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorBackup && return _getptr(x, f) + f === :DebugMetricsConfig && return _getptr(x, f) + f === :DebugIDStackTool && return _getptr(x, f) + f === :DebugAllocInfo && return _getptr(x, f) + f === :DebugHoveredDockNode && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrame && return _getptr(x, f) + f === :FramerateSecPerFrameIdx && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameCount && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameAccum && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouseNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboardNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantTextInputNextFrame && return unsafe_load(_getptr(x, f)) + f === :TempBuffer && return _getptr(x, f) + f === :TempKeychordName && return _getptr(x, f) return getfield(x, f) end @@ -3232,7 +4282,7 @@ end function Base.setproperty!(x::Ptr{ImGuiContext}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -3277,16 +4327,24 @@ struct ImGuiSizeCallbackData CurrentSize::ImVec2 DesiredSize::ImVec2 end -function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) +function _getptr(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) f === :UserData && return Ptr{Ptr{Cvoid}}(x + 0) f === :Pos && return Ptr{ImVec2}(x + 8) f === :CurrentSize && return Ptr{ImVec2}(x + 16) f === :DesiredSize && return Ptr{ImVec2}(x + 24) + error("Unrecognized field of type `ImGuiSizeCallbackData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :CurrentSize && return _getptr(x, f) + f === :DesiredSize && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiSizeCallbackData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -4379,7 +5437,7 @@ struct ImGuiTableColumnSettings data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :WidthOrWeight && return Ptr{Cfloat}(x + 0) f === :UserID && return Ptr{ImGuiID}(x + 4) f === :Index && return Ptr{ImGuiTableColumnIdx}(x + 8) @@ -4388,6 +5446,18 @@ function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :SortDirection && return (Ptr{ImU8}(x + 12), 16, 2) f === :IsEnabled && return (Ptr{ImU8}(x + 12), 18, 1) f === :IsStretch && return (Ptr{ImU8}(x + 12), 19, 1) + error("Unrecognized field of type `ImGuiTableColumnSettings`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) + f === :WidthOrWeight && return unsafe_load(_getptr(x, f)) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :Index && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsStretch && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -4415,7 +5485,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumnSettings}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) diff --git a/lib/armv7l-linux-gnueabihf.jl b/lib/armv7l-linux-gnueabihf.jl index af59273..01ca14c 100644 --- a/lib/armv7l-linux-gnueabihf.jl +++ b/lib/armv7l-linux-gnueabihf.jl @@ -1,4 +1,4 @@ -using CEnum +using CEnum: CEnum, @cenum to_c_type(t::Type) = t to_c_type_pairs(va_list) = map(enumerate(to_c_type.(va_list))) do (ind, type) @@ -32,16 +32,24 @@ struct ImVec4 z::Cfloat w::Cfloat end -function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) +function _getptr(x::Ptr{ImVec4}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) f === :z && return Ptr{Cfloat}(x + 8) f === :w && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImVec4`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) + f === :z && return unsafe_load(_getptr(x, f)) + f === :w && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec4}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -56,7 +64,7 @@ struct ImDrawCmd UserCallback::ImDrawCallback UserCallbackData::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) +function _getptr(x::Ptr{ImDrawCmd}, f::Symbol) f === :ClipRect && return Ptr{ImVec4}(x + 0) f === :TextureId && return Ptr{ImTextureID}(x + 16) f === :VtxOffset && return Ptr{Cuint}(x + 20) @@ -64,11 +72,22 @@ function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) f === :ElemCount && return Ptr{Cuint}(x + 28) f === :UserCallback && return Ptr{ImDrawCallback}(x + 32) f === :UserCallbackData && return Ptr{Ptr{Cvoid}}(x + 36) + error("Unrecognized field of type `ImDrawCmd`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) + f === :ClipRect && return _getptr(x, f) + f === :TextureId && return unsafe_load(_getptr(x, f)) + f === :VtxOffset && return unsafe_load(_getptr(x, f)) + f === :IdxOffset && return unsafe_load(_getptr(x, f)) + f === :ElemCount && return unsafe_load(_getptr(x, f)) + f === :UserCallback && return unsafe_load(_getptr(x, f)) + f === :UserCallbackData && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawCmd}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -95,14 +114,20 @@ struct ImVec2 x::Cfloat y::Cfloat end -function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) +function _getptr(x::Ptr{ImVec2}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) + error("Unrecognized field of type `ImVec2`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec2}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -119,6 +144,24 @@ struct ImVector_ImDrawVert Capacity::Cint Data::Ptr{ImDrawVert} end +function _getptr(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return Ptr{Cint}(x + 0) + f === :Capacity && return Ptr{Cint}(x + 4) + f === :Data && return Ptr{Ptr{ImDrawVert}}(x + 8) + error("Unrecognized field of type `ImVector_ImDrawVert`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return unsafe_load(_getptr(x, f)) + f === :Capacity && return unsafe_load(_getptr(x, f)) + f === :Data && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImVector_ImDrawVert}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImDrawListFlags = Cint @@ -142,7 +185,7 @@ struct ImFontGlyph data::NTuple{40, UInt8} end -function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) +function _getptr(x::Ptr{ImFontGlyph}, f::Symbol) f === :Colored && return (Ptr{Cuint}(x + 0), 0, 1) f === :Visible && return (Ptr{Cuint}(x + 0), 1, 1) f === :Codepoint && return (Ptr{Cuint}(x + 0), 2, 30) @@ -155,6 +198,22 @@ function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) f === :V0 && return Ptr{Cfloat}(x + 28) f === :U1 && return Ptr{Cfloat}(x + 32) f === :V1 && return Ptr{Cfloat}(x + 36) + error("Unrecognized field of type `ImFontGlyph`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) + f === :Colored && return unsafe_load(_getptr(x, f)) + f === :Visible && return unsafe_load(_getptr(x, f)) + f === :Codepoint && return unsafe_load(_getptr(x, f)) + f === :AdvanceX && return unsafe_load(_getptr(x, f)) + f === :X0 && return unsafe_load(_getptr(x, f)) + f === :Y0 && return unsafe_load(_getptr(x, f)) + f === :X1 && return unsafe_load(_getptr(x, f)) + f === :Y1 && return unsafe_load(_getptr(x, f)) + f === :U0 && return unsafe_load(_getptr(x, f)) + f === :V0 && return unsafe_load(_getptr(x, f)) + f === :U1 && return unsafe_load(_getptr(x, f)) + f === :V1 && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -182,7 +241,7 @@ end function Base.setproperty!(x::Ptr{ImFontGlyph}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -270,7 +329,7 @@ function Base.getproperty(x::ImFontConfig, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) +function _getptr(x::Ptr{ImFontConfig}, f::Symbol) f === :FontData && return Ptr{Ptr{Cvoid}}(x + 0) f === :FontDataSize && return Ptr{Cint}(x + 4) f === :FontDataOwnedByAtlas && return Ptr{Bool}(x + 8) @@ -291,11 +350,35 @@ function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) f === :EllipsisChar && return Ptr{ImWchar}(x + 76) f === :Name && return Ptr{NTuple{40, Cchar}}(x + 78) f === :DstFont && return Ptr{Ptr{ImFont}}(x + 120) + error("Unrecognized field of type `ImFontConfig`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) + f === :FontData && return unsafe_load(_getptr(x, f)) + f === :FontDataSize && return unsafe_load(_getptr(x, f)) + f === :FontDataOwnedByAtlas && return unsafe_load(_getptr(x, f)) + f === :FontNo && return unsafe_load(_getptr(x, f)) + f === :SizePixels && return unsafe_load(_getptr(x, f)) + f === :OversampleH && return unsafe_load(_getptr(x, f)) + f === :OversampleV && return unsafe_load(_getptr(x, f)) + f === :PixelSnapH && return unsafe_load(_getptr(x, f)) + f === :GlyphExtraSpacing && return _getptr(x, f) + f === :GlyphOffset && return _getptr(x, f) + f === :GlyphRanges && return unsafe_load(_getptr(x, f)) + f === :GlyphMinAdvanceX && return unsafe_load(_getptr(x, f)) + f === :GlyphMaxAdvanceX && return unsafe_load(_getptr(x, f)) + f === :MergeMode && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :RasterizerMultiply && return unsafe_load(_getptr(x, f)) + f === :RasterizerDensity && return unsafe_load(_getptr(x, f)) + f === :EllipsisChar && return unsafe_load(_getptr(x, f)) + f === :Name && return _getptr(x, f) + f === :DstFont && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontConfig}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImFontConfig @@ -332,7 +415,7 @@ struct ImFontAtlas PackIdMouseCursors::Cint PackIdLines::Cint end -function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) +function _getptr(x::Ptr{ImFontAtlas}, f::Symbol) f === :Flags && return Ptr{ImFontAtlasFlags}(x + 0) f === :TexID && return Ptr{ImTextureID}(x + 4) f === :TexDesiredWidth && return Ptr{Cint}(x + 8) @@ -355,11 +438,37 @@ function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) f === :FontBuilderFlags && return Ptr{Cuint}(x + 1124) f === :PackIdMouseCursors && return Ptr{Cint}(x + 1128) f === :PackIdLines && return Ptr{Cint}(x + 1132) + error("Unrecognized field of type `ImFontAtlas`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :TexID && return unsafe_load(_getptr(x, f)) + f === :TexDesiredWidth && return unsafe_load(_getptr(x, f)) + f === :TexGlyphPadding && return unsafe_load(_getptr(x, f)) + f === :Locked && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :TexReady && return unsafe_load(_getptr(x, f)) + f === :TexPixelsUseColors && return unsafe_load(_getptr(x, f)) + f === :TexPixelsAlpha8 && return unsafe_load(_getptr(x, f)) + f === :TexPixelsRGBA32 && return unsafe_load(_getptr(x, f)) + f === :TexWidth && return unsafe_load(_getptr(x, f)) + f === :TexHeight && return unsafe_load(_getptr(x, f)) + f === :TexUvScale && return _getptr(x, f) + f === :TexUvWhitePixel && return _getptr(x, f) + f === :Fonts && return _getptr(x, f) + f === :CustomRects && return _getptr(x, f) + f === :ConfigData && return _getptr(x, f) + f === :TexUvLines && return _getptr(x, f) + f === :FontBuilderIO && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :PackIdMouseCursors && return unsafe_load(_getptr(x, f)) + f === :PackIdLines && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontAtlas}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -456,7 +565,7 @@ struct ImDrawList _FringeScale::Cfloat _OwnerName::Ptr{Cchar} end -function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) +function _getptr(x::Ptr{ImDrawList}, f::Symbol) f === :CmdBuffer && return Ptr{ImVector_ImDrawCmd}(x + 0) f === :IdxBuffer && return Ptr{ImVector_ImDrawIdx}(x + 12) f === :VtxBuffer && return Ptr{ImVector_ImDrawVert}(x + 24) @@ -472,11 +581,30 @@ function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) f === :_TextureIdStack && return Ptr{ImVector_ImTextureID}(x + 124) f === :_FringeScale && return Ptr{Cfloat}(x + 136) f === :_OwnerName && return Ptr{Ptr{Cchar}}(x + 140) + error("Unrecognized field of type `ImDrawList`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) + f === :CmdBuffer && return _getptr(x, f) + f === :IdxBuffer && return _getptr(x, f) + f === :VtxBuffer && return _getptr(x, f) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :_VtxCurrentIdx && return unsafe_load(_getptr(x, f)) + f === :_Data && return unsafe_load(_getptr(x, f)) + f === :_VtxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_IdxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_Path && return _getptr(x, f) + f === :_CmdHeader && return _getptr(x, f) + f === :_Splitter && return _getptr(x, f) + f === :_ClipRectStack && return _getptr(x, f) + f === :_TextureIdStack && return _getptr(x, f) + f === :_FringeScale && return unsafe_load(_getptr(x, f)) + f === :_OwnerName && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawList}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -515,7 +643,7 @@ function Base.getproperty(x::ImGuiViewport, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) +function _getptr(x::Ptr{ImGuiViewport}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiViewportFlags}(x + 4) f === :Pos && return Ptr{ImVec2}(x + 8) @@ -533,11 +661,32 @@ function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) f === :PlatformRequestMove && return Ptr{Bool}(x + 69) f === :PlatformRequestResize && return Ptr{Bool}(x + 70) f === :PlatformRequestClose && return Ptr{Bool}(x + 71) + error("Unrecognized field of type `ImGuiViewport`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :ParentViewportId && return unsafe_load(_getptr(x, f)) + f === :DrawData && return unsafe_load(_getptr(x, f)) + f === :RendererUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) + f === :PlatformHandleRaw && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowCreated && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestMove && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestResize && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestClose && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiViewport}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImDrawData @@ -551,7 +700,7 @@ struct ImDrawData FramebufferScale::ImVec2 OwnerViewport::Ptr{ImGuiViewport} end -function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) +function _getptr(x::Ptr{ImDrawData}, f::Symbol) f === :Valid && return Ptr{Bool}(x + 0) f === :CmdListsCount && return Ptr{Cint}(x + 4) f === :TotalIdxCount && return Ptr{Cint}(x + 8) @@ -561,11 +710,24 @@ function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) f === :DisplaySize && return Ptr{ImVec2}(x + 36) f === :FramebufferScale && return Ptr{ImVec2}(x + 44) f === :OwnerViewport && return Ptr{Ptr{ImGuiViewport}}(x + 52) + error("Unrecognized field of type `ImDrawData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) + f === :Valid && return unsafe_load(_getptr(x, f)) + f === :CmdListsCount && return unsafe_load(_getptr(x, f)) + f === :TotalIdxCount && return unsafe_load(_getptr(x, f)) + f === :TotalVtxCount && return unsafe_load(_getptr(x, f)) + f === :CmdLists && return _getptr(x, f) + f === :DisplayPos && return _getptr(x, f) + f === :DisplaySize && return _getptr(x, f) + f === :FramebufferScale && return _getptr(x, f) + f === :OwnerViewport && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -602,6 +764,26 @@ struct ImGuiKeyData DownDurationPrev::Cfloat AnalogValue::Cfloat end +function _getptr(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return Ptr{Bool}(x + 0) + f === :DownDuration && return Ptr{Cfloat}(x + 4) + f === :DownDurationPrev && return Ptr{Cfloat}(x + 8) + f === :AnalogValue && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImGuiKeyData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return unsafe_load(_getptr(x, f)) + f === :DownDuration && return unsafe_load(_getptr(x, f)) + f === :DownDurationPrev && return unsafe_load(_getptr(x, f)) + f === :AnalogValue && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImGuiKeyData}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImU16 = Cushort @@ -715,7 +897,7 @@ function Base.getproperty(x::ImGuiIO, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiIO}, f::Symbol) f === :ConfigFlags && return Ptr{ImGuiConfigFlags}(x + 0) f === :BackendFlags && return Ptr{ImGuiBackendFlags}(x + 4) f === :DisplaySize && return Ptr{ImVec2}(x + 8) @@ -816,11 +998,115 @@ function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) f === :BackendUsingLegacyNavInputArray && return Ptr{Bool}(x + 2939) f === :InputQueueSurrogate && return Ptr{ImWchar16}(x + 2940) f === :InputQueueCharacters && return Ptr{ImVector_ImWchar}(x + 2944) + error("Unrecognized field of type `ImGuiIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) + f === :ConfigFlags && return unsafe_load(_getptr(x, f)) + f === :BackendFlags && return unsafe_load(_getptr(x, f)) + f === :DisplaySize && return _getptr(x, f) + f === :DeltaTime && return unsafe_load(_getptr(x, f)) + f === :IniSavingRate && return unsafe_load(_getptr(x, f)) + f === :IniFilename && return unsafe_load(_getptr(x, f)) + f === :LogFilename && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Fonts && return unsafe_load(_getptr(x, f)) + f === :FontGlobalScale && return unsafe_load(_getptr(x, f)) + f === :FontAllowUserScaling && return unsafe_load(_getptr(x, f)) + f === :FontDefault && return unsafe_load(_getptr(x, f)) + f === :DisplayFramebufferScale && return _getptr(x, f) + f === :ConfigDockingNoSplit && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingWithShift && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingAlwaysTabBar && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingTransparentPayload && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoAutoMerge && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoTaskBarIcon && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDecoration && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDefaultParent && return unsafe_load(_getptr(x, f)) + f === :MouseDrawCursor && return unsafe_load(_getptr(x, f)) + f === :ConfigMacOSXBehaviors && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTrickleEventQueue && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextCursorBlink && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextEnterKeepActive && return unsafe_load(_getptr(x, f)) + f === :ConfigDragClickToInputText && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsResizeFromEdges && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsMoveFromTitleBarOnly && return unsafe_load(_getptr(x, f)) + f === :ConfigMemoryCompactTimer && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickTime && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickMaxDist && return unsafe_load(_getptr(x, f)) + f === :MouseDragThreshold && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatDelay && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatRate && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIsDebuggerPresent && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueOnce && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueLoop && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIgnoreFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIniSettings && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformName && return unsafe_load(_getptr(x, f)) + f === :BackendRendererName && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformUserData && return unsafe_load(_getptr(x, f)) + f === :BackendRendererUserData && return unsafe_load(_getptr(x, f)) + f === :BackendLanguageUserData && return unsafe_load(_getptr(x, f)) + f === :GetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :SetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :ClipboardUserData && return unsafe_load(_getptr(x, f)) + f === :SetPlatformImeDataFn && return unsafe_load(_getptr(x, f)) + f === :PlatformLocaleDecimalPoint && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouse && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboard && return unsafe_load(_getptr(x, f)) + f === :WantTextInput && return unsafe_load(_getptr(x, f)) + f === :WantSetMousePos && return unsafe_load(_getptr(x, f)) + f === :WantSaveIniSettings && return unsafe_load(_getptr(x, f)) + f === :NavActive && return unsafe_load(_getptr(x, f)) + f === :NavVisible && return unsafe_load(_getptr(x, f)) + f === :Framerate && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderVertices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderIndices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderWindows && return unsafe_load(_getptr(x, f)) + f === :MetricsActiveWindows && return unsafe_load(_getptr(x, f)) + f === :MouseDelta && return _getptr(x, f) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseDown && return _getptr(x, f) + f === :MouseWheel && return unsafe_load(_getptr(x, f)) + f === :MouseWheelH && return unsafe_load(_getptr(x, f)) + f === :MouseSource && return unsafe_load(_getptr(x, f)) + f === :MouseHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :KeyCtrl && return unsafe_load(_getptr(x, f)) + f === :KeyShift && return unsafe_load(_getptr(x, f)) + f === :KeyAlt && return unsafe_load(_getptr(x, f)) + f === :KeySuper && return unsafe_load(_getptr(x, f)) + f === :KeyMods && return unsafe_load(_getptr(x, f)) + f === :KeysData && return _getptr(x, f) + f === :WantCaptureMouseUnlessPopupClose && return unsafe_load(_getptr(x, f)) + f === :MousePosPrev && return _getptr(x, f) + f === :MouseClickedPos && return _getptr(x, f) + f === :MouseClickedTime && return _getptr(x, f) + f === :MouseClicked && return _getptr(x, f) + f === :MouseDoubleClicked && return _getptr(x, f) + f === :MouseClickedCount && return _getptr(x, f) + f === :MouseClickedLastCount && return _getptr(x, f) + f === :MouseReleased && return _getptr(x, f) + f === :MouseDownOwned && return _getptr(x, f) + f === :MouseDownOwnedUnlessPopupClose && return _getptr(x, f) + f === :MouseWheelRequestAxisSwap && return unsafe_load(_getptr(x, f)) + f === :MouseCtrlLeftAsRightClick && return unsafe_load(_getptr(x, f)) + f === :MouseDownDuration && return _getptr(x, f) + f === :MouseDownDurationPrev && return _getptr(x, f) + f === :MouseDragMaxDistanceAbs && return _getptr(x, f) + f === :MouseDragMaxDistanceSqr && return _getptr(x, f) + f === :PenPressure && return unsafe_load(_getptr(x, f)) + f === :AppFocusLost && return unsafe_load(_getptr(x, f)) + f === :AppAcceptingEvents && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyKeyArrays && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyNavInputArray && return unsafe_load(_getptr(x, f)) + f === :InputQueueSurrogate && return unsafe_load(_getptr(x, f)) + f === :InputQueueCharacters && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImGuiPlatformMonitor @@ -831,18 +1117,28 @@ struct ImGuiPlatformMonitor DpiScale::Cfloat PlatformHandle::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) f === :MainPos && return Ptr{ImVec2}(x + 0) f === :MainSize && return Ptr{ImVec2}(x + 8) f === :WorkPos && return Ptr{ImVec2}(x + 16) f === :WorkSize && return Ptr{ImVec2}(x + 24) f === :DpiScale && return Ptr{Cfloat}(x + 32) f === :PlatformHandle && return Ptr{Ptr{Cvoid}}(x + 36) + error("Unrecognized field of type `ImGuiPlatformMonitor`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) + f === :MainPos && return _getptr(x, f) + f === :MainSize && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformMonitor}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -885,7 +1181,7 @@ struct ImGuiPlatformIO Monitors::ImVector_ImGuiPlatformMonitor Viewports::ImVector_ImGuiViewportPtr end -function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Platform_CreateWindow && return Ptr{Ptr{Cvoid}}(x + 0) f === :Platform_DestroyWindow && return Ptr{Ptr{Cvoid}}(x + 4) f === :Platform_ShowWindow && return Ptr{Ptr{Cvoid}}(x + 8) @@ -911,11 +1207,40 @@ function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Renderer_SwapBuffers && return Ptr{Ptr{Cvoid}}(x + 88) f === :Monitors && return Ptr{ImVector_ImGuiPlatformMonitor}(x + 92) f === :Viewports && return Ptr{ImVector_ImGuiViewportPtr}(x + 104) + error("Unrecognized field of type `ImGuiPlatformIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) + f === :Platform_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_ShowWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowMinimized && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowTitle && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowAlpha && return unsafe_load(_getptr(x, f)) + f === :Platform_UpdateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowDpiScale && return unsafe_load(_getptr(x, f)) + f === :Platform_OnChangedViewport && return unsafe_load(_getptr(x, f)) + f === :Platform_CreateVkSurface && return unsafe_load(_getptr(x, f)) + f === :Renderer_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Renderer_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Monitors && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -985,7 +1310,7 @@ struct ImGuiStyle HoverFlagsForTooltipMouse::ImGuiHoveredFlags HoverFlagsForTooltipNav::ImGuiHoveredFlags end -function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyle}, f::Symbol) f === :Alpha && return Ptr{Cfloat}(x + 0) f === :DisabledAlpha && return Ptr{Cfloat}(x + 4) f === :WindowPadding && return Ptr{ImVec2}(x + 8) @@ -1039,11 +1364,68 @@ function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) f === :HoverDelayNormal && return Ptr{Cfloat}(x + 1128) f === :HoverFlagsForTooltipMouse && return Ptr{ImGuiHoveredFlags}(x + 1132) f === :HoverFlagsForTooltipNav && return Ptr{ImGuiHoveredFlags}(x + 1136) + error("Unrecognized field of type `ImGuiStyle`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) + f === :Alpha && return unsafe_load(_getptr(x, f)) + f === :DisabledAlpha && return unsafe_load(_getptr(x, f)) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :WindowMinSize && return _getptr(x, f) + f === :WindowTitleAlign && return _getptr(x, f) + f === :WindowMenuButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ChildRounding && return unsafe_load(_getptr(x, f)) + f === :ChildBorderSize && return unsafe_load(_getptr(x, f)) + f === :PopupRounding && return unsafe_load(_getptr(x, f)) + f === :PopupBorderSize && return unsafe_load(_getptr(x, f)) + f === :FramePadding && return _getptr(x, f) + f === :FrameRounding && return unsafe_load(_getptr(x, f)) + f === :FrameBorderSize && return unsafe_load(_getptr(x, f)) + f === :ItemSpacing && return _getptr(x, f) + f === :ItemInnerSpacing && return _getptr(x, f) + f === :CellPadding && return _getptr(x, f) + f === :TouchExtraPadding && return _getptr(x, f) + f === :IndentSpacing && return unsafe_load(_getptr(x, f)) + f === :ColumnsMinSpacing && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSize && return unsafe_load(_getptr(x, f)) + f === :ScrollbarRounding && return unsafe_load(_getptr(x, f)) + f === :GrabMinSize && return unsafe_load(_getptr(x, f)) + f === :GrabRounding && return unsafe_load(_getptr(x, f)) + f === :LogSliderDeadzone && return unsafe_load(_getptr(x, f)) + f === :TabRounding && return unsafe_load(_getptr(x, f)) + f === :TabBorderSize && return unsafe_load(_getptr(x, f)) + f === :TabMinWidthForCloseButton && return unsafe_load(_getptr(x, f)) + f === :TabBarBorderSize && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersAngle && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersTextAlign && return _getptr(x, f) + f === :ColorButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ButtonTextAlign && return _getptr(x, f) + f === :SelectableTextAlign && return _getptr(x, f) + f === :SeparatorTextBorderSize && return unsafe_load(_getptr(x, f)) + f === :SeparatorTextAlign && return _getptr(x, f) + f === :SeparatorTextPadding && return _getptr(x, f) + f === :DisplayWindowPadding && return _getptr(x, f) + f === :DisplaySafeAreaPadding && return _getptr(x, f) + f === :DockingSeparatorSize && return unsafe_load(_getptr(x, f)) + f === :MouseCursorScale && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLines && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLinesUseTex && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedFill && return unsafe_load(_getptr(x, f)) + f === :CurveTessellationTol && return unsafe_load(_getptr(x, f)) + f === :CircleTessellationMaxError && return unsafe_load(_getptr(x, f)) + f === :Colors && return _getptr(x, f) + f === :HoverStationaryDelay && return unsafe_load(_getptr(x, f)) + f === :HoverDelayShort && return unsafe_load(_getptr(x, f)) + f === :HoverDelayNormal && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipMouse && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipNav && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiStyle}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -1071,7 +1453,7 @@ struct ImGuiInputEvent data::NTuple{28, UInt8} end -function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) +function _getptr(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Type && return Ptr{ImGuiInputEventType}(x + 0) f === :Source && return Ptr{ImGuiInputSource}(x + 4) f === :EventId && return Ptr{ImU32}(x + 8) @@ -1083,6 +1465,21 @@ function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Text && return Ptr{ImGuiInputEventText}(x + 12) f === :AppFocused && return Ptr{ImGuiInputEventAppFocused}(x + 12) f === :AddedByTestEngine && return Ptr{Bool}(x + 24) + error("Unrecognized field of type `ImGuiInputEvent`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) + f === :Type && return unsafe_load(_getptr(x, f)) + f === :Source && return unsafe_load(_getptr(x, f)) + f === :EventId && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseWheel && return _getptr(x, f) + f === :MouseButton && return _getptr(x, f) + f === :MouseViewport && return _getptr(x, f) + f === :Key && return _getptr(x, f) + f === :Text && return _getptr(x, f) + f === :AppFocused && return _getptr(x, f) + f === :AddedByTestEngine && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1094,7 +1491,7 @@ function Base.getproperty(x::ImGuiInputEvent, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiInputEvent}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiInputEvent @@ -1202,11 +1599,19 @@ struct ImGuiStoragePair data::NTuple{8, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) +function _getptr(x::Ptr{ImGuiStoragePair}, f::Symbol) f === :key && return Ptr{ImGuiID}(x + 0) f === :val_i && return Ptr{Cint}(x + 4) f === :val_f && return Ptr{Cfloat}(x + 4) f === :val_p && return Ptr{Ptr{Cvoid}}(x + 4) + error("Unrecognized field of type `ImGuiStoragePair`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) + f === :key && return unsafe_load(_getptr(x, f)) + f === :val_i && return unsafe_load(_getptr(x, f)) + f === :val_f && return unsafe_load(_getptr(x, f)) + f === :val_p && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1218,7 +1623,7 @@ function Base.getproperty(x::ImGuiStoragePair, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStoragePair}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStoragePair @@ -1426,7 +1831,7 @@ struct ImGuiDockNode data::NTuple{168, UInt8} end -function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) +function _getptr(x::Ptr{ImGuiDockNode}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :SharedFlags && return Ptr{ImGuiDockNodeFlags}(x + 4) f === :LocalFlags && return Ptr{ImGuiDockNodeFlags}(x + 8) @@ -1469,6 +1874,52 @@ function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) f === :WantMouseMove && return (Ptr{Bool}(x + 164), 17, 1) f === :WantHiddenTabBarUpdate && return (Ptr{Bool}(x + 164), 18, 1) f === :WantHiddenTabBarToggle && return (Ptr{Bool}(x + 164), 19, 1) + error("Unrecognized field of type `ImGuiDockNode`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :SharedFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlagsInWindows && return unsafe_load(_getptr(x, f)) + f === :MergedFlags && return unsafe_load(_getptr(x, f)) + f === :State && return unsafe_load(_getptr(x, f)) + f === :ParentNode && return unsafe_load(_getptr(x, f)) + f === :ChildNodes && return _getptr(x, f) + f === :Windows && return _getptr(x, f) + f === :TabBar && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeRef && return _getptr(x, f) + f === :SplitAxis && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :LastBgColor && return unsafe_load(_getptr(x, f)) + f === :HostWindow && return unsafe_load(_getptr(x, f)) + f === :VisibleWindow && return unsafe_load(_getptr(x, f)) + f === :CentralNode && return unsafe_load(_getptr(x, f)) + f === :OnlyNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :CountNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :LastFrameAlive && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameFocused && return unsafe_load(_getptr(x, f)) + f === :LastFocusedNodeId && return unsafe_load(_getptr(x, f)) + f === :SelectedTabId && return unsafe_load(_getptr(x, f)) + f === :WantCloseTabId && return unsafe_load(_getptr(x, f)) + f === :RefViewportId && return unsafe_load(_getptr(x, f)) + f === :AuthorityForPos && return unsafe_load(_getptr(x, f)) + f === :AuthorityForSize && return unsafe_load(_getptr(x, f)) + f === :AuthorityForViewport && return unsafe_load(_getptr(x, f)) + f === :IsVisible && return unsafe_load(_getptr(x, f)) + f === :IsFocused && return unsafe_load(_getptr(x, f)) + f === :IsBgDrawnThisFrame && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :HasWindowMenuButton && return unsafe_load(_getptr(x, f)) + f === :HasCentralNodeChild && return unsafe_load(_getptr(x, f)) + f === :WantCloseAll && return unsafe_load(_getptr(x, f)) + f === :WantLockSizeOnce && return unsafe_load(_getptr(x, f)) + f === :WantMouseMove && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarUpdate && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarToggle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1496,7 +1947,7 @@ end function Base.setproperty!(x::Ptr{ImGuiDockNode}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1521,7 +1972,7 @@ struct ImGuiWindow data::NTuple{1008, UInt8} end -function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) +function _getptr(x::Ptr{ImGuiWindow}, f::Symbol) f === :Ctx && return Ptr{Ptr{ImGuiContext}}(x + 0) f === :Name && return Ptr{Ptr{Cchar}}(x + 4) f === :ID && return Ptr{ImGuiID}(x + 8) @@ -1646,6 +2097,134 @@ function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) f === :DockId && return Ptr{ImGuiID}(x + 984) f === :DockTabItemStatusFlags && return Ptr{ImGuiItemStatusFlags}(x + 988) f === :DockTabItemRect && return Ptr{ImRect}(x + 992) + error("Unrecognized field of type `ImGuiWindow`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :Name && return unsafe_load(_getptr(x, f)) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :FlagsPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ChildFlags && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :Viewport && return unsafe_load(_getptr(x, f)) + f === :ViewportId && return unsafe_load(_getptr(x, f)) + f === :ViewportPos && return _getptr(x, f) + f === :ViewportAllowPlatformMonitorExtend && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeFull && return _getptr(x, f) + f === :ContentSize && return _getptr(x, f) + f === :ContentSizeIdeal && return _getptr(x, f) + f === :ContentSizeExplicit && return _getptr(x, f) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :TitleBarHeight && return unsafe_load(_getptr(x, f)) + f === :MenuBarHeight && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX2 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY2 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeY1 && return unsafe_load(_getptr(x, f)) + f === :NameBufLen && return unsafe_load(_getptr(x, f)) + f === :MoveId && return unsafe_load(_getptr(x, f)) + f === :TabId && return unsafe_load(_getptr(x, f)) + f === :ChildId && return unsafe_load(_getptr(x, f)) + f === :PopupId && return unsafe_load(_getptr(x, f)) + f === :Scroll && return _getptr(x, f) + f === :ScrollMax && return _getptr(x, f) + f === :ScrollTarget && return _getptr(x, f) + f === :ScrollTargetCenterRatio && return _getptr(x, f) + f === :ScrollTargetEdgeSnapDist && return _getptr(x, f) + f === :ScrollbarSizes && return _getptr(x, f) + f === :ScrollbarX && return unsafe_load(_getptr(x, f)) + f === :ScrollbarY && return unsafe_load(_getptr(x, f)) + f === :ViewportOwned && return unsafe_load(_getptr(x, f)) + f === :Active && return unsafe_load(_getptr(x, f)) + f === :WasActive && return unsafe_load(_getptr(x, f)) + f === :WriteAccessed && return unsafe_load(_getptr(x, f)) + f === :Collapsed && return unsafe_load(_getptr(x, f)) + f === :WantCollapseToggle && return unsafe_load(_getptr(x, f)) + f === :SkipItems && return unsafe_load(_getptr(x, f)) + f === :SkipRefresh && return unsafe_load(_getptr(x, f)) + f === :Appearing && return unsafe_load(_getptr(x, f)) + f === :Hidden && return unsafe_load(_getptr(x, f)) + f === :IsFallbackWindow && return unsafe_load(_getptr(x, f)) + f === :IsExplicitChild && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHovered && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHeld && return unsafe_load(_getptr(x, f)) + f === :BeginCount && return unsafe_load(_getptr(x, f)) + f === :BeginCountPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinParent && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinContext && return unsafe_load(_getptr(x, f)) + f === :FocusOrder && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesX && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesY && return unsafe_load(_getptr(x, f)) + f === :AutoFitOnlyGrows && return unsafe_load(_getptr(x, f)) + f === :AutoPosLastDirection && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCanSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCannotSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesForRenderOnly && return unsafe_load(_getptr(x, f)) + f === :DisableInputsFrames && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowSizeAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowCollapsedAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowDockAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosVal && return _getptr(x, f) + f === :SetWindowPosPivot && return _getptr(x, f) + f === :IDStack && return _getptr(x, f) + f === :DC && return _getptr(x, f) + f === :OuterRectClipped && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :ParentWorkRect && return _getptr(x, f) + f === :ClipRect && return _getptr(x, f) + f === :ContentRegionRect && return _getptr(x, f) + f === :HitTestHoleSize && return _getptr(x, f) + f === :HitTestHoleOffset && return _getptr(x, f) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameJustFocused && return unsafe_load(_getptr(x, f)) + f === :LastTimeActive && return unsafe_load(_getptr(x, f)) + f === :ItemWidthDefault && return unsafe_load(_getptr(x, f)) + f === :StateStorage && return _getptr(x, f) + f === :ColumnsStorage && return _getptr(x, f) + f === :FontWindowScale && return unsafe_load(_getptr(x, f)) + f === :FontDpiScale && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :DrawList && return unsafe_load(_getptr(x, f)) + f === :DrawListInst && return _getptr(x, f) + f === :ParentWindow && return unsafe_load(_getptr(x, f)) + f === :ParentWindowInBeginStack && return unsafe_load(_getptr(x, f)) + f === :RootWindow && return unsafe_load(_getptr(x, f)) + f === :RootWindowPopupTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowDockTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowForTitleBarHighlight && return unsafe_load(_getptr(x, f)) + f === :RootWindowForNav && return unsafe_load(_getptr(x, f)) + f === :ParentWindowForFocusRoute && return unsafe_load(_getptr(x, f)) + f === :NavLastChildNavWindow && return unsafe_load(_getptr(x, f)) + f === :NavLastIds && return _getptr(x, f) + f === :NavRectRel && return _getptr(x, f) + f === :NavPreferredScoringPosRel && return _getptr(x, f) + f === :NavRootFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListIdxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListVtxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :DockIsActive && return unsafe_load(_getptr(x, f)) + f === :DockNodeIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabWantClose && return unsafe_load(_getptr(x, f)) + f === :DockOrder && return unsafe_load(_getptr(x, f)) + f === :DockStyle && return _getptr(x, f) + f === :DockNode && return unsafe_load(_getptr(x, f)) + f === :DockNodeAsHost && return unsafe_load(_getptr(x, f)) + f === :DockId && return unsafe_load(_getptr(x, f)) + f === :DockTabItemStatusFlags && return unsafe_load(_getptr(x, f)) + f === :DockTabItemRect && return _getptr(x, f) return getfield(x, f) end @@ -1673,7 +2252,7 @@ end function Base.setproperty!(x::Ptr{ImGuiWindow}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1841,10 +2420,17 @@ struct ImGuiStyleMod data::NTuple{12, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyleMod}, f::Symbol) f === :VarIdx && return Ptr{ImGuiStyleVar}(x + 0) f === :BackupInt && return Ptr{NTuple{2, Cint}}(x + 4) f === :BackupFloat && return Ptr{NTuple{2, Cfloat}}(x + 4) + error("Unrecognized field of type `ImGuiStyleMod`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) + f === :VarIdx && return unsafe_load(_getptr(x, f)) + f === :BackupInt && return _getptr(x, f) + f === :BackupFloat && return _getptr(x, f) return getfield(x, f) end @@ -1856,7 +2442,7 @@ function Base.getproperty(x::ImGuiStyleMod, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStyleMod}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStyleMod @@ -2231,7 +2817,7 @@ struct ImGuiTableColumn data::NTuple{112, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :Flags && return Ptr{ImGuiTableColumnFlags}(x + 0) f === :WidthGiven && return Ptr{Cfloat}(x + 4) f === :MinX && return Ptr{Cfloat}(x + 8) @@ -2273,6 +2859,51 @@ function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :SortDirectionsAvailCount && return (Ptr{ImU8}(x + 108), 10, 2) f === :SortDirectionsAvailMask && return (Ptr{ImU8}(x + 108), 12, 4) f === :SortDirectionsAvailList && return Ptr{ImU8}(x + 110) + error("Unrecognized field of type `ImGuiTableColumn`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :WidthGiven && return unsafe_load(_getptr(x, f)) + f === :MinX && return unsafe_load(_getptr(x, f)) + f === :MaxX && return unsafe_load(_getptr(x, f)) + f === :WidthRequest && return unsafe_load(_getptr(x, f)) + f === :WidthAuto && return unsafe_load(_getptr(x, f)) + f === :StretchWeight && return unsafe_load(_getptr(x, f)) + f === :InitStretchWeightOrWidth && return unsafe_load(_getptr(x, f)) + f === :ClipRect && return _getptr(x, f) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :WorkMinX && return unsafe_load(_getptr(x, f)) + f === :WorkMaxX && return unsafe_load(_getptr(x, f)) + f === :ItemWidth && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXFrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXUnfrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersUsed && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersIdeal && return unsafe_load(_getptr(x, f)) + f === :NameOffset && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IndexWithinEnabledSet && return unsafe_load(_getptr(x, f)) + f === :PrevEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :NextEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :DrawChannelFrozen && return unsafe_load(_getptr(x, f)) + f === :DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabledNextFrame && return unsafe_load(_getptr(x, f)) + f === :IsVisibleX && return unsafe_load(_getptr(x, f)) + f === :IsVisibleY && return unsafe_load(_getptr(x, f)) + f === :IsRequestOutput && return unsafe_load(_getptr(x, f)) + f === :IsSkipItems && return unsafe_load(_getptr(x, f)) + f === :IsPreserveWidthAuto && return unsafe_load(_getptr(x, f)) + f === :NavLayerCurrent && return unsafe_load(_getptr(x, f)) + f === :AutoFitQueue && return unsafe_load(_getptr(x, f)) + f === :CannotSkipItemsQueue && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailCount && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailMask && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailList && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2300,7 +2931,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumn}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2387,7 +3018,7 @@ struct ImGuiTable data::NTuple{512, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) +function _getptr(x::Ptr{ImGuiTable}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiTableFlags}(x + 4) f === :RawData && return Ptr{Ptr{Cvoid}}(x + 8) @@ -2500,6 +3131,122 @@ function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) f === :HasScrollbarYPrev && return Ptr{Bool}(x + 507) f === :MemoryCompacted && return Ptr{Bool}(x + 508) f === :HostSkipItems && return Ptr{Bool}(x + 509) + error("Unrecognized field of type `ImGuiTable`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :RawData && return unsafe_load(_getptr(x, f)) + f === :TempData && return unsafe_load(_getptr(x, f)) + f === :Columns && return _getptr(x, f) + f === :DisplayOrderToIndex && return _getptr(x, f) + f === :RowCellData && return _getptr(x, f) + f === :EnabledMaskByDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :EnabledMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :VisibleMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :SettingsLoadedFlags && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :ColumnsCount && return unsafe_load(_getptr(x, f)) + f === :CurrentRow && return unsafe_load(_getptr(x, f)) + f === :CurrentColumn && return unsafe_load(_getptr(x, f)) + f === :InstanceCurrent && return unsafe_load(_getptr(x, f)) + f === :InstanceInteracted && return unsafe_load(_getptr(x, f)) + f === :RowPosY1 && return unsafe_load(_getptr(x, f)) + f === :RowPosY2 && return unsafe_load(_getptr(x, f)) + f === :RowMinHeight && return unsafe_load(_getptr(x, f)) + f === :RowCellPaddingY && return unsafe_load(_getptr(x, f)) + f === :RowTextBaseline && return unsafe_load(_getptr(x, f)) + f === :RowIndentOffsetX && return unsafe_load(_getptr(x, f)) + f === :RowFlags && return unsafe_load(_getptr(x, f)) + f === :LastRowFlags && return unsafe_load(_getptr(x, f)) + f === :RowBgColorCounter && return unsafe_load(_getptr(x, f)) + f === :RowBgColor && return _getptr(x, f) + f === :BorderColorStrong && return unsafe_load(_getptr(x, f)) + f === :BorderColorLight && return unsafe_load(_getptr(x, f)) + f === :BorderX1 && return unsafe_load(_getptr(x, f)) + f === :BorderX2 && return unsafe_load(_getptr(x, f)) + f === :HostIndentX && return unsafe_load(_getptr(x, f)) + f === :MinColumnWidth && return unsafe_load(_getptr(x, f)) + f === :OuterPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX1 && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX2 && return unsafe_load(_getptr(x, f)) + f === :InnerWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsGivenWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsAutoFitWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsStretchSumWeights && return unsafe_load(_getptr(x, f)) + f === :ResizedColumnNextWidth && return unsafe_load(_getptr(x, f)) + f === :ResizeLockMinContentsX2 && return unsafe_load(_getptr(x, f)) + f === :RefScale && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersHeight && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersSlope && return unsafe_load(_getptr(x, f)) + f === :OuterRect && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :BgClipRect && return _getptr(x, f) + f === :Bg0ClipRectForDrawCmd && return _getptr(x, f) + f === :Bg2ClipRectForDrawCmd && return _getptr(x, f) + f === :HostClipRect && return _getptr(x, f) + f === :HostBackupInnerClipRect && return _getptr(x, f) + f === :OuterWindow && return unsafe_load(_getptr(x, f)) + f === :InnerWindow && return unsafe_load(_getptr(x, f)) + f === :ColumnsNames && return _getptr(x, f) + f === :DrawSplitter && return unsafe_load(_getptr(x, f)) + f === :InstanceDataFirst && return _getptr(x, f) + f === :InstanceDataExtra && return _getptr(x, f) + f === :SortSpecsSingle && return _getptr(x, f) + f === :SortSpecsMulti && return _getptr(x, f) + f === :SortSpecs && return _getptr(x, f) + f === :SortSpecsCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledFixedCount && return unsafe_load(_getptr(x, f)) + f === :DeclColumnsCount && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersCount && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBody && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBorder && return unsafe_load(_getptr(x, f)) + f === :HighlightColumnHeader && return unsafe_load(_getptr(x, f)) + f === :AutoFitSingleColumn && return unsafe_load(_getptr(x, f)) + f === :ResizedColumn && return unsafe_load(_getptr(x, f)) + f === :LastResizedColumn && return unsafe_load(_getptr(x, f)) + f === :HeldHeaderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumnDir && return unsafe_load(_getptr(x, f)) + f === :LeftMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :LeftMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :ContextPopupColumn && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsCount && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsCount && return unsafe_load(_getptr(x, f)) + f === :RowCellDataCurrent && return unsafe_load(_getptr(x, f)) + f === :DummyDrawChannel && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsLayoutLocked && return unsafe_load(_getptr(x, f)) + f === :IsInsideRow && return unsafe_load(_getptr(x, f)) + f === :IsInitializing && return unsafe_load(_getptr(x, f)) + f === :IsSortSpecsDirty && return unsafe_load(_getptr(x, f)) + f === :IsUsingHeaders && return unsafe_load(_getptr(x, f)) + f === :IsContextPopupOpen && return unsafe_load(_getptr(x, f)) + f === :DisableDefaultContextMenu && return unsafe_load(_getptr(x, f)) + f === :IsSettingsRequestLoad && return unsafe_load(_getptr(x, f)) + f === :IsSettingsDirty && return unsafe_load(_getptr(x, f)) + f === :IsDefaultDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IsResetAllRequest && return unsafe_load(_getptr(x, f)) + f === :IsResetDisplayOrderRequest && return unsafe_load(_getptr(x, f)) + f === :IsUnfrozenRows && return unsafe_load(_getptr(x, f)) + f === :IsDefaultSizingPolicy && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdAliveBeforeTable && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdInTable && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYCurr && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYPrev && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :HostSkipItems && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2527,7 +3274,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTable}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2832,12 +3579,21 @@ struct ImGuiStackLevelInfo data::NTuple{64, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) +function _getptr(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :QueryFrameCount && return Ptr{ImS8}(x + 4) f === :QuerySuccess && return Ptr{Bool}(x + 5) f === :DataType && return (Ptr{ImGuiDataType}(x + 4), 16, 8) f === :Desc && return Ptr{NTuple{57, Cchar}}(x + 7) + error("Unrecognized field of type `ImGuiStackLevelInfo`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :QueryFrameCount && return unsafe_load(_getptr(x, f)) + f === :QuerySuccess && return unsafe_load(_getptr(x, f)) + f === :DataType && return unsafe_load(_getptr(x, f)) + f === :Desc && return _getptr(x, f) return getfield(x, f) end @@ -2865,7 +3621,7 @@ end function Base.setproperty!(x::Ptr{ImGuiStackLevelInfo}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2916,7 +3672,7 @@ struct ImGuiContext data::NTuple{13528, UInt8} end -function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) +function _getptr(x::Ptr{ImGuiContext}, f::Symbol) f === :Initialized && return Ptr{Bool}(x + 0) f === :FontAtlasOwnedByContext && return Ptr{Bool}(x + 1) f === :IO && return Ptr{ImGuiIO}(x + 8) @@ -3207,6 +3963,300 @@ function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) f === :WantTextInputNextFrame && return Ptr{Cint}(x + 13444) f === :TempBuffer && return Ptr{ImVector_char}(x + 13448) f === :TempKeychordName && return Ptr{NTuple{64, Cchar}}(x + 13460) + error("Unrecognized field of type `ImGuiContext`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) + f === :Initialized && return unsafe_load(_getptr(x, f)) + f === :FontAtlasOwnedByContext && return unsafe_load(_getptr(x, f)) + f === :IO && return _getptr(x, f) + f === :PlatformIO && return _getptr(x, f) + f === :Style && return _getptr(x, f) + f === :ConfigFlagsCurrFrame && return unsafe_load(_getptr(x, f)) + f === :ConfigFlagsLastFrame && return unsafe_load(_getptr(x, f)) + f === :Font && return unsafe_load(_getptr(x, f)) + f === :FontSize && return unsafe_load(_getptr(x, f)) + f === :FontBaseSize && return unsafe_load(_getptr(x, f)) + f === :CurrentDpiScale && return unsafe_load(_getptr(x, f)) + f === :DrawListSharedData && return _getptr(x, f) + f === :Time && return unsafe_load(_getptr(x, f)) + f === :FrameCount && return unsafe_load(_getptr(x, f)) + f === :FrameCountEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountPlatformEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountRendered && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScope && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScopeWithImplicitWindow && return unsafe_load(_getptr(x, f)) + f === :WithinEndChild && return unsafe_load(_getptr(x, f)) + f === :GcCompactAll && return unsafe_load(_getptr(x, f)) + f === :TestEngineHookItems && return unsafe_load(_getptr(x, f)) + f === :TestEngine && return unsafe_load(_getptr(x, f)) + f === :InputEventsQueue && return _getptr(x, f) + f === :InputEventsTrail && return _getptr(x, f) + f === :InputEventsNextMouseSource && return unsafe_load(_getptr(x, f)) + f === :InputEventsNextEventId && return unsafe_load(_getptr(x, f)) + f === :Windows && return _getptr(x, f) + f === :WindowsFocusOrder && return _getptr(x, f) + f === :WindowsTempSortBuffer && return _getptr(x, f) + f === :CurrentWindowStack && return _getptr(x, f) + f === :WindowsById && return _getptr(x, f) + f === :WindowsActiveCount && return unsafe_load(_getptr(x, f)) + f === :WindowsHoverPadding && return _getptr(x, f) + f === :DebugBreakInWindow && return unsafe_load(_getptr(x, f)) + f === :CurrentWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindowUnderMovingWindow && return unsafe_load(_getptr(x, f)) + f === :MovingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowRefMousePos && return _getptr(x, f) + f === :WheelingWindowStartFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowScrolledFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowReleaseTimer && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowWheelRemainder && return _getptr(x, f) + f === :WheelingAxisAvg && return _getptr(x, f) + f === :DebugHookIdInfo && return unsafe_load(_getptr(x, f)) + f === :HoveredId && return unsafe_load(_getptr(x, f)) + f === :HoveredIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoveredIdTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdNotActiveTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :HoveredIdDisabled && return unsafe_load(_getptr(x, f)) + f === :ItemUnclipByLog && return unsafe_load(_getptr(x, f)) + f === :ActiveId && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsJustActivated && return unsafe_load(_getptr(x, f)) + f === :ActiveIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :ActiveIdNoClearOnFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenPressedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedThisFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdFromShortcut && return unsafe_load(_getptr(x, f)) + f === :ActiveIdMouseButton && return unsafe_load(_getptr(x, f)) + f === :ActiveIdClickOffset && return _getptr(x, f) + f === :ActiveIdWindow && return unsafe_load(_getptr(x, f)) + f === :ActiveIdSource && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameWindow && return unsafe_load(_getptr(x, f)) + f === :LastActiveId && return unsafe_load(_getptr(x, f)) + f === :LastActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeFromNoneTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyboardKeyPressTime && return unsafe_load(_getptr(x, f)) + f === :KeysMayBeCharInput && return _getptr(x, f) + f === :KeysOwnerData && return _getptr(x, f) + f === :KeysRoutingTable && return _getptr(x, f) + f === :ActiveIdUsingNavDirMask && return unsafe_load(_getptr(x, f)) + f === :ActiveIdUsingAllKeyboardKeys && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInShortcutRouting && return unsafe_load(_getptr(x, f)) + f === :CurrentFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :CurrentItemFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLocateId && return unsafe_load(_getptr(x, f)) + f === :NextItemData && return _getptr(x, f) + f === :LastItemData && return _getptr(x, f) + f === :NextWindowData && return _getptr(x, f) + f === :DebugShowGroupRects && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorIdx && return unsafe_load(_getptr(x, f)) + f === :ColorStack && return _getptr(x, f) + f === :StyleVarStack && return _getptr(x, f) + f === :FontStack && return _getptr(x, f) + f === :FocusScopeStack && return _getptr(x, f) + f === :ItemFlagsStack && return _getptr(x, f) + f === :GroupStack && return _getptr(x, f) + f === :OpenPopupStack && return _getptr(x, f) + f === :BeginPopupStack && return _getptr(x, f) + f === :NavTreeNodeStack && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) + f === :CurrentViewport && return unsafe_load(_getptr(x, f)) + f === :MouseViewport && return unsafe_load(_getptr(x, f)) + f === :MouseLastHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :PlatformLastFocusedViewportId && return unsafe_load(_getptr(x, f)) + f === :FallbackMonitor && return _getptr(x, f) + f === :PlatformMonitorsFullWorkRect && return _getptr(x, f) + f === :ViewportCreatedCount && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowsCreatedCount && return unsafe_load(_getptr(x, f)) + f === :ViewportFocusedStampCount && return unsafe_load(_getptr(x, f)) + f === :NavWindow && return unsafe_load(_getptr(x, f)) + f === :NavId && return unsafe_load(_getptr(x, f)) + f === :NavFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavActivateId && return unsafe_load(_getptr(x, f)) + f === :NavActivateDownId && return unsafe_load(_getptr(x, f)) + f === :NavActivatePressedId && return unsafe_load(_getptr(x, f)) + f === :NavActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavFocusRoute && return _getptr(x, f) + f === :NavHighlightActivatedId && return unsafe_load(_getptr(x, f)) + f === :NavHighlightActivatedTimer && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateId && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavInputSource && return unsafe_load(_getptr(x, f)) + f === :NavLayer && return unsafe_load(_getptr(x, f)) + f === :NavLastValidSelectionUserData && return unsafe_load(_getptr(x, f)) + f === :NavIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :NavMousePosDirty && return unsafe_load(_getptr(x, f)) + f === :NavDisableHighlight && return unsafe_load(_getptr(x, f)) + f === :NavDisableMouseHover && return unsafe_load(_getptr(x, f)) + f === :NavAnyRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequestFromMove && return unsafe_load(_getptr(x, f)) + f === :NavInitResult && return _getptr(x, f) + f === :NavMoveSubmitted && return unsafe_load(_getptr(x, f)) + f === :NavMoveScoringItems && return unsafe_load(_getptr(x, f)) + f === :NavMoveForwardToNextFrame && return unsafe_load(_getptr(x, f)) + f === :NavMoveFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveScrollFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavMoveDir && return unsafe_load(_getptr(x, f)) + f === :NavMoveDirForDebug && return unsafe_load(_getptr(x, f)) + f === :NavMoveClipDir && return unsafe_load(_getptr(x, f)) + f === :NavScoringRect && return _getptr(x, f) + f === :NavScoringNoClipRect && return _getptr(x, f) + f === :NavScoringDebugCount && return unsafe_load(_getptr(x, f)) + f === :NavTabbingDir && return unsafe_load(_getptr(x, f)) + f === :NavTabbingCounter && return unsafe_load(_getptr(x, f)) + f === :NavMoveResultLocal && return _getptr(x, f) + f === :NavMoveResultLocalVisible && return _getptr(x, f) + f === :NavMoveResultOther && return _getptr(x, f) + f === :NavTabbingResultFirst && return _getptr(x, f) + f === :ConfigNavWindowingKeyNext && return unsafe_load(_getptr(x, f)) + f === :ConfigNavWindowingKeyPrev && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTarget && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTargetAnim && return unsafe_load(_getptr(x, f)) + f === :NavWindowingListWindow && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTimer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingHighlightAlpha && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleLayer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleKey && return unsafe_load(_getptr(x, f)) + f === :NavWindowingAccumDeltaPos && return _getptr(x, f) + f === :NavWindowingAccumDeltaSize && return _getptr(x, f) + f === :DimBgRatio && return unsafe_load(_getptr(x, f)) + f === :DragDropActive && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinSource && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinTarget && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropMouseButton && return unsafe_load(_getptr(x, f)) + f === :DragDropPayload && return _getptr(x, f) + f === :DragDropTargetRect && return _getptr(x, f) + f === :DragDropTargetClipRect && return _getptr(x, f) + f === :DragDropTargetId && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurrRectSurface && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurr && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdPrev && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropHoldJustPressedId && return unsafe_load(_getptr(x, f)) + f === :DragDropPayloadBufHeap && return _getptr(x, f) + f === :DragDropPayloadBufLocal && return _getptr(x, f) + f === :ClipperTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :ClipperTempData && return _getptr(x, f) + f === :CurrentTable && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInTable && return unsafe_load(_getptr(x, f)) + f === :TablesTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :TablesTempData && return _getptr(x, f) + f === :Tables && return _getptr(x, f) + f === :TablesLastTimeActive && return _getptr(x, f) + f === :DrawChannelsTempMergeBuffer && return _getptr(x, f) + f === :CurrentTabBar && return unsafe_load(_getptr(x, f)) + f === :TabBars && return _getptr(x, f) + f === :CurrentTabBarStack && return _getptr(x, f) + f === :ShrinkWidthBuffer && return _getptr(x, f) + f === :HoverItemDelayId && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayClearTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :HoverWindowUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :MouseCursor && return unsafe_load(_getptr(x, f)) + f === :MouseStationaryTimer && return unsafe_load(_getptr(x, f)) + f === :MouseLastValidPos && return _getptr(x, f) + f === :InputTextState && return _getptr(x, f) + f === :InputTextDeactivatedState && return _getptr(x, f) + f === :InputTextPasswordFont && return _getptr(x, f) + f === :TempInputId && return unsafe_load(_getptr(x, f)) + f === :DataTypeZeroValue && return _getptr(x, f) + f === :BeginMenuDepth && return unsafe_load(_getptr(x, f)) + f === :BeginComboDepth && return unsafe_load(_getptr(x, f)) + f === :ColorEditOptions && return unsafe_load(_getptr(x, f)) + f === :ColorEditCurrentID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedHue && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedSat && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedColor && return unsafe_load(_getptr(x, f)) + f === :ColorPickerRef && return _getptr(x, f) + f === :ComboPreviewData && return _getptr(x, f) + f === :WindowResizeBorderExpectedRect && return _getptr(x, f) + f === :WindowResizeRelativeMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSeekMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarClickDeltaToGrabCenter && return unsafe_load(_getptr(x, f)) + f === :SliderGrabClickOffset && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :DragSpeedDefaultRatio && return unsafe_load(_getptr(x, f)) + f === :DisabledAlphaBackup && return unsafe_load(_getptr(x, f)) + f === :DisabledStackSize && return unsafe_load(_getptr(x, f)) + f === :LockMarkEdited && return unsafe_load(_getptr(x, f)) + f === :TooltipOverrideCount && return unsafe_load(_getptr(x, f)) + f === :ClipboardHandlerData && return _getptr(x, f) + f === :MenusIdSubmittedThisFrame && return _getptr(x, f) + f === :TypingSelectState && return _getptr(x, f) + f === :PlatformImeData && return _getptr(x, f) + f === :PlatformImeDataPrev && return _getptr(x, f) + f === :PlatformImeViewport && return unsafe_load(_getptr(x, f)) + f === :DockContext && return _getptr(x, f) + f === :DockNodeWindowMenuHandler && return unsafe_load(_getptr(x, f)) + f === :SettingsLoaded && return unsafe_load(_getptr(x, f)) + f === :SettingsDirtyTimer && return unsafe_load(_getptr(x, f)) + f === :SettingsIniData && return _getptr(x, f) + f === :SettingsHandlers && return _getptr(x, f) + f === :SettingsWindows && return _getptr(x, f) + f === :SettingsTables && return _getptr(x, f) + f === :Hooks && return _getptr(x, f) + f === :HookIdNext && return unsafe_load(_getptr(x, f)) + f === :LocalizationTable && return _getptr(x, f) + f === :LogEnabled && return unsafe_load(_getptr(x, f)) + f === :LogType && return unsafe_load(_getptr(x, f)) + f === :LogFile && return unsafe_load(_getptr(x, f)) + f === :LogBuffer && return _getptr(x, f) + f === :LogNextPrefix && return unsafe_load(_getptr(x, f)) + f === :LogNextSuffix && return unsafe_load(_getptr(x, f)) + f === :LogLinePosY && return unsafe_load(_getptr(x, f)) + f === :LogLineFirstItem && return unsafe_load(_getptr(x, f)) + f === :LogDepthRef && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpand && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpandDefault && return unsafe_load(_getptr(x, f)) + f === :DebugLogFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogBuf && return _getptr(x, f) + f === :DebugLogIndex && return _getptr(x, f) + f === :DebugLogAutoDisableFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogAutoDisableFrames && return unsafe_load(_getptr(x, f)) + f === :DebugLocateFrames && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInLocateId && return unsafe_load(_getptr(x, f)) + f === :DebugBreakKeyChord && return unsafe_load(_getptr(x, f)) + f === :DebugBeginReturnValueCullDepth && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerActive && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerMouseButton && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerBreakId && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorTime && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorBackup && return _getptr(x, f) + f === :DebugMetricsConfig && return _getptr(x, f) + f === :DebugIDStackTool && return _getptr(x, f) + f === :DebugAllocInfo && return _getptr(x, f) + f === :DebugHoveredDockNode && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrame && return _getptr(x, f) + f === :FramerateSecPerFrameIdx && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameCount && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameAccum && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouseNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboardNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantTextInputNextFrame && return unsafe_load(_getptr(x, f)) + f === :TempBuffer && return _getptr(x, f) + f === :TempKeychordName && return _getptr(x, f) return getfield(x, f) end @@ -3234,7 +4284,7 @@ end function Base.setproperty!(x::Ptr{ImGuiContext}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -3279,16 +4329,24 @@ struct ImGuiSizeCallbackData CurrentSize::ImVec2 DesiredSize::ImVec2 end -function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) +function _getptr(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) f === :UserData && return Ptr{Ptr{Cvoid}}(x + 0) f === :Pos && return Ptr{ImVec2}(x + 4) f === :CurrentSize && return Ptr{ImVec2}(x + 12) f === :DesiredSize && return Ptr{ImVec2}(x + 20) + error("Unrecognized field of type `ImGuiSizeCallbackData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :CurrentSize && return _getptr(x, f) + f === :DesiredSize && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiSizeCallbackData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -4381,7 +5439,7 @@ struct ImGuiTableColumnSettings data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :WidthOrWeight && return Ptr{Cfloat}(x + 0) f === :UserID && return Ptr{ImGuiID}(x + 4) f === :Index && return Ptr{ImGuiTableColumnIdx}(x + 8) @@ -4390,6 +5448,18 @@ function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :SortDirection && return (Ptr{ImU8}(x + 12), 16, 2) f === :IsEnabled && return (Ptr{ImU8}(x + 12), 18, 1) f === :IsStretch && return (Ptr{ImU8}(x + 12), 19, 1) + error("Unrecognized field of type `ImGuiTableColumnSettings`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) + f === :WidthOrWeight && return unsafe_load(_getptr(x, f)) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :Index && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsStretch && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -4417,7 +5487,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumnSettings}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) diff --git a/lib/armv7l-linux-musleabihf.jl b/lib/armv7l-linux-musleabihf.jl index 33ffd36..f6551b7 100644 --- a/lib/armv7l-linux-musleabihf.jl +++ b/lib/armv7l-linux-musleabihf.jl @@ -1,4 +1,4 @@ -using CEnum +using CEnum: CEnum, @cenum to_c_type(t::Type) = t to_c_type_pairs(va_list) = map(enumerate(to_c_type.(va_list))) do (ind, type) @@ -30,16 +30,24 @@ struct ImVec4 z::Cfloat w::Cfloat end -function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) +function _getptr(x::Ptr{ImVec4}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) f === :z && return Ptr{Cfloat}(x + 8) f === :w && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImVec4`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) + f === :z && return unsafe_load(_getptr(x, f)) + f === :w && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec4}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -54,7 +62,7 @@ struct ImDrawCmd UserCallback::ImDrawCallback UserCallbackData::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) +function _getptr(x::Ptr{ImDrawCmd}, f::Symbol) f === :ClipRect && return Ptr{ImVec4}(x + 0) f === :TextureId && return Ptr{ImTextureID}(x + 16) f === :VtxOffset && return Ptr{Cuint}(x + 20) @@ -62,11 +70,22 @@ function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) f === :ElemCount && return Ptr{Cuint}(x + 28) f === :UserCallback && return Ptr{ImDrawCallback}(x + 32) f === :UserCallbackData && return Ptr{Ptr{Cvoid}}(x + 36) + error("Unrecognized field of type `ImDrawCmd`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) + f === :ClipRect && return _getptr(x, f) + f === :TextureId && return unsafe_load(_getptr(x, f)) + f === :VtxOffset && return unsafe_load(_getptr(x, f)) + f === :IdxOffset && return unsafe_load(_getptr(x, f)) + f === :ElemCount && return unsafe_load(_getptr(x, f)) + f === :UserCallback && return unsafe_load(_getptr(x, f)) + f === :UserCallbackData && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawCmd}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -93,14 +112,20 @@ struct ImVec2 x::Cfloat y::Cfloat end -function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) +function _getptr(x::Ptr{ImVec2}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) + error("Unrecognized field of type `ImVec2`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec2}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -117,6 +142,24 @@ struct ImVector_ImDrawVert Capacity::Cint Data::Ptr{ImDrawVert} end +function _getptr(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return Ptr{Cint}(x + 0) + f === :Capacity && return Ptr{Cint}(x + 4) + f === :Data && return Ptr{Ptr{ImDrawVert}}(x + 8) + error("Unrecognized field of type `ImVector_ImDrawVert`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return unsafe_load(_getptr(x, f)) + f === :Capacity && return unsafe_load(_getptr(x, f)) + f === :Data && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImVector_ImDrawVert}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImDrawListFlags = Cint @@ -140,7 +183,7 @@ struct ImFontGlyph data::NTuple{40, UInt8} end -function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) +function _getptr(x::Ptr{ImFontGlyph}, f::Symbol) f === :Colored && return (Ptr{Cuint}(x + 0), 0, 1) f === :Visible && return (Ptr{Cuint}(x + 0), 1, 1) f === :Codepoint && return (Ptr{Cuint}(x + 0), 2, 30) @@ -153,6 +196,22 @@ function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) f === :V0 && return Ptr{Cfloat}(x + 28) f === :U1 && return Ptr{Cfloat}(x + 32) f === :V1 && return Ptr{Cfloat}(x + 36) + error("Unrecognized field of type `ImFontGlyph`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) + f === :Colored && return unsafe_load(_getptr(x, f)) + f === :Visible && return unsafe_load(_getptr(x, f)) + f === :Codepoint && return unsafe_load(_getptr(x, f)) + f === :AdvanceX && return unsafe_load(_getptr(x, f)) + f === :X0 && return unsafe_load(_getptr(x, f)) + f === :Y0 && return unsafe_load(_getptr(x, f)) + f === :X1 && return unsafe_load(_getptr(x, f)) + f === :Y1 && return unsafe_load(_getptr(x, f)) + f === :U0 && return unsafe_load(_getptr(x, f)) + f === :V0 && return unsafe_load(_getptr(x, f)) + f === :U1 && return unsafe_load(_getptr(x, f)) + f === :V1 && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -180,7 +239,7 @@ end function Base.setproperty!(x::Ptr{ImFontGlyph}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -268,7 +327,7 @@ function Base.getproperty(x::ImFontConfig, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) +function _getptr(x::Ptr{ImFontConfig}, f::Symbol) f === :FontData && return Ptr{Ptr{Cvoid}}(x + 0) f === :FontDataSize && return Ptr{Cint}(x + 4) f === :FontDataOwnedByAtlas && return Ptr{Bool}(x + 8) @@ -289,11 +348,35 @@ function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) f === :EllipsisChar && return Ptr{ImWchar}(x + 76) f === :Name && return Ptr{NTuple{40, Cchar}}(x + 78) f === :DstFont && return Ptr{Ptr{ImFont}}(x + 120) + error("Unrecognized field of type `ImFontConfig`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) + f === :FontData && return unsafe_load(_getptr(x, f)) + f === :FontDataSize && return unsafe_load(_getptr(x, f)) + f === :FontDataOwnedByAtlas && return unsafe_load(_getptr(x, f)) + f === :FontNo && return unsafe_load(_getptr(x, f)) + f === :SizePixels && return unsafe_load(_getptr(x, f)) + f === :OversampleH && return unsafe_load(_getptr(x, f)) + f === :OversampleV && return unsafe_load(_getptr(x, f)) + f === :PixelSnapH && return unsafe_load(_getptr(x, f)) + f === :GlyphExtraSpacing && return _getptr(x, f) + f === :GlyphOffset && return _getptr(x, f) + f === :GlyphRanges && return unsafe_load(_getptr(x, f)) + f === :GlyphMinAdvanceX && return unsafe_load(_getptr(x, f)) + f === :GlyphMaxAdvanceX && return unsafe_load(_getptr(x, f)) + f === :MergeMode && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :RasterizerMultiply && return unsafe_load(_getptr(x, f)) + f === :RasterizerDensity && return unsafe_load(_getptr(x, f)) + f === :EllipsisChar && return unsafe_load(_getptr(x, f)) + f === :Name && return _getptr(x, f) + f === :DstFont && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontConfig}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImFontConfig @@ -330,7 +413,7 @@ struct ImFontAtlas PackIdMouseCursors::Cint PackIdLines::Cint end -function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) +function _getptr(x::Ptr{ImFontAtlas}, f::Symbol) f === :Flags && return Ptr{ImFontAtlasFlags}(x + 0) f === :TexID && return Ptr{ImTextureID}(x + 4) f === :TexDesiredWidth && return Ptr{Cint}(x + 8) @@ -353,11 +436,37 @@ function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) f === :FontBuilderFlags && return Ptr{Cuint}(x + 1124) f === :PackIdMouseCursors && return Ptr{Cint}(x + 1128) f === :PackIdLines && return Ptr{Cint}(x + 1132) + error("Unrecognized field of type `ImFontAtlas`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :TexID && return unsafe_load(_getptr(x, f)) + f === :TexDesiredWidth && return unsafe_load(_getptr(x, f)) + f === :TexGlyphPadding && return unsafe_load(_getptr(x, f)) + f === :Locked && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :TexReady && return unsafe_load(_getptr(x, f)) + f === :TexPixelsUseColors && return unsafe_load(_getptr(x, f)) + f === :TexPixelsAlpha8 && return unsafe_load(_getptr(x, f)) + f === :TexPixelsRGBA32 && return unsafe_load(_getptr(x, f)) + f === :TexWidth && return unsafe_load(_getptr(x, f)) + f === :TexHeight && return unsafe_load(_getptr(x, f)) + f === :TexUvScale && return _getptr(x, f) + f === :TexUvWhitePixel && return _getptr(x, f) + f === :Fonts && return _getptr(x, f) + f === :CustomRects && return _getptr(x, f) + f === :ConfigData && return _getptr(x, f) + f === :TexUvLines && return _getptr(x, f) + f === :FontBuilderIO && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :PackIdMouseCursors && return unsafe_load(_getptr(x, f)) + f === :PackIdLines && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontAtlas}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -454,7 +563,7 @@ struct ImDrawList _FringeScale::Cfloat _OwnerName::Ptr{Cchar} end -function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) +function _getptr(x::Ptr{ImDrawList}, f::Symbol) f === :CmdBuffer && return Ptr{ImVector_ImDrawCmd}(x + 0) f === :IdxBuffer && return Ptr{ImVector_ImDrawIdx}(x + 12) f === :VtxBuffer && return Ptr{ImVector_ImDrawVert}(x + 24) @@ -470,11 +579,30 @@ function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) f === :_TextureIdStack && return Ptr{ImVector_ImTextureID}(x + 124) f === :_FringeScale && return Ptr{Cfloat}(x + 136) f === :_OwnerName && return Ptr{Ptr{Cchar}}(x + 140) + error("Unrecognized field of type `ImDrawList`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) + f === :CmdBuffer && return _getptr(x, f) + f === :IdxBuffer && return _getptr(x, f) + f === :VtxBuffer && return _getptr(x, f) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :_VtxCurrentIdx && return unsafe_load(_getptr(x, f)) + f === :_Data && return unsafe_load(_getptr(x, f)) + f === :_VtxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_IdxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_Path && return _getptr(x, f) + f === :_CmdHeader && return _getptr(x, f) + f === :_Splitter && return _getptr(x, f) + f === :_ClipRectStack && return _getptr(x, f) + f === :_TextureIdStack && return _getptr(x, f) + f === :_FringeScale && return unsafe_load(_getptr(x, f)) + f === :_OwnerName && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawList}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -513,7 +641,7 @@ function Base.getproperty(x::ImGuiViewport, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) +function _getptr(x::Ptr{ImGuiViewport}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiViewportFlags}(x + 4) f === :Pos && return Ptr{ImVec2}(x + 8) @@ -531,11 +659,32 @@ function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) f === :PlatformRequestMove && return Ptr{Bool}(x + 69) f === :PlatformRequestResize && return Ptr{Bool}(x + 70) f === :PlatformRequestClose && return Ptr{Bool}(x + 71) + error("Unrecognized field of type `ImGuiViewport`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :ParentViewportId && return unsafe_load(_getptr(x, f)) + f === :DrawData && return unsafe_load(_getptr(x, f)) + f === :RendererUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) + f === :PlatformHandleRaw && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowCreated && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestMove && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestResize && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestClose && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiViewport}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImDrawData @@ -549,7 +698,7 @@ struct ImDrawData FramebufferScale::ImVec2 OwnerViewport::Ptr{ImGuiViewport} end -function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) +function _getptr(x::Ptr{ImDrawData}, f::Symbol) f === :Valid && return Ptr{Bool}(x + 0) f === :CmdListsCount && return Ptr{Cint}(x + 4) f === :TotalIdxCount && return Ptr{Cint}(x + 8) @@ -559,11 +708,24 @@ function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) f === :DisplaySize && return Ptr{ImVec2}(x + 36) f === :FramebufferScale && return Ptr{ImVec2}(x + 44) f === :OwnerViewport && return Ptr{Ptr{ImGuiViewport}}(x + 52) + error("Unrecognized field of type `ImDrawData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) + f === :Valid && return unsafe_load(_getptr(x, f)) + f === :CmdListsCount && return unsafe_load(_getptr(x, f)) + f === :TotalIdxCount && return unsafe_load(_getptr(x, f)) + f === :TotalVtxCount && return unsafe_load(_getptr(x, f)) + f === :CmdLists && return _getptr(x, f) + f === :DisplayPos && return _getptr(x, f) + f === :DisplaySize && return _getptr(x, f) + f === :FramebufferScale && return _getptr(x, f) + f === :OwnerViewport && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -600,6 +762,26 @@ struct ImGuiKeyData DownDurationPrev::Cfloat AnalogValue::Cfloat end +function _getptr(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return Ptr{Bool}(x + 0) + f === :DownDuration && return Ptr{Cfloat}(x + 4) + f === :DownDurationPrev && return Ptr{Cfloat}(x + 8) + f === :AnalogValue && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImGuiKeyData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return unsafe_load(_getptr(x, f)) + f === :DownDuration && return unsafe_load(_getptr(x, f)) + f === :DownDurationPrev && return unsafe_load(_getptr(x, f)) + f === :AnalogValue && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImGuiKeyData}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImU16 = Cushort @@ -713,7 +895,7 @@ function Base.getproperty(x::ImGuiIO, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiIO}, f::Symbol) f === :ConfigFlags && return Ptr{ImGuiConfigFlags}(x + 0) f === :BackendFlags && return Ptr{ImGuiBackendFlags}(x + 4) f === :DisplaySize && return Ptr{ImVec2}(x + 8) @@ -814,11 +996,115 @@ function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) f === :BackendUsingLegacyNavInputArray && return Ptr{Bool}(x + 2939) f === :InputQueueSurrogate && return Ptr{ImWchar16}(x + 2940) f === :InputQueueCharacters && return Ptr{ImVector_ImWchar}(x + 2944) + error("Unrecognized field of type `ImGuiIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) + f === :ConfigFlags && return unsafe_load(_getptr(x, f)) + f === :BackendFlags && return unsafe_load(_getptr(x, f)) + f === :DisplaySize && return _getptr(x, f) + f === :DeltaTime && return unsafe_load(_getptr(x, f)) + f === :IniSavingRate && return unsafe_load(_getptr(x, f)) + f === :IniFilename && return unsafe_load(_getptr(x, f)) + f === :LogFilename && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Fonts && return unsafe_load(_getptr(x, f)) + f === :FontGlobalScale && return unsafe_load(_getptr(x, f)) + f === :FontAllowUserScaling && return unsafe_load(_getptr(x, f)) + f === :FontDefault && return unsafe_load(_getptr(x, f)) + f === :DisplayFramebufferScale && return _getptr(x, f) + f === :ConfigDockingNoSplit && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingWithShift && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingAlwaysTabBar && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingTransparentPayload && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoAutoMerge && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoTaskBarIcon && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDecoration && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDefaultParent && return unsafe_load(_getptr(x, f)) + f === :MouseDrawCursor && return unsafe_load(_getptr(x, f)) + f === :ConfigMacOSXBehaviors && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTrickleEventQueue && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextCursorBlink && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextEnterKeepActive && return unsafe_load(_getptr(x, f)) + f === :ConfigDragClickToInputText && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsResizeFromEdges && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsMoveFromTitleBarOnly && return unsafe_load(_getptr(x, f)) + f === :ConfigMemoryCompactTimer && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickTime && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickMaxDist && return unsafe_load(_getptr(x, f)) + f === :MouseDragThreshold && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatDelay && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatRate && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIsDebuggerPresent && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueOnce && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueLoop && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIgnoreFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIniSettings && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformName && return unsafe_load(_getptr(x, f)) + f === :BackendRendererName && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformUserData && return unsafe_load(_getptr(x, f)) + f === :BackendRendererUserData && return unsafe_load(_getptr(x, f)) + f === :BackendLanguageUserData && return unsafe_load(_getptr(x, f)) + f === :GetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :SetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :ClipboardUserData && return unsafe_load(_getptr(x, f)) + f === :SetPlatformImeDataFn && return unsafe_load(_getptr(x, f)) + f === :PlatformLocaleDecimalPoint && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouse && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboard && return unsafe_load(_getptr(x, f)) + f === :WantTextInput && return unsafe_load(_getptr(x, f)) + f === :WantSetMousePos && return unsafe_load(_getptr(x, f)) + f === :WantSaveIniSettings && return unsafe_load(_getptr(x, f)) + f === :NavActive && return unsafe_load(_getptr(x, f)) + f === :NavVisible && return unsafe_load(_getptr(x, f)) + f === :Framerate && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderVertices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderIndices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderWindows && return unsafe_load(_getptr(x, f)) + f === :MetricsActiveWindows && return unsafe_load(_getptr(x, f)) + f === :MouseDelta && return _getptr(x, f) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseDown && return _getptr(x, f) + f === :MouseWheel && return unsafe_load(_getptr(x, f)) + f === :MouseWheelH && return unsafe_load(_getptr(x, f)) + f === :MouseSource && return unsafe_load(_getptr(x, f)) + f === :MouseHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :KeyCtrl && return unsafe_load(_getptr(x, f)) + f === :KeyShift && return unsafe_load(_getptr(x, f)) + f === :KeyAlt && return unsafe_load(_getptr(x, f)) + f === :KeySuper && return unsafe_load(_getptr(x, f)) + f === :KeyMods && return unsafe_load(_getptr(x, f)) + f === :KeysData && return _getptr(x, f) + f === :WantCaptureMouseUnlessPopupClose && return unsafe_load(_getptr(x, f)) + f === :MousePosPrev && return _getptr(x, f) + f === :MouseClickedPos && return _getptr(x, f) + f === :MouseClickedTime && return _getptr(x, f) + f === :MouseClicked && return _getptr(x, f) + f === :MouseDoubleClicked && return _getptr(x, f) + f === :MouseClickedCount && return _getptr(x, f) + f === :MouseClickedLastCount && return _getptr(x, f) + f === :MouseReleased && return _getptr(x, f) + f === :MouseDownOwned && return _getptr(x, f) + f === :MouseDownOwnedUnlessPopupClose && return _getptr(x, f) + f === :MouseWheelRequestAxisSwap && return unsafe_load(_getptr(x, f)) + f === :MouseCtrlLeftAsRightClick && return unsafe_load(_getptr(x, f)) + f === :MouseDownDuration && return _getptr(x, f) + f === :MouseDownDurationPrev && return _getptr(x, f) + f === :MouseDragMaxDistanceAbs && return _getptr(x, f) + f === :MouseDragMaxDistanceSqr && return _getptr(x, f) + f === :PenPressure && return unsafe_load(_getptr(x, f)) + f === :AppFocusLost && return unsafe_load(_getptr(x, f)) + f === :AppAcceptingEvents && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyKeyArrays && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyNavInputArray && return unsafe_load(_getptr(x, f)) + f === :InputQueueSurrogate && return unsafe_load(_getptr(x, f)) + f === :InputQueueCharacters && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImGuiPlatformMonitor @@ -829,18 +1115,28 @@ struct ImGuiPlatformMonitor DpiScale::Cfloat PlatformHandle::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) f === :MainPos && return Ptr{ImVec2}(x + 0) f === :MainSize && return Ptr{ImVec2}(x + 8) f === :WorkPos && return Ptr{ImVec2}(x + 16) f === :WorkSize && return Ptr{ImVec2}(x + 24) f === :DpiScale && return Ptr{Cfloat}(x + 32) f === :PlatformHandle && return Ptr{Ptr{Cvoid}}(x + 36) + error("Unrecognized field of type `ImGuiPlatformMonitor`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) + f === :MainPos && return _getptr(x, f) + f === :MainSize && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformMonitor}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -883,7 +1179,7 @@ struct ImGuiPlatformIO Monitors::ImVector_ImGuiPlatformMonitor Viewports::ImVector_ImGuiViewportPtr end -function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Platform_CreateWindow && return Ptr{Ptr{Cvoid}}(x + 0) f === :Platform_DestroyWindow && return Ptr{Ptr{Cvoid}}(x + 4) f === :Platform_ShowWindow && return Ptr{Ptr{Cvoid}}(x + 8) @@ -909,11 +1205,40 @@ function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Renderer_SwapBuffers && return Ptr{Ptr{Cvoid}}(x + 88) f === :Monitors && return Ptr{ImVector_ImGuiPlatformMonitor}(x + 92) f === :Viewports && return Ptr{ImVector_ImGuiViewportPtr}(x + 104) + error("Unrecognized field of type `ImGuiPlatformIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) + f === :Platform_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_ShowWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowMinimized && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowTitle && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowAlpha && return unsafe_load(_getptr(x, f)) + f === :Platform_UpdateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowDpiScale && return unsafe_load(_getptr(x, f)) + f === :Platform_OnChangedViewport && return unsafe_load(_getptr(x, f)) + f === :Platform_CreateVkSurface && return unsafe_load(_getptr(x, f)) + f === :Renderer_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Renderer_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Monitors && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -983,7 +1308,7 @@ struct ImGuiStyle HoverFlagsForTooltipMouse::ImGuiHoveredFlags HoverFlagsForTooltipNav::ImGuiHoveredFlags end -function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyle}, f::Symbol) f === :Alpha && return Ptr{Cfloat}(x + 0) f === :DisabledAlpha && return Ptr{Cfloat}(x + 4) f === :WindowPadding && return Ptr{ImVec2}(x + 8) @@ -1037,11 +1362,68 @@ function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) f === :HoverDelayNormal && return Ptr{Cfloat}(x + 1128) f === :HoverFlagsForTooltipMouse && return Ptr{ImGuiHoveredFlags}(x + 1132) f === :HoverFlagsForTooltipNav && return Ptr{ImGuiHoveredFlags}(x + 1136) + error("Unrecognized field of type `ImGuiStyle`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) + f === :Alpha && return unsafe_load(_getptr(x, f)) + f === :DisabledAlpha && return unsafe_load(_getptr(x, f)) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :WindowMinSize && return _getptr(x, f) + f === :WindowTitleAlign && return _getptr(x, f) + f === :WindowMenuButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ChildRounding && return unsafe_load(_getptr(x, f)) + f === :ChildBorderSize && return unsafe_load(_getptr(x, f)) + f === :PopupRounding && return unsafe_load(_getptr(x, f)) + f === :PopupBorderSize && return unsafe_load(_getptr(x, f)) + f === :FramePadding && return _getptr(x, f) + f === :FrameRounding && return unsafe_load(_getptr(x, f)) + f === :FrameBorderSize && return unsafe_load(_getptr(x, f)) + f === :ItemSpacing && return _getptr(x, f) + f === :ItemInnerSpacing && return _getptr(x, f) + f === :CellPadding && return _getptr(x, f) + f === :TouchExtraPadding && return _getptr(x, f) + f === :IndentSpacing && return unsafe_load(_getptr(x, f)) + f === :ColumnsMinSpacing && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSize && return unsafe_load(_getptr(x, f)) + f === :ScrollbarRounding && return unsafe_load(_getptr(x, f)) + f === :GrabMinSize && return unsafe_load(_getptr(x, f)) + f === :GrabRounding && return unsafe_load(_getptr(x, f)) + f === :LogSliderDeadzone && return unsafe_load(_getptr(x, f)) + f === :TabRounding && return unsafe_load(_getptr(x, f)) + f === :TabBorderSize && return unsafe_load(_getptr(x, f)) + f === :TabMinWidthForCloseButton && return unsafe_load(_getptr(x, f)) + f === :TabBarBorderSize && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersAngle && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersTextAlign && return _getptr(x, f) + f === :ColorButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ButtonTextAlign && return _getptr(x, f) + f === :SelectableTextAlign && return _getptr(x, f) + f === :SeparatorTextBorderSize && return unsafe_load(_getptr(x, f)) + f === :SeparatorTextAlign && return _getptr(x, f) + f === :SeparatorTextPadding && return _getptr(x, f) + f === :DisplayWindowPadding && return _getptr(x, f) + f === :DisplaySafeAreaPadding && return _getptr(x, f) + f === :DockingSeparatorSize && return unsafe_load(_getptr(x, f)) + f === :MouseCursorScale && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLines && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLinesUseTex && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedFill && return unsafe_load(_getptr(x, f)) + f === :CurveTessellationTol && return unsafe_load(_getptr(x, f)) + f === :CircleTessellationMaxError && return unsafe_load(_getptr(x, f)) + f === :Colors && return _getptr(x, f) + f === :HoverStationaryDelay && return unsafe_load(_getptr(x, f)) + f === :HoverDelayShort && return unsafe_load(_getptr(x, f)) + f === :HoverDelayNormal && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipMouse && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipNav && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiStyle}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -1069,7 +1451,7 @@ struct ImGuiInputEvent data::NTuple{28, UInt8} end -function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) +function _getptr(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Type && return Ptr{ImGuiInputEventType}(x + 0) f === :Source && return Ptr{ImGuiInputSource}(x + 4) f === :EventId && return Ptr{ImU32}(x + 8) @@ -1081,6 +1463,21 @@ function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Text && return Ptr{ImGuiInputEventText}(x + 12) f === :AppFocused && return Ptr{ImGuiInputEventAppFocused}(x + 12) f === :AddedByTestEngine && return Ptr{Bool}(x + 24) + error("Unrecognized field of type `ImGuiInputEvent`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) + f === :Type && return unsafe_load(_getptr(x, f)) + f === :Source && return unsafe_load(_getptr(x, f)) + f === :EventId && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseWheel && return _getptr(x, f) + f === :MouseButton && return _getptr(x, f) + f === :MouseViewport && return _getptr(x, f) + f === :Key && return _getptr(x, f) + f === :Text && return _getptr(x, f) + f === :AppFocused && return _getptr(x, f) + f === :AddedByTestEngine && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1092,7 +1489,7 @@ function Base.getproperty(x::ImGuiInputEvent, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiInputEvent}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiInputEvent @@ -1200,11 +1597,19 @@ struct ImGuiStoragePair data::NTuple{8, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) +function _getptr(x::Ptr{ImGuiStoragePair}, f::Symbol) f === :key && return Ptr{ImGuiID}(x + 0) f === :val_i && return Ptr{Cint}(x + 4) f === :val_f && return Ptr{Cfloat}(x + 4) f === :val_p && return Ptr{Ptr{Cvoid}}(x + 4) + error("Unrecognized field of type `ImGuiStoragePair`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) + f === :key && return unsafe_load(_getptr(x, f)) + f === :val_i && return unsafe_load(_getptr(x, f)) + f === :val_f && return unsafe_load(_getptr(x, f)) + f === :val_p && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1216,7 +1621,7 @@ function Base.getproperty(x::ImGuiStoragePair, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStoragePair}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStoragePair @@ -1424,7 +1829,7 @@ struct ImGuiDockNode data::NTuple{168, UInt8} end -function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) +function _getptr(x::Ptr{ImGuiDockNode}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :SharedFlags && return Ptr{ImGuiDockNodeFlags}(x + 4) f === :LocalFlags && return Ptr{ImGuiDockNodeFlags}(x + 8) @@ -1467,6 +1872,52 @@ function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) f === :WantMouseMove && return (Ptr{Bool}(x + 164), 17, 1) f === :WantHiddenTabBarUpdate && return (Ptr{Bool}(x + 164), 18, 1) f === :WantHiddenTabBarToggle && return (Ptr{Bool}(x + 164), 19, 1) + error("Unrecognized field of type `ImGuiDockNode`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :SharedFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlagsInWindows && return unsafe_load(_getptr(x, f)) + f === :MergedFlags && return unsafe_load(_getptr(x, f)) + f === :State && return unsafe_load(_getptr(x, f)) + f === :ParentNode && return unsafe_load(_getptr(x, f)) + f === :ChildNodes && return _getptr(x, f) + f === :Windows && return _getptr(x, f) + f === :TabBar && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeRef && return _getptr(x, f) + f === :SplitAxis && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :LastBgColor && return unsafe_load(_getptr(x, f)) + f === :HostWindow && return unsafe_load(_getptr(x, f)) + f === :VisibleWindow && return unsafe_load(_getptr(x, f)) + f === :CentralNode && return unsafe_load(_getptr(x, f)) + f === :OnlyNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :CountNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :LastFrameAlive && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameFocused && return unsafe_load(_getptr(x, f)) + f === :LastFocusedNodeId && return unsafe_load(_getptr(x, f)) + f === :SelectedTabId && return unsafe_load(_getptr(x, f)) + f === :WantCloseTabId && return unsafe_load(_getptr(x, f)) + f === :RefViewportId && return unsafe_load(_getptr(x, f)) + f === :AuthorityForPos && return unsafe_load(_getptr(x, f)) + f === :AuthorityForSize && return unsafe_load(_getptr(x, f)) + f === :AuthorityForViewport && return unsafe_load(_getptr(x, f)) + f === :IsVisible && return unsafe_load(_getptr(x, f)) + f === :IsFocused && return unsafe_load(_getptr(x, f)) + f === :IsBgDrawnThisFrame && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :HasWindowMenuButton && return unsafe_load(_getptr(x, f)) + f === :HasCentralNodeChild && return unsafe_load(_getptr(x, f)) + f === :WantCloseAll && return unsafe_load(_getptr(x, f)) + f === :WantLockSizeOnce && return unsafe_load(_getptr(x, f)) + f === :WantMouseMove && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarUpdate && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarToggle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1494,7 +1945,7 @@ end function Base.setproperty!(x::Ptr{ImGuiDockNode}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1519,7 +1970,7 @@ struct ImGuiWindow data::NTuple{1008, UInt8} end -function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) +function _getptr(x::Ptr{ImGuiWindow}, f::Symbol) f === :Ctx && return Ptr{Ptr{ImGuiContext}}(x + 0) f === :Name && return Ptr{Ptr{Cchar}}(x + 4) f === :ID && return Ptr{ImGuiID}(x + 8) @@ -1644,6 +2095,134 @@ function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) f === :DockId && return Ptr{ImGuiID}(x + 984) f === :DockTabItemStatusFlags && return Ptr{ImGuiItemStatusFlags}(x + 988) f === :DockTabItemRect && return Ptr{ImRect}(x + 992) + error("Unrecognized field of type `ImGuiWindow`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :Name && return unsafe_load(_getptr(x, f)) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :FlagsPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ChildFlags && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :Viewport && return unsafe_load(_getptr(x, f)) + f === :ViewportId && return unsafe_load(_getptr(x, f)) + f === :ViewportPos && return _getptr(x, f) + f === :ViewportAllowPlatformMonitorExtend && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeFull && return _getptr(x, f) + f === :ContentSize && return _getptr(x, f) + f === :ContentSizeIdeal && return _getptr(x, f) + f === :ContentSizeExplicit && return _getptr(x, f) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :TitleBarHeight && return unsafe_load(_getptr(x, f)) + f === :MenuBarHeight && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX2 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY2 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeY1 && return unsafe_load(_getptr(x, f)) + f === :NameBufLen && return unsafe_load(_getptr(x, f)) + f === :MoveId && return unsafe_load(_getptr(x, f)) + f === :TabId && return unsafe_load(_getptr(x, f)) + f === :ChildId && return unsafe_load(_getptr(x, f)) + f === :PopupId && return unsafe_load(_getptr(x, f)) + f === :Scroll && return _getptr(x, f) + f === :ScrollMax && return _getptr(x, f) + f === :ScrollTarget && return _getptr(x, f) + f === :ScrollTargetCenterRatio && return _getptr(x, f) + f === :ScrollTargetEdgeSnapDist && return _getptr(x, f) + f === :ScrollbarSizes && return _getptr(x, f) + f === :ScrollbarX && return unsafe_load(_getptr(x, f)) + f === :ScrollbarY && return unsafe_load(_getptr(x, f)) + f === :ViewportOwned && return unsafe_load(_getptr(x, f)) + f === :Active && return unsafe_load(_getptr(x, f)) + f === :WasActive && return unsafe_load(_getptr(x, f)) + f === :WriteAccessed && return unsafe_load(_getptr(x, f)) + f === :Collapsed && return unsafe_load(_getptr(x, f)) + f === :WantCollapseToggle && return unsafe_load(_getptr(x, f)) + f === :SkipItems && return unsafe_load(_getptr(x, f)) + f === :SkipRefresh && return unsafe_load(_getptr(x, f)) + f === :Appearing && return unsafe_load(_getptr(x, f)) + f === :Hidden && return unsafe_load(_getptr(x, f)) + f === :IsFallbackWindow && return unsafe_load(_getptr(x, f)) + f === :IsExplicitChild && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHovered && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHeld && return unsafe_load(_getptr(x, f)) + f === :BeginCount && return unsafe_load(_getptr(x, f)) + f === :BeginCountPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinParent && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinContext && return unsafe_load(_getptr(x, f)) + f === :FocusOrder && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesX && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesY && return unsafe_load(_getptr(x, f)) + f === :AutoFitOnlyGrows && return unsafe_load(_getptr(x, f)) + f === :AutoPosLastDirection && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCanSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCannotSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesForRenderOnly && return unsafe_load(_getptr(x, f)) + f === :DisableInputsFrames && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowSizeAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowCollapsedAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowDockAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosVal && return _getptr(x, f) + f === :SetWindowPosPivot && return _getptr(x, f) + f === :IDStack && return _getptr(x, f) + f === :DC && return _getptr(x, f) + f === :OuterRectClipped && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :ParentWorkRect && return _getptr(x, f) + f === :ClipRect && return _getptr(x, f) + f === :ContentRegionRect && return _getptr(x, f) + f === :HitTestHoleSize && return _getptr(x, f) + f === :HitTestHoleOffset && return _getptr(x, f) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameJustFocused && return unsafe_load(_getptr(x, f)) + f === :LastTimeActive && return unsafe_load(_getptr(x, f)) + f === :ItemWidthDefault && return unsafe_load(_getptr(x, f)) + f === :StateStorage && return _getptr(x, f) + f === :ColumnsStorage && return _getptr(x, f) + f === :FontWindowScale && return unsafe_load(_getptr(x, f)) + f === :FontDpiScale && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :DrawList && return unsafe_load(_getptr(x, f)) + f === :DrawListInst && return _getptr(x, f) + f === :ParentWindow && return unsafe_load(_getptr(x, f)) + f === :ParentWindowInBeginStack && return unsafe_load(_getptr(x, f)) + f === :RootWindow && return unsafe_load(_getptr(x, f)) + f === :RootWindowPopupTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowDockTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowForTitleBarHighlight && return unsafe_load(_getptr(x, f)) + f === :RootWindowForNav && return unsafe_load(_getptr(x, f)) + f === :ParentWindowForFocusRoute && return unsafe_load(_getptr(x, f)) + f === :NavLastChildNavWindow && return unsafe_load(_getptr(x, f)) + f === :NavLastIds && return _getptr(x, f) + f === :NavRectRel && return _getptr(x, f) + f === :NavPreferredScoringPosRel && return _getptr(x, f) + f === :NavRootFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListIdxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListVtxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :DockIsActive && return unsafe_load(_getptr(x, f)) + f === :DockNodeIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabWantClose && return unsafe_load(_getptr(x, f)) + f === :DockOrder && return unsafe_load(_getptr(x, f)) + f === :DockStyle && return _getptr(x, f) + f === :DockNode && return unsafe_load(_getptr(x, f)) + f === :DockNodeAsHost && return unsafe_load(_getptr(x, f)) + f === :DockId && return unsafe_load(_getptr(x, f)) + f === :DockTabItemStatusFlags && return unsafe_load(_getptr(x, f)) + f === :DockTabItemRect && return _getptr(x, f) return getfield(x, f) end @@ -1671,7 +2250,7 @@ end function Base.setproperty!(x::Ptr{ImGuiWindow}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1839,10 +2418,17 @@ struct ImGuiStyleMod data::NTuple{12, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyleMod}, f::Symbol) f === :VarIdx && return Ptr{ImGuiStyleVar}(x + 0) f === :BackupInt && return Ptr{NTuple{2, Cint}}(x + 4) f === :BackupFloat && return Ptr{NTuple{2, Cfloat}}(x + 4) + error("Unrecognized field of type `ImGuiStyleMod`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) + f === :VarIdx && return unsafe_load(_getptr(x, f)) + f === :BackupInt && return _getptr(x, f) + f === :BackupFloat && return _getptr(x, f) return getfield(x, f) end @@ -1854,7 +2440,7 @@ function Base.getproperty(x::ImGuiStyleMod, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStyleMod}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStyleMod @@ -2229,7 +2815,7 @@ struct ImGuiTableColumn data::NTuple{112, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :Flags && return Ptr{ImGuiTableColumnFlags}(x + 0) f === :WidthGiven && return Ptr{Cfloat}(x + 4) f === :MinX && return Ptr{Cfloat}(x + 8) @@ -2271,6 +2857,51 @@ function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :SortDirectionsAvailCount && return (Ptr{ImU8}(x + 108), 10, 2) f === :SortDirectionsAvailMask && return (Ptr{ImU8}(x + 108), 12, 4) f === :SortDirectionsAvailList && return Ptr{ImU8}(x + 110) + error("Unrecognized field of type `ImGuiTableColumn`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :WidthGiven && return unsafe_load(_getptr(x, f)) + f === :MinX && return unsafe_load(_getptr(x, f)) + f === :MaxX && return unsafe_load(_getptr(x, f)) + f === :WidthRequest && return unsafe_load(_getptr(x, f)) + f === :WidthAuto && return unsafe_load(_getptr(x, f)) + f === :StretchWeight && return unsafe_load(_getptr(x, f)) + f === :InitStretchWeightOrWidth && return unsafe_load(_getptr(x, f)) + f === :ClipRect && return _getptr(x, f) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :WorkMinX && return unsafe_load(_getptr(x, f)) + f === :WorkMaxX && return unsafe_load(_getptr(x, f)) + f === :ItemWidth && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXFrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXUnfrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersUsed && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersIdeal && return unsafe_load(_getptr(x, f)) + f === :NameOffset && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IndexWithinEnabledSet && return unsafe_load(_getptr(x, f)) + f === :PrevEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :NextEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :DrawChannelFrozen && return unsafe_load(_getptr(x, f)) + f === :DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabledNextFrame && return unsafe_load(_getptr(x, f)) + f === :IsVisibleX && return unsafe_load(_getptr(x, f)) + f === :IsVisibleY && return unsafe_load(_getptr(x, f)) + f === :IsRequestOutput && return unsafe_load(_getptr(x, f)) + f === :IsSkipItems && return unsafe_load(_getptr(x, f)) + f === :IsPreserveWidthAuto && return unsafe_load(_getptr(x, f)) + f === :NavLayerCurrent && return unsafe_load(_getptr(x, f)) + f === :AutoFitQueue && return unsafe_load(_getptr(x, f)) + f === :CannotSkipItemsQueue && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailCount && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailMask && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailList && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2298,7 +2929,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumn}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2385,7 +3016,7 @@ struct ImGuiTable data::NTuple{512, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) +function _getptr(x::Ptr{ImGuiTable}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiTableFlags}(x + 4) f === :RawData && return Ptr{Ptr{Cvoid}}(x + 8) @@ -2498,6 +3129,122 @@ function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) f === :HasScrollbarYPrev && return Ptr{Bool}(x + 507) f === :MemoryCompacted && return Ptr{Bool}(x + 508) f === :HostSkipItems && return Ptr{Bool}(x + 509) + error("Unrecognized field of type `ImGuiTable`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :RawData && return unsafe_load(_getptr(x, f)) + f === :TempData && return unsafe_load(_getptr(x, f)) + f === :Columns && return _getptr(x, f) + f === :DisplayOrderToIndex && return _getptr(x, f) + f === :RowCellData && return _getptr(x, f) + f === :EnabledMaskByDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :EnabledMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :VisibleMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :SettingsLoadedFlags && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :ColumnsCount && return unsafe_load(_getptr(x, f)) + f === :CurrentRow && return unsafe_load(_getptr(x, f)) + f === :CurrentColumn && return unsafe_load(_getptr(x, f)) + f === :InstanceCurrent && return unsafe_load(_getptr(x, f)) + f === :InstanceInteracted && return unsafe_load(_getptr(x, f)) + f === :RowPosY1 && return unsafe_load(_getptr(x, f)) + f === :RowPosY2 && return unsafe_load(_getptr(x, f)) + f === :RowMinHeight && return unsafe_load(_getptr(x, f)) + f === :RowCellPaddingY && return unsafe_load(_getptr(x, f)) + f === :RowTextBaseline && return unsafe_load(_getptr(x, f)) + f === :RowIndentOffsetX && return unsafe_load(_getptr(x, f)) + f === :RowFlags && return unsafe_load(_getptr(x, f)) + f === :LastRowFlags && return unsafe_load(_getptr(x, f)) + f === :RowBgColorCounter && return unsafe_load(_getptr(x, f)) + f === :RowBgColor && return _getptr(x, f) + f === :BorderColorStrong && return unsafe_load(_getptr(x, f)) + f === :BorderColorLight && return unsafe_load(_getptr(x, f)) + f === :BorderX1 && return unsafe_load(_getptr(x, f)) + f === :BorderX2 && return unsafe_load(_getptr(x, f)) + f === :HostIndentX && return unsafe_load(_getptr(x, f)) + f === :MinColumnWidth && return unsafe_load(_getptr(x, f)) + f === :OuterPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX1 && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX2 && return unsafe_load(_getptr(x, f)) + f === :InnerWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsGivenWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsAutoFitWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsStretchSumWeights && return unsafe_load(_getptr(x, f)) + f === :ResizedColumnNextWidth && return unsafe_load(_getptr(x, f)) + f === :ResizeLockMinContentsX2 && return unsafe_load(_getptr(x, f)) + f === :RefScale && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersHeight && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersSlope && return unsafe_load(_getptr(x, f)) + f === :OuterRect && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :BgClipRect && return _getptr(x, f) + f === :Bg0ClipRectForDrawCmd && return _getptr(x, f) + f === :Bg2ClipRectForDrawCmd && return _getptr(x, f) + f === :HostClipRect && return _getptr(x, f) + f === :HostBackupInnerClipRect && return _getptr(x, f) + f === :OuterWindow && return unsafe_load(_getptr(x, f)) + f === :InnerWindow && return unsafe_load(_getptr(x, f)) + f === :ColumnsNames && return _getptr(x, f) + f === :DrawSplitter && return unsafe_load(_getptr(x, f)) + f === :InstanceDataFirst && return _getptr(x, f) + f === :InstanceDataExtra && return _getptr(x, f) + f === :SortSpecsSingle && return _getptr(x, f) + f === :SortSpecsMulti && return _getptr(x, f) + f === :SortSpecs && return _getptr(x, f) + f === :SortSpecsCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledFixedCount && return unsafe_load(_getptr(x, f)) + f === :DeclColumnsCount && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersCount && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBody && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBorder && return unsafe_load(_getptr(x, f)) + f === :HighlightColumnHeader && return unsafe_load(_getptr(x, f)) + f === :AutoFitSingleColumn && return unsafe_load(_getptr(x, f)) + f === :ResizedColumn && return unsafe_load(_getptr(x, f)) + f === :LastResizedColumn && return unsafe_load(_getptr(x, f)) + f === :HeldHeaderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumnDir && return unsafe_load(_getptr(x, f)) + f === :LeftMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :LeftMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :ContextPopupColumn && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsCount && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsCount && return unsafe_load(_getptr(x, f)) + f === :RowCellDataCurrent && return unsafe_load(_getptr(x, f)) + f === :DummyDrawChannel && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsLayoutLocked && return unsafe_load(_getptr(x, f)) + f === :IsInsideRow && return unsafe_load(_getptr(x, f)) + f === :IsInitializing && return unsafe_load(_getptr(x, f)) + f === :IsSortSpecsDirty && return unsafe_load(_getptr(x, f)) + f === :IsUsingHeaders && return unsafe_load(_getptr(x, f)) + f === :IsContextPopupOpen && return unsafe_load(_getptr(x, f)) + f === :DisableDefaultContextMenu && return unsafe_load(_getptr(x, f)) + f === :IsSettingsRequestLoad && return unsafe_load(_getptr(x, f)) + f === :IsSettingsDirty && return unsafe_load(_getptr(x, f)) + f === :IsDefaultDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IsResetAllRequest && return unsafe_load(_getptr(x, f)) + f === :IsResetDisplayOrderRequest && return unsafe_load(_getptr(x, f)) + f === :IsUnfrozenRows && return unsafe_load(_getptr(x, f)) + f === :IsDefaultSizingPolicy && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdAliveBeforeTable && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdInTable && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYCurr && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYPrev && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :HostSkipItems && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2525,7 +3272,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTable}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2830,12 +3577,21 @@ struct ImGuiStackLevelInfo data::NTuple{64, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) +function _getptr(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :QueryFrameCount && return Ptr{ImS8}(x + 4) f === :QuerySuccess && return Ptr{Bool}(x + 5) f === :DataType && return (Ptr{ImGuiDataType}(x + 4), 16, 8) f === :Desc && return Ptr{NTuple{57, Cchar}}(x + 7) + error("Unrecognized field of type `ImGuiStackLevelInfo`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :QueryFrameCount && return unsafe_load(_getptr(x, f)) + f === :QuerySuccess && return unsafe_load(_getptr(x, f)) + f === :DataType && return unsafe_load(_getptr(x, f)) + f === :Desc && return _getptr(x, f) return getfield(x, f) end @@ -2863,7 +3619,7 @@ end function Base.setproperty!(x::Ptr{ImGuiStackLevelInfo}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2914,7 +3670,7 @@ struct ImGuiContext data::NTuple{13528, UInt8} end -function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) +function _getptr(x::Ptr{ImGuiContext}, f::Symbol) f === :Initialized && return Ptr{Bool}(x + 0) f === :FontAtlasOwnedByContext && return Ptr{Bool}(x + 1) f === :IO && return Ptr{ImGuiIO}(x + 8) @@ -3205,6 +3961,300 @@ function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) f === :WantTextInputNextFrame && return Ptr{Cint}(x + 13444) f === :TempBuffer && return Ptr{ImVector_char}(x + 13448) f === :TempKeychordName && return Ptr{NTuple{64, Cchar}}(x + 13460) + error("Unrecognized field of type `ImGuiContext`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) + f === :Initialized && return unsafe_load(_getptr(x, f)) + f === :FontAtlasOwnedByContext && return unsafe_load(_getptr(x, f)) + f === :IO && return _getptr(x, f) + f === :PlatformIO && return _getptr(x, f) + f === :Style && return _getptr(x, f) + f === :ConfigFlagsCurrFrame && return unsafe_load(_getptr(x, f)) + f === :ConfigFlagsLastFrame && return unsafe_load(_getptr(x, f)) + f === :Font && return unsafe_load(_getptr(x, f)) + f === :FontSize && return unsafe_load(_getptr(x, f)) + f === :FontBaseSize && return unsafe_load(_getptr(x, f)) + f === :CurrentDpiScale && return unsafe_load(_getptr(x, f)) + f === :DrawListSharedData && return _getptr(x, f) + f === :Time && return unsafe_load(_getptr(x, f)) + f === :FrameCount && return unsafe_load(_getptr(x, f)) + f === :FrameCountEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountPlatformEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountRendered && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScope && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScopeWithImplicitWindow && return unsafe_load(_getptr(x, f)) + f === :WithinEndChild && return unsafe_load(_getptr(x, f)) + f === :GcCompactAll && return unsafe_load(_getptr(x, f)) + f === :TestEngineHookItems && return unsafe_load(_getptr(x, f)) + f === :TestEngine && return unsafe_load(_getptr(x, f)) + f === :InputEventsQueue && return _getptr(x, f) + f === :InputEventsTrail && return _getptr(x, f) + f === :InputEventsNextMouseSource && return unsafe_load(_getptr(x, f)) + f === :InputEventsNextEventId && return unsafe_load(_getptr(x, f)) + f === :Windows && return _getptr(x, f) + f === :WindowsFocusOrder && return _getptr(x, f) + f === :WindowsTempSortBuffer && return _getptr(x, f) + f === :CurrentWindowStack && return _getptr(x, f) + f === :WindowsById && return _getptr(x, f) + f === :WindowsActiveCount && return unsafe_load(_getptr(x, f)) + f === :WindowsHoverPadding && return _getptr(x, f) + f === :DebugBreakInWindow && return unsafe_load(_getptr(x, f)) + f === :CurrentWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindowUnderMovingWindow && return unsafe_load(_getptr(x, f)) + f === :MovingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowRefMousePos && return _getptr(x, f) + f === :WheelingWindowStartFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowScrolledFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowReleaseTimer && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowWheelRemainder && return _getptr(x, f) + f === :WheelingAxisAvg && return _getptr(x, f) + f === :DebugHookIdInfo && return unsafe_load(_getptr(x, f)) + f === :HoveredId && return unsafe_load(_getptr(x, f)) + f === :HoveredIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoveredIdTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdNotActiveTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :HoveredIdDisabled && return unsafe_load(_getptr(x, f)) + f === :ItemUnclipByLog && return unsafe_load(_getptr(x, f)) + f === :ActiveId && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsJustActivated && return unsafe_load(_getptr(x, f)) + f === :ActiveIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :ActiveIdNoClearOnFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenPressedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedThisFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdFromShortcut && return unsafe_load(_getptr(x, f)) + f === :ActiveIdMouseButton && return unsafe_load(_getptr(x, f)) + f === :ActiveIdClickOffset && return _getptr(x, f) + f === :ActiveIdWindow && return unsafe_load(_getptr(x, f)) + f === :ActiveIdSource && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameWindow && return unsafe_load(_getptr(x, f)) + f === :LastActiveId && return unsafe_load(_getptr(x, f)) + f === :LastActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeFromNoneTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyboardKeyPressTime && return unsafe_load(_getptr(x, f)) + f === :KeysMayBeCharInput && return _getptr(x, f) + f === :KeysOwnerData && return _getptr(x, f) + f === :KeysRoutingTable && return _getptr(x, f) + f === :ActiveIdUsingNavDirMask && return unsafe_load(_getptr(x, f)) + f === :ActiveIdUsingAllKeyboardKeys && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInShortcutRouting && return unsafe_load(_getptr(x, f)) + f === :CurrentFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :CurrentItemFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLocateId && return unsafe_load(_getptr(x, f)) + f === :NextItemData && return _getptr(x, f) + f === :LastItemData && return _getptr(x, f) + f === :NextWindowData && return _getptr(x, f) + f === :DebugShowGroupRects && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorIdx && return unsafe_load(_getptr(x, f)) + f === :ColorStack && return _getptr(x, f) + f === :StyleVarStack && return _getptr(x, f) + f === :FontStack && return _getptr(x, f) + f === :FocusScopeStack && return _getptr(x, f) + f === :ItemFlagsStack && return _getptr(x, f) + f === :GroupStack && return _getptr(x, f) + f === :OpenPopupStack && return _getptr(x, f) + f === :BeginPopupStack && return _getptr(x, f) + f === :NavTreeNodeStack && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) + f === :CurrentViewport && return unsafe_load(_getptr(x, f)) + f === :MouseViewport && return unsafe_load(_getptr(x, f)) + f === :MouseLastHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :PlatformLastFocusedViewportId && return unsafe_load(_getptr(x, f)) + f === :FallbackMonitor && return _getptr(x, f) + f === :PlatformMonitorsFullWorkRect && return _getptr(x, f) + f === :ViewportCreatedCount && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowsCreatedCount && return unsafe_load(_getptr(x, f)) + f === :ViewportFocusedStampCount && return unsafe_load(_getptr(x, f)) + f === :NavWindow && return unsafe_load(_getptr(x, f)) + f === :NavId && return unsafe_load(_getptr(x, f)) + f === :NavFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavActivateId && return unsafe_load(_getptr(x, f)) + f === :NavActivateDownId && return unsafe_load(_getptr(x, f)) + f === :NavActivatePressedId && return unsafe_load(_getptr(x, f)) + f === :NavActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavFocusRoute && return _getptr(x, f) + f === :NavHighlightActivatedId && return unsafe_load(_getptr(x, f)) + f === :NavHighlightActivatedTimer && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateId && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavInputSource && return unsafe_load(_getptr(x, f)) + f === :NavLayer && return unsafe_load(_getptr(x, f)) + f === :NavLastValidSelectionUserData && return unsafe_load(_getptr(x, f)) + f === :NavIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :NavMousePosDirty && return unsafe_load(_getptr(x, f)) + f === :NavDisableHighlight && return unsafe_load(_getptr(x, f)) + f === :NavDisableMouseHover && return unsafe_load(_getptr(x, f)) + f === :NavAnyRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequestFromMove && return unsafe_load(_getptr(x, f)) + f === :NavInitResult && return _getptr(x, f) + f === :NavMoveSubmitted && return unsafe_load(_getptr(x, f)) + f === :NavMoveScoringItems && return unsafe_load(_getptr(x, f)) + f === :NavMoveForwardToNextFrame && return unsafe_load(_getptr(x, f)) + f === :NavMoveFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveScrollFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavMoveDir && return unsafe_load(_getptr(x, f)) + f === :NavMoveDirForDebug && return unsafe_load(_getptr(x, f)) + f === :NavMoveClipDir && return unsafe_load(_getptr(x, f)) + f === :NavScoringRect && return _getptr(x, f) + f === :NavScoringNoClipRect && return _getptr(x, f) + f === :NavScoringDebugCount && return unsafe_load(_getptr(x, f)) + f === :NavTabbingDir && return unsafe_load(_getptr(x, f)) + f === :NavTabbingCounter && return unsafe_load(_getptr(x, f)) + f === :NavMoveResultLocal && return _getptr(x, f) + f === :NavMoveResultLocalVisible && return _getptr(x, f) + f === :NavMoveResultOther && return _getptr(x, f) + f === :NavTabbingResultFirst && return _getptr(x, f) + f === :ConfigNavWindowingKeyNext && return unsafe_load(_getptr(x, f)) + f === :ConfigNavWindowingKeyPrev && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTarget && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTargetAnim && return unsafe_load(_getptr(x, f)) + f === :NavWindowingListWindow && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTimer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingHighlightAlpha && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleLayer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleKey && return unsafe_load(_getptr(x, f)) + f === :NavWindowingAccumDeltaPos && return _getptr(x, f) + f === :NavWindowingAccumDeltaSize && return _getptr(x, f) + f === :DimBgRatio && return unsafe_load(_getptr(x, f)) + f === :DragDropActive && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinSource && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinTarget && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropMouseButton && return unsafe_load(_getptr(x, f)) + f === :DragDropPayload && return _getptr(x, f) + f === :DragDropTargetRect && return _getptr(x, f) + f === :DragDropTargetClipRect && return _getptr(x, f) + f === :DragDropTargetId && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurrRectSurface && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurr && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdPrev && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropHoldJustPressedId && return unsafe_load(_getptr(x, f)) + f === :DragDropPayloadBufHeap && return _getptr(x, f) + f === :DragDropPayloadBufLocal && return _getptr(x, f) + f === :ClipperTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :ClipperTempData && return _getptr(x, f) + f === :CurrentTable && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInTable && return unsafe_load(_getptr(x, f)) + f === :TablesTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :TablesTempData && return _getptr(x, f) + f === :Tables && return _getptr(x, f) + f === :TablesLastTimeActive && return _getptr(x, f) + f === :DrawChannelsTempMergeBuffer && return _getptr(x, f) + f === :CurrentTabBar && return unsafe_load(_getptr(x, f)) + f === :TabBars && return _getptr(x, f) + f === :CurrentTabBarStack && return _getptr(x, f) + f === :ShrinkWidthBuffer && return _getptr(x, f) + f === :HoverItemDelayId && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayClearTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :HoverWindowUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :MouseCursor && return unsafe_load(_getptr(x, f)) + f === :MouseStationaryTimer && return unsafe_load(_getptr(x, f)) + f === :MouseLastValidPos && return _getptr(x, f) + f === :InputTextState && return _getptr(x, f) + f === :InputTextDeactivatedState && return _getptr(x, f) + f === :InputTextPasswordFont && return _getptr(x, f) + f === :TempInputId && return unsafe_load(_getptr(x, f)) + f === :DataTypeZeroValue && return _getptr(x, f) + f === :BeginMenuDepth && return unsafe_load(_getptr(x, f)) + f === :BeginComboDepth && return unsafe_load(_getptr(x, f)) + f === :ColorEditOptions && return unsafe_load(_getptr(x, f)) + f === :ColorEditCurrentID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedHue && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedSat && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedColor && return unsafe_load(_getptr(x, f)) + f === :ColorPickerRef && return _getptr(x, f) + f === :ComboPreviewData && return _getptr(x, f) + f === :WindowResizeBorderExpectedRect && return _getptr(x, f) + f === :WindowResizeRelativeMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSeekMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarClickDeltaToGrabCenter && return unsafe_load(_getptr(x, f)) + f === :SliderGrabClickOffset && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :DragSpeedDefaultRatio && return unsafe_load(_getptr(x, f)) + f === :DisabledAlphaBackup && return unsafe_load(_getptr(x, f)) + f === :DisabledStackSize && return unsafe_load(_getptr(x, f)) + f === :LockMarkEdited && return unsafe_load(_getptr(x, f)) + f === :TooltipOverrideCount && return unsafe_load(_getptr(x, f)) + f === :ClipboardHandlerData && return _getptr(x, f) + f === :MenusIdSubmittedThisFrame && return _getptr(x, f) + f === :TypingSelectState && return _getptr(x, f) + f === :PlatformImeData && return _getptr(x, f) + f === :PlatformImeDataPrev && return _getptr(x, f) + f === :PlatformImeViewport && return unsafe_load(_getptr(x, f)) + f === :DockContext && return _getptr(x, f) + f === :DockNodeWindowMenuHandler && return unsafe_load(_getptr(x, f)) + f === :SettingsLoaded && return unsafe_load(_getptr(x, f)) + f === :SettingsDirtyTimer && return unsafe_load(_getptr(x, f)) + f === :SettingsIniData && return _getptr(x, f) + f === :SettingsHandlers && return _getptr(x, f) + f === :SettingsWindows && return _getptr(x, f) + f === :SettingsTables && return _getptr(x, f) + f === :Hooks && return _getptr(x, f) + f === :HookIdNext && return unsafe_load(_getptr(x, f)) + f === :LocalizationTable && return _getptr(x, f) + f === :LogEnabled && return unsafe_load(_getptr(x, f)) + f === :LogType && return unsafe_load(_getptr(x, f)) + f === :LogFile && return unsafe_load(_getptr(x, f)) + f === :LogBuffer && return _getptr(x, f) + f === :LogNextPrefix && return unsafe_load(_getptr(x, f)) + f === :LogNextSuffix && return unsafe_load(_getptr(x, f)) + f === :LogLinePosY && return unsafe_load(_getptr(x, f)) + f === :LogLineFirstItem && return unsafe_load(_getptr(x, f)) + f === :LogDepthRef && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpand && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpandDefault && return unsafe_load(_getptr(x, f)) + f === :DebugLogFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogBuf && return _getptr(x, f) + f === :DebugLogIndex && return _getptr(x, f) + f === :DebugLogAutoDisableFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogAutoDisableFrames && return unsafe_load(_getptr(x, f)) + f === :DebugLocateFrames && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInLocateId && return unsafe_load(_getptr(x, f)) + f === :DebugBreakKeyChord && return unsafe_load(_getptr(x, f)) + f === :DebugBeginReturnValueCullDepth && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerActive && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerMouseButton && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerBreakId && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorTime && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorBackup && return _getptr(x, f) + f === :DebugMetricsConfig && return _getptr(x, f) + f === :DebugIDStackTool && return _getptr(x, f) + f === :DebugAllocInfo && return _getptr(x, f) + f === :DebugHoveredDockNode && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrame && return _getptr(x, f) + f === :FramerateSecPerFrameIdx && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameCount && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameAccum && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouseNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboardNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantTextInputNextFrame && return unsafe_load(_getptr(x, f)) + f === :TempBuffer && return _getptr(x, f) + f === :TempKeychordName && return _getptr(x, f) return getfield(x, f) end @@ -3232,7 +4282,7 @@ end function Base.setproperty!(x::Ptr{ImGuiContext}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -3277,16 +4327,24 @@ struct ImGuiSizeCallbackData CurrentSize::ImVec2 DesiredSize::ImVec2 end -function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) +function _getptr(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) f === :UserData && return Ptr{Ptr{Cvoid}}(x + 0) f === :Pos && return Ptr{ImVec2}(x + 4) f === :CurrentSize && return Ptr{ImVec2}(x + 12) f === :DesiredSize && return Ptr{ImVec2}(x + 20) + error("Unrecognized field of type `ImGuiSizeCallbackData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :CurrentSize && return _getptr(x, f) + f === :DesiredSize && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiSizeCallbackData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -4379,7 +5437,7 @@ struct ImGuiTableColumnSettings data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :WidthOrWeight && return Ptr{Cfloat}(x + 0) f === :UserID && return Ptr{ImGuiID}(x + 4) f === :Index && return Ptr{ImGuiTableColumnIdx}(x + 8) @@ -4388,6 +5446,18 @@ function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :SortDirection && return (Ptr{ImU8}(x + 12), 16, 2) f === :IsEnabled && return (Ptr{ImU8}(x + 12), 18, 1) f === :IsStretch && return (Ptr{ImU8}(x + 12), 19, 1) + error("Unrecognized field of type `ImGuiTableColumnSettings`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) + f === :WidthOrWeight && return unsafe_load(_getptr(x, f)) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :Index && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsStretch && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -4415,7 +5485,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumnSettings}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) diff --git a/lib/i686-linux-gnu.jl b/lib/i686-linux-gnu.jl index 6e5b3e9..befff08 100644 --- a/lib/i686-linux-gnu.jl +++ b/lib/i686-linux-gnu.jl @@ -1,4 +1,4 @@ -using CEnum +using CEnum: CEnum, @cenum to_c_type(t::Type) = t to_c_type_pairs(va_list) = map(enumerate(to_c_type.(va_list))) do (ind, type) @@ -32,16 +32,24 @@ struct ImVec4 z::Cfloat w::Cfloat end -function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) +function _getptr(x::Ptr{ImVec4}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) f === :z && return Ptr{Cfloat}(x + 8) f === :w && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImVec4`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) + f === :z && return unsafe_load(_getptr(x, f)) + f === :w && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec4}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -56,7 +64,7 @@ struct ImDrawCmd UserCallback::ImDrawCallback UserCallbackData::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) +function _getptr(x::Ptr{ImDrawCmd}, f::Symbol) f === :ClipRect && return Ptr{ImVec4}(x + 0) f === :TextureId && return Ptr{ImTextureID}(x + 16) f === :VtxOffset && return Ptr{Cuint}(x + 20) @@ -64,11 +72,22 @@ function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) f === :ElemCount && return Ptr{Cuint}(x + 28) f === :UserCallback && return Ptr{ImDrawCallback}(x + 32) f === :UserCallbackData && return Ptr{Ptr{Cvoid}}(x + 36) + error("Unrecognized field of type `ImDrawCmd`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) + f === :ClipRect && return _getptr(x, f) + f === :TextureId && return unsafe_load(_getptr(x, f)) + f === :VtxOffset && return unsafe_load(_getptr(x, f)) + f === :IdxOffset && return unsafe_load(_getptr(x, f)) + f === :ElemCount && return unsafe_load(_getptr(x, f)) + f === :UserCallback && return unsafe_load(_getptr(x, f)) + f === :UserCallbackData && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawCmd}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -95,14 +114,20 @@ struct ImVec2 x::Cfloat y::Cfloat end -function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) +function _getptr(x::Ptr{ImVec2}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) + error("Unrecognized field of type `ImVec2`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec2}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -119,6 +144,24 @@ struct ImVector_ImDrawVert Capacity::Cint Data::Ptr{ImDrawVert} end +function _getptr(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return Ptr{Cint}(x + 0) + f === :Capacity && return Ptr{Cint}(x + 4) + f === :Data && return Ptr{Ptr{ImDrawVert}}(x + 8) + error("Unrecognized field of type `ImVector_ImDrawVert`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return unsafe_load(_getptr(x, f)) + f === :Capacity && return unsafe_load(_getptr(x, f)) + f === :Data && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImVector_ImDrawVert}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImDrawListFlags = Cint @@ -142,7 +185,7 @@ struct ImFontGlyph data::NTuple{40, UInt8} end -function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) +function _getptr(x::Ptr{ImFontGlyph}, f::Symbol) f === :Colored && return (Ptr{Cuint}(x + 0), 0, 1) f === :Visible && return (Ptr{Cuint}(x + 0), 1, 1) f === :Codepoint && return (Ptr{Cuint}(x + 0), 2, 30) @@ -155,6 +198,22 @@ function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) f === :V0 && return Ptr{Cfloat}(x + 28) f === :U1 && return Ptr{Cfloat}(x + 32) f === :V1 && return Ptr{Cfloat}(x + 36) + error("Unrecognized field of type `ImFontGlyph`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) + f === :Colored && return unsafe_load(_getptr(x, f)) + f === :Visible && return unsafe_load(_getptr(x, f)) + f === :Codepoint && return unsafe_load(_getptr(x, f)) + f === :AdvanceX && return unsafe_load(_getptr(x, f)) + f === :X0 && return unsafe_load(_getptr(x, f)) + f === :Y0 && return unsafe_load(_getptr(x, f)) + f === :X1 && return unsafe_load(_getptr(x, f)) + f === :Y1 && return unsafe_load(_getptr(x, f)) + f === :U0 && return unsafe_load(_getptr(x, f)) + f === :V0 && return unsafe_load(_getptr(x, f)) + f === :U1 && return unsafe_load(_getptr(x, f)) + f === :V1 && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -182,7 +241,7 @@ end function Base.setproperty!(x::Ptr{ImFontGlyph}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -270,7 +329,7 @@ function Base.getproperty(x::ImFontConfig, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) +function _getptr(x::Ptr{ImFontConfig}, f::Symbol) f === :FontData && return Ptr{Ptr{Cvoid}}(x + 0) f === :FontDataSize && return Ptr{Cint}(x + 4) f === :FontDataOwnedByAtlas && return Ptr{Bool}(x + 8) @@ -291,11 +350,35 @@ function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) f === :EllipsisChar && return Ptr{ImWchar}(x + 76) f === :Name && return Ptr{NTuple{40, Cchar}}(x + 78) f === :DstFont && return Ptr{Ptr{ImFont}}(x + 120) + error("Unrecognized field of type `ImFontConfig`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) + f === :FontData && return unsafe_load(_getptr(x, f)) + f === :FontDataSize && return unsafe_load(_getptr(x, f)) + f === :FontDataOwnedByAtlas && return unsafe_load(_getptr(x, f)) + f === :FontNo && return unsafe_load(_getptr(x, f)) + f === :SizePixels && return unsafe_load(_getptr(x, f)) + f === :OversampleH && return unsafe_load(_getptr(x, f)) + f === :OversampleV && return unsafe_load(_getptr(x, f)) + f === :PixelSnapH && return unsafe_load(_getptr(x, f)) + f === :GlyphExtraSpacing && return _getptr(x, f) + f === :GlyphOffset && return _getptr(x, f) + f === :GlyphRanges && return unsafe_load(_getptr(x, f)) + f === :GlyphMinAdvanceX && return unsafe_load(_getptr(x, f)) + f === :GlyphMaxAdvanceX && return unsafe_load(_getptr(x, f)) + f === :MergeMode && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :RasterizerMultiply && return unsafe_load(_getptr(x, f)) + f === :RasterizerDensity && return unsafe_load(_getptr(x, f)) + f === :EllipsisChar && return unsafe_load(_getptr(x, f)) + f === :Name && return _getptr(x, f) + f === :DstFont && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontConfig}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImFontConfig @@ -332,7 +415,7 @@ struct ImFontAtlas PackIdMouseCursors::Cint PackIdLines::Cint end -function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) +function _getptr(x::Ptr{ImFontAtlas}, f::Symbol) f === :Flags && return Ptr{ImFontAtlasFlags}(x + 0) f === :TexID && return Ptr{ImTextureID}(x + 4) f === :TexDesiredWidth && return Ptr{Cint}(x + 8) @@ -355,11 +438,37 @@ function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) f === :FontBuilderFlags && return Ptr{Cuint}(x + 1124) f === :PackIdMouseCursors && return Ptr{Cint}(x + 1128) f === :PackIdLines && return Ptr{Cint}(x + 1132) + error("Unrecognized field of type `ImFontAtlas`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :TexID && return unsafe_load(_getptr(x, f)) + f === :TexDesiredWidth && return unsafe_load(_getptr(x, f)) + f === :TexGlyphPadding && return unsafe_load(_getptr(x, f)) + f === :Locked && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :TexReady && return unsafe_load(_getptr(x, f)) + f === :TexPixelsUseColors && return unsafe_load(_getptr(x, f)) + f === :TexPixelsAlpha8 && return unsafe_load(_getptr(x, f)) + f === :TexPixelsRGBA32 && return unsafe_load(_getptr(x, f)) + f === :TexWidth && return unsafe_load(_getptr(x, f)) + f === :TexHeight && return unsafe_load(_getptr(x, f)) + f === :TexUvScale && return _getptr(x, f) + f === :TexUvWhitePixel && return _getptr(x, f) + f === :Fonts && return _getptr(x, f) + f === :CustomRects && return _getptr(x, f) + f === :ConfigData && return _getptr(x, f) + f === :TexUvLines && return _getptr(x, f) + f === :FontBuilderIO && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :PackIdMouseCursors && return unsafe_load(_getptr(x, f)) + f === :PackIdLines && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontAtlas}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -456,7 +565,7 @@ struct ImDrawList _FringeScale::Cfloat _OwnerName::Ptr{Cchar} end -function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) +function _getptr(x::Ptr{ImDrawList}, f::Symbol) f === :CmdBuffer && return Ptr{ImVector_ImDrawCmd}(x + 0) f === :IdxBuffer && return Ptr{ImVector_ImDrawIdx}(x + 12) f === :VtxBuffer && return Ptr{ImVector_ImDrawVert}(x + 24) @@ -472,11 +581,30 @@ function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) f === :_TextureIdStack && return Ptr{ImVector_ImTextureID}(x + 124) f === :_FringeScale && return Ptr{Cfloat}(x + 136) f === :_OwnerName && return Ptr{Ptr{Cchar}}(x + 140) + error("Unrecognized field of type `ImDrawList`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) + f === :CmdBuffer && return _getptr(x, f) + f === :IdxBuffer && return _getptr(x, f) + f === :VtxBuffer && return _getptr(x, f) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :_VtxCurrentIdx && return unsafe_load(_getptr(x, f)) + f === :_Data && return unsafe_load(_getptr(x, f)) + f === :_VtxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_IdxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_Path && return _getptr(x, f) + f === :_CmdHeader && return _getptr(x, f) + f === :_Splitter && return _getptr(x, f) + f === :_ClipRectStack && return _getptr(x, f) + f === :_TextureIdStack && return _getptr(x, f) + f === :_FringeScale && return unsafe_load(_getptr(x, f)) + f === :_OwnerName && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawList}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -515,7 +643,7 @@ function Base.getproperty(x::ImGuiViewport, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) +function _getptr(x::Ptr{ImGuiViewport}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiViewportFlags}(x + 4) f === :Pos && return Ptr{ImVec2}(x + 8) @@ -533,11 +661,32 @@ function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) f === :PlatformRequestMove && return Ptr{Bool}(x + 69) f === :PlatformRequestResize && return Ptr{Bool}(x + 70) f === :PlatformRequestClose && return Ptr{Bool}(x + 71) + error("Unrecognized field of type `ImGuiViewport`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :ParentViewportId && return unsafe_load(_getptr(x, f)) + f === :DrawData && return unsafe_load(_getptr(x, f)) + f === :RendererUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) + f === :PlatformHandleRaw && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowCreated && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestMove && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestResize && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestClose && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiViewport}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImDrawData @@ -551,7 +700,7 @@ struct ImDrawData FramebufferScale::ImVec2 OwnerViewport::Ptr{ImGuiViewport} end -function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) +function _getptr(x::Ptr{ImDrawData}, f::Symbol) f === :Valid && return Ptr{Bool}(x + 0) f === :CmdListsCount && return Ptr{Cint}(x + 4) f === :TotalIdxCount && return Ptr{Cint}(x + 8) @@ -561,11 +710,24 @@ function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) f === :DisplaySize && return Ptr{ImVec2}(x + 36) f === :FramebufferScale && return Ptr{ImVec2}(x + 44) f === :OwnerViewport && return Ptr{Ptr{ImGuiViewport}}(x + 52) + error("Unrecognized field of type `ImDrawData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) + f === :Valid && return unsafe_load(_getptr(x, f)) + f === :CmdListsCount && return unsafe_load(_getptr(x, f)) + f === :TotalIdxCount && return unsafe_load(_getptr(x, f)) + f === :TotalVtxCount && return unsafe_load(_getptr(x, f)) + f === :CmdLists && return _getptr(x, f) + f === :DisplayPos && return _getptr(x, f) + f === :DisplaySize && return _getptr(x, f) + f === :FramebufferScale && return _getptr(x, f) + f === :OwnerViewport && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -602,6 +764,26 @@ struct ImGuiKeyData DownDurationPrev::Cfloat AnalogValue::Cfloat end +function _getptr(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return Ptr{Bool}(x + 0) + f === :DownDuration && return Ptr{Cfloat}(x + 4) + f === :DownDurationPrev && return Ptr{Cfloat}(x + 8) + f === :AnalogValue && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImGuiKeyData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return unsafe_load(_getptr(x, f)) + f === :DownDuration && return unsafe_load(_getptr(x, f)) + f === :DownDurationPrev && return unsafe_load(_getptr(x, f)) + f === :AnalogValue && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImGuiKeyData}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImU16 = Cushort @@ -715,7 +897,7 @@ function Base.getproperty(x::ImGuiIO, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiIO}, f::Symbol) f === :ConfigFlags && return Ptr{ImGuiConfigFlags}(x + 0) f === :BackendFlags && return Ptr{ImGuiBackendFlags}(x + 4) f === :DisplaySize && return Ptr{ImVec2}(x + 8) @@ -816,11 +998,115 @@ function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) f === :BackendUsingLegacyNavInputArray && return Ptr{Bool}(x + 2939) f === :InputQueueSurrogate && return Ptr{ImWchar16}(x + 2940) f === :InputQueueCharacters && return Ptr{ImVector_ImWchar}(x + 2944) + error("Unrecognized field of type `ImGuiIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) + f === :ConfigFlags && return unsafe_load(_getptr(x, f)) + f === :BackendFlags && return unsafe_load(_getptr(x, f)) + f === :DisplaySize && return _getptr(x, f) + f === :DeltaTime && return unsafe_load(_getptr(x, f)) + f === :IniSavingRate && return unsafe_load(_getptr(x, f)) + f === :IniFilename && return unsafe_load(_getptr(x, f)) + f === :LogFilename && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Fonts && return unsafe_load(_getptr(x, f)) + f === :FontGlobalScale && return unsafe_load(_getptr(x, f)) + f === :FontAllowUserScaling && return unsafe_load(_getptr(x, f)) + f === :FontDefault && return unsafe_load(_getptr(x, f)) + f === :DisplayFramebufferScale && return _getptr(x, f) + f === :ConfigDockingNoSplit && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingWithShift && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingAlwaysTabBar && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingTransparentPayload && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoAutoMerge && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoTaskBarIcon && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDecoration && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDefaultParent && return unsafe_load(_getptr(x, f)) + f === :MouseDrawCursor && return unsafe_load(_getptr(x, f)) + f === :ConfigMacOSXBehaviors && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTrickleEventQueue && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextCursorBlink && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextEnterKeepActive && return unsafe_load(_getptr(x, f)) + f === :ConfigDragClickToInputText && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsResizeFromEdges && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsMoveFromTitleBarOnly && return unsafe_load(_getptr(x, f)) + f === :ConfigMemoryCompactTimer && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickTime && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickMaxDist && return unsafe_load(_getptr(x, f)) + f === :MouseDragThreshold && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatDelay && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatRate && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIsDebuggerPresent && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueOnce && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueLoop && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIgnoreFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIniSettings && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformName && return unsafe_load(_getptr(x, f)) + f === :BackendRendererName && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformUserData && return unsafe_load(_getptr(x, f)) + f === :BackendRendererUserData && return unsafe_load(_getptr(x, f)) + f === :BackendLanguageUserData && return unsafe_load(_getptr(x, f)) + f === :GetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :SetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :ClipboardUserData && return unsafe_load(_getptr(x, f)) + f === :SetPlatformImeDataFn && return unsafe_load(_getptr(x, f)) + f === :PlatformLocaleDecimalPoint && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouse && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboard && return unsafe_load(_getptr(x, f)) + f === :WantTextInput && return unsafe_load(_getptr(x, f)) + f === :WantSetMousePos && return unsafe_load(_getptr(x, f)) + f === :WantSaveIniSettings && return unsafe_load(_getptr(x, f)) + f === :NavActive && return unsafe_load(_getptr(x, f)) + f === :NavVisible && return unsafe_load(_getptr(x, f)) + f === :Framerate && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderVertices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderIndices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderWindows && return unsafe_load(_getptr(x, f)) + f === :MetricsActiveWindows && return unsafe_load(_getptr(x, f)) + f === :MouseDelta && return _getptr(x, f) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseDown && return _getptr(x, f) + f === :MouseWheel && return unsafe_load(_getptr(x, f)) + f === :MouseWheelH && return unsafe_load(_getptr(x, f)) + f === :MouseSource && return unsafe_load(_getptr(x, f)) + f === :MouseHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :KeyCtrl && return unsafe_load(_getptr(x, f)) + f === :KeyShift && return unsafe_load(_getptr(x, f)) + f === :KeyAlt && return unsafe_load(_getptr(x, f)) + f === :KeySuper && return unsafe_load(_getptr(x, f)) + f === :KeyMods && return unsafe_load(_getptr(x, f)) + f === :KeysData && return _getptr(x, f) + f === :WantCaptureMouseUnlessPopupClose && return unsafe_load(_getptr(x, f)) + f === :MousePosPrev && return _getptr(x, f) + f === :MouseClickedPos && return _getptr(x, f) + f === :MouseClickedTime && return _getptr(x, f) + f === :MouseClicked && return _getptr(x, f) + f === :MouseDoubleClicked && return _getptr(x, f) + f === :MouseClickedCount && return _getptr(x, f) + f === :MouseClickedLastCount && return _getptr(x, f) + f === :MouseReleased && return _getptr(x, f) + f === :MouseDownOwned && return _getptr(x, f) + f === :MouseDownOwnedUnlessPopupClose && return _getptr(x, f) + f === :MouseWheelRequestAxisSwap && return unsafe_load(_getptr(x, f)) + f === :MouseCtrlLeftAsRightClick && return unsafe_load(_getptr(x, f)) + f === :MouseDownDuration && return _getptr(x, f) + f === :MouseDownDurationPrev && return _getptr(x, f) + f === :MouseDragMaxDistanceAbs && return _getptr(x, f) + f === :MouseDragMaxDistanceSqr && return _getptr(x, f) + f === :PenPressure && return unsafe_load(_getptr(x, f)) + f === :AppFocusLost && return unsafe_load(_getptr(x, f)) + f === :AppAcceptingEvents && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyKeyArrays && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyNavInputArray && return unsafe_load(_getptr(x, f)) + f === :InputQueueSurrogate && return unsafe_load(_getptr(x, f)) + f === :InputQueueCharacters && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImGuiPlatformMonitor @@ -831,18 +1117,28 @@ struct ImGuiPlatformMonitor DpiScale::Cfloat PlatformHandle::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) f === :MainPos && return Ptr{ImVec2}(x + 0) f === :MainSize && return Ptr{ImVec2}(x + 8) f === :WorkPos && return Ptr{ImVec2}(x + 16) f === :WorkSize && return Ptr{ImVec2}(x + 24) f === :DpiScale && return Ptr{Cfloat}(x + 32) f === :PlatformHandle && return Ptr{Ptr{Cvoid}}(x + 36) + error("Unrecognized field of type `ImGuiPlatformMonitor`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) + f === :MainPos && return _getptr(x, f) + f === :MainSize && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformMonitor}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -885,7 +1181,7 @@ struct ImGuiPlatformIO Monitors::ImVector_ImGuiPlatformMonitor Viewports::ImVector_ImGuiViewportPtr end -function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Platform_CreateWindow && return Ptr{Ptr{Cvoid}}(x + 0) f === :Platform_DestroyWindow && return Ptr{Ptr{Cvoid}}(x + 4) f === :Platform_ShowWindow && return Ptr{Ptr{Cvoid}}(x + 8) @@ -911,11 +1207,40 @@ function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Renderer_SwapBuffers && return Ptr{Ptr{Cvoid}}(x + 88) f === :Monitors && return Ptr{ImVector_ImGuiPlatformMonitor}(x + 92) f === :Viewports && return Ptr{ImVector_ImGuiViewportPtr}(x + 104) + error("Unrecognized field of type `ImGuiPlatformIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) + f === :Platform_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_ShowWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowMinimized && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowTitle && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowAlpha && return unsafe_load(_getptr(x, f)) + f === :Platform_UpdateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowDpiScale && return unsafe_load(_getptr(x, f)) + f === :Platform_OnChangedViewport && return unsafe_load(_getptr(x, f)) + f === :Platform_CreateVkSurface && return unsafe_load(_getptr(x, f)) + f === :Renderer_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Renderer_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Monitors && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -985,7 +1310,7 @@ struct ImGuiStyle HoverFlagsForTooltipMouse::ImGuiHoveredFlags HoverFlagsForTooltipNav::ImGuiHoveredFlags end -function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyle}, f::Symbol) f === :Alpha && return Ptr{Cfloat}(x + 0) f === :DisabledAlpha && return Ptr{Cfloat}(x + 4) f === :WindowPadding && return Ptr{ImVec2}(x + 8) @@ -1039,11 +1364,68 @@ function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) f === :HoverDelayNormal && return Ptr{Cfloat}(x + 1128) f === :HoverFlagsForTooltipMouse && return Ptr{ImGuiHoveredFlags}(x + 1132) f === :HoverFlagsForTooltipNav && return Ptr{ImGuiHoveredFlags}(x + 1136) + error("Unrecognized field of type `ImGuiStyle`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) + f === :Alpha && return unsafe_load(_getptr(x, f)) + f === :DisabledAlpha && return unsafe_load(_getptr(x, f)) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :WindowMinSize && return _getptr(x, f) + f === :WindowTitleAlign && return _getptr(x, f) + f === :WindowMenuButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ChildRounding && return unsafe_load(_getptr(x, f)) + f === :ChildBorderSize && return unsafe_load(_getptr(x, f)) + f === :PopupRounding && return unsafe_load(_getptr(x, f)) + f === :PopupBorderSize && return unsafe_load(_getptr(x, f)) + f === :FramePadding && return _getptr(x, f) + f === :FrameRounding && return unsafe_load(_getptr(x, f)) + f === :FrameBorderSize && return unsafe_load(_getptr(x, f)) + f === :ItemSpacing && return _getptr(x, f) + f === :ItemInnerSpacing && return _getptr(x, f) + f === :CellPadding && return _getptr(x, f) + f === :TouchExtraPadding && return _getptr(x, f) + f === :IndentSpacing && return unsafe_load(_getptr(x, f)) + f === :ColumnsMinSpacing && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSize && return unsafe_load(_getptr(x, f)) + f === :ScrollbarRounding && return unsafe_load(_getptr(x, f)) + f === :GrabMinSize && return unsafe_load(_getptr(x, f)) + f === :GrabRounding && return unsafe_load(_getptr(x, f)) + f === :LogSliderDeadzone && return unsafe_load(_getptr(x, f)) + f === :TabRounding && return unsafe_load(_getptr(x, f)) + f === :TabBorderSize && return unsafe_load(_getptr(x, f)) + f === :TabMinWidthForCloseButton && return unsafe_load(_getptr(x, f)) + f === :TabBarBorderSize && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersAngle && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersTextAlign && return _getptr(x, f) + f === :ColorButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ButtonTextAlign && return _getptr(x, f) + f === :SelectableTextAlign && return _getptr(x, f) + f === :SeparatorTextBorderSize && return unsafe_load(_getptr(x, f)) + f === :SeparatorTextAlign && return _getptr(x, f) + f === :SeparatorTextPadding && return _getptr(x, f) + f === :DisplayWindowPadding && return _getptr(x, f) + f === :DisplaySafeAreaPadding && return _getptr(x, f) + f === :DockingSeparatorSize && return unsafe_load(_getptr(x, f)) + f === :MouseCursorScale && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLines && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLinesUseTex && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedFill && return unsafe_load(_getptr(x, f)) + f === :CurveTessellationTol && return unsafe_load(_getptr(x, f)) + f === :CircleTessellationMaxError && return unsafe_load(_getptr(x, f)) + f === :Colors && return _getptr(x, f) + f === :HoverStationaryDelay && return unsafe_load(_getptr(x, f)) + f === :HoverDelayShort && return unsafe_load(_getptr(x, f)) + f === :HoverDelayNormal && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipMouse && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipNav && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiStyle}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -1071,7 +1453,7 @@ struct ImGuiInputEvent data::NTuple{28, UInt8} end -function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) +function _getptr(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Type && return Ptr{ImGuiInputEventType}(x + 0) f === :Source && return Ptr{ImGuiInputSource}(x + 4) f === :EventId && return Ptr{ImU32}(x + 8) @@ -1083,6 +1465,21 @@ function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Text && return Ptr{ImGuiInputEventText}(x + 12) f === :AppFocused && return Ptr{ImGuiInputEventAppFocused}(x + 12) f === :AddedByTestEngine && return Ptr{Bool}(x + 24) + error("Unrecognized field of type `ImGuiInputEvent`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) + f === :Type && return unsafe_load(_getptr(x, f)) + f === :Source && return unsafe_load(_getptr(x, f)) + f === :EventId && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseWheel && return _getptr(x, f) + f === :MouseButton && return _getptr(x, f) + f === :MouseViewport && return _getptr(x, f) + f === :Key && return _getptr(x, f) + f === :Text && return _getptr(x, f) + f === :AppFocused && return _getptr(x, f) + f === :AddedByTestEngine && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1094,7 +1491,7 @@ function Base.getproperty(x::ImGuiInputEvent, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiInputEvent}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiInputEvent @@ -1202,11 +1599,19 @@ struct ImGuiStoragePair data::NTuple{8, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) +function _getptr(x::Ptr{ImGuiStoragePair}, f::Symbol) f === :key && return Ptr{ImGuiID}(x + 0) f === :val_i && return Ptr{Cint}(x + 4) f === :val_f && return Ptr{Cfloat}(x + 4) f === :val_p && return Ptr{Ptr{Cvoid}}(x + 4) + error("Unrecognized field of type `ImGuiStoragePair`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) + f === :key && return unsafe_load(_getptr(x, f)) + f === :val_i && return unsafe_load(_getptr(x, f)) + f === :val_f && return unsafe_load(_getptr(x, f)) + f === :val_p && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1218,7 +1623,7 @@ function Base.getproperty(x::ImGuiStoragePair, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStoragePair}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStoragePair @@ -1426,7 +1831,7 @@ struct ImGuiDockNode data::NTuple{168, UInt8} end -function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) +function _getptr(x::Ptr{ImGuiDockNode}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :SharedFlags && return Ptr{ImGuiDockNodeFlags}(x + 4) f === :LocalFlags && return Ptr{ImGuiDockNodeFlags}(x + 8) @@ -1469,6 +1874,52 @@ function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) f === :WantMouseMove && return (Ptr{Bool}(x + 164), 17, 1) f === :WantHiddenTabBarUpdate && return (Ptr{Bool}(x + 164), 18, 1) f === :WantHiddenTabBarToggle && return (Ptr{Bool}(x + 164), 19, 1) + error("Unrecognized field of type `ImGuiDockNode`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :SharedFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlagsInWindows && return unsafe_load(_getptr(x, f)) + f === :MergedFlags && return unsafe_load(_getptr(x, f)) + f === :State && return unsafe_load(_getptr(x, f)) + f === :ParentNode && return unsafe_load(_getptr(x, f)) + f === :ChildNodes && return _getptr(x, f) + f === :Windows && return _getptr(x, f) + f === :TabBar && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeRef && return _getptr(x, f) + f === :SplitAxis && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :LastBgColor && return unsafe_load(_getptr(x, f)) + f === :HostWindow && return unsafe_load(_getptr(x, f)) + f === :VisibleWindow && return unsafe_load(_getptr(x, f)) + f === :CentralNode && return unsafe_load(_getptr(x, f)) + f === :OnlyNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :CountNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :LastFrameAlive && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameFocused && return unsafe_load(_getptr(x, f)) + f === :LastFocusedNodeId && return unsafe_load(_getptr(x, f)) + f === :SelectedTabId && return unsafe_load(_getptr(x, f)) + f === :WantCloseTabId && return unsafe_load(_getptr(x, f)) + f === :RefViewportId && return unsafe_load(_getptr(x, f)) + f === :AuthorityForPos && return unsafe_load(_getptr(x, f)) + f === :AuthorityForSize && return unsafe_load(_getptr(x, f)) + f === :AuthorityForViewport && return unsafe_load(_getptr(x, f)) + f === :IsVisible && return unsafe_load(_getptr(x, f)) + f === :IsFocused && return unsafe_load(_getptr(x, f)) + f === :IsBgDrawnThisFrame && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :HasWindowMenuButton && return unsafe_load(_getptr(x, f)) + f === :HasCentralNodeChild && return unsafe_load(_getptr(x, f)) + f === :WantCloseAll && return unsafe_load(_getptr(x, f)) + f === :WantLockSizeOnce && return unsafe_load(_getptr(x, f)) + f === :WantMouseMove && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarUpdate && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarToggle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1496,7 +1947,7 @@ end function Base.setproperty!(x::Ptr{ImGuiDockNode}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1521,7 +1972,7 @@ struct ImGuiWindow data::NTuple{1008, UInt8} end -function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) +function _getptr(x::Ptr{ImGuiWindow}, f::Symbol) f === :Ctx && return Ptr{Ptr{ImGuiContext}}(x + 0) f === :Name && return Ptr{Ptr{Cchar}}(x + 4) f === :ID && return Ptr{ImGuiID}(x + 8) @@ -1646,6 +2097,134 @@ function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) f === :DockId && return Ptr{ImGuiID}(x + 984) f === :DockTabItemStatusFlags && return Ptr{ImGuiItemStatusFlags}(x + 988) f === :DockTabItemRect && return Ptr{ImRect}(x + 992) + error("Unrecognized field of type `ImGuiWindow`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :Name && return unsafe_load(_getptr(x, f)) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :FlagsPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ChildFlags && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :Viewport && return unsafe_load(_getptr(x, f)) + f === :ViewportId && return unsafe_load(_getptr(x, f)) + f === :ViewportPos && return _getptr(x, f) + f === :ViewportAllowPlatformMonitorExtend && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeFull && return _getptr(x, f) + f === :ContentSize && return _getptr(x, f) + f === :ContentSizeIdeal && return _getptr(x, f) + f === :ContentSizeExplicit && return _getptr(x, f) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :TitleBarHeight && return unsafe_load(_getptr(x, f)) + f === :MenuBarHeight && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX2 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY2 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeY1 && return unsafe_load(_getptr(x, f)) + f === :NameBufLen && return unsafe_load(_getptr(x, f)) + f === :MoveId && return unsafe_load(_getptr(x, f)) + f === :TabId && return unsafe_load(_getptr(x, f)) + f === :ChildId && return unsafe_load(_getptr(x, f)) + f === :PopupId && return unsafe_load(_getptr(x, f)) + f === :Scroll && return _getptr(x, f) + f === :ScrollMax && return _getptr(x, f) + f === :ScrollTarget && return _getptr(x, f) + f === :ScrollTargetCenterRatio && return _getptr(x, f) + f === :ScrollTargetEdgeSnapDist && return _getptr(x, f) + f === :ScrollbarSizes && return _getptr(x, f) + f === :ScrollbarX && return unsafe_load(_getptr(x, f)) + f === :ScrollbarY && return unsafe_load(_getptr(x, f)) + f === :ViewportOwned && return unsafe_load(_getptr(x, f)) + f === :Active && return unsafe_load(_getptr(x, f)) + f === :WasActive && return unsafe_load(_getptr(x, f)) + f === :WriteAccessed && return unsafe_load(_getptr(x, f)) + f === :Collapsed && return unsafe_load(_getptr(x, f)) + f === :WantCollapseToggle && return unsafe_load(_getptr(x, f)) + f === :SkipItems && return unsafe_load(_getptr(x, f)) + f === :SkipRefresh && return unsafe_load(_getptr(x, f)) + f === :Appearing && return unsafe_load(_getptr(x, f)) + f === :Hidden && return unsafe_load(_getptr(x, f)) + f === :IsFallbackWindow && return unsafe_load(_getptr(x, f)) + f === :IsExplicitChild && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHovered && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHeld && return unsafe_load(_getptr(x, f)) + f === :BeginCount && return unsafe_load(_getptr(x, f)) + f === :BeginCountPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinParent && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinContext && return unsafe_load(_getptr(x, f)) + f === :FocusOrder && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesX && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesY && return unsafe_load(_getptr(x, f)) + f === :AutoFitOnlyGrows && return unsafe_load(_getptr(x, f)) + f === :AutoPosLastDirection && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCanSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCannotSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesForRenderOnly && return unsafe_load(_getptr(x, f)) + f === :DisableInputsFrames && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowSizeAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowCollapsedAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowDockAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosVal && return _getptr(x, f) + f === :SetWindowPosPivot && return _getptr(x, f) + f === :IDStack && return _getptr(x, f) + f === :DC && return _getptr(x, f) + f === :OuterRectClipped && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :ParentWorkRect && return _getptr(x, f) + f === :ClipRect && return _getptr(x, f) + f === :ContentRegionRect && return _getptr(x, f) + f === :HitTestHoleSize && return _getptr(x, f) + f === :HitTestHoleOffset && return _getptr(x, f) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameJustFocused && return unsafe_load(_getptr(x, f)) + f === :LastTimeActive && return unsafe_load(_getptr(x, f)) + f === :ItemWidthDefault && return unsafe_load(_getptr(x, f)) + f === :StateStorage && return _getptr(x, f) + f === :ColumnsStorage && return _getptr(x, f) + f === :FontWindowScale && return unsafe_load(_getptr(x, f)) + f === :FontDpiScale && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :DrawList && return unsafe_load(_getptr(x, f)) + f === :DrawListInst && return _getptr(x, f) + f === :ParentWindow && return unsafe_load(_getptr(x, f)) + f === :ParentWindowInBeginStack && return unsafe_load(_getptr(x, f)) + f === :RootWindow && return unsafe_load(_getptr(x, f)) + f === :RootWindowPopupTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowDockTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowForTitleBarHighlight && return unsafe_load(_getptr(x, f)) + f === :RootWindowForNav && return unsafe_load(_getptr(x, f)) + f === :ParentWindowForFocusRoute && return unsafe_load(_getptr(x, f)) + f === :NavLastChildNavWindow && return unsafe_load(_getptr(x, f)) + f === :NavLastIds && return _getptr(x, f) + f === :NavRectRel && return _getptr(x, f) + f === :NavPreferredScoringPosRel && return _getptr(x, f) + f === :NavRootFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListIdxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListVtxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :DockIsActive && return unsafe_load(_getptr(x, f)) + f === :DockNodeIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabWantClose && return unsafe_load(_getptr(x, f)) + f === :DockOrder && return unsafe_load(_getptr(x, f)) + f === :DockStyle && return _getptr(x, f) + f === :DockNode && return unsafe_load(_getptr(x, f)) + f === :DockNodeAsHost && return unsafe_load(_getptr(x, f)) + f === :DockId && return unsafe_load(_getptr(x, f)) + f === :DockTabItemStatusFlags && return unsafe_load(_getptr(x, f)) + f === :DockTabItemRect && return _getptr(x, f) return getfield(x, f) end @@ -1673,7 +2252,7 @@ end function Base.setproperty!(x::Ptr{ImGuiWindow}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1841,10 +2420,17 @@ struct ImGuiStyleMod data::NTuple{12, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyleMod}, f::Symbol) f === :VarIdx && return Ptr{ImGuiStyleVar}(x + 0) f === :BackupInt && return Ptr{NTuple{2, Cint}}(x + 4) f === :BackupFloat && return Ptr{NTuple{2, Cfloat}}(x + 4) + error("Unrecognized field of type `ImGuiStyleMod`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) + f === :VarIdx && return unsafe_load(_getptr(x, f)) + f === :BackupInt && return _getptr(x, f) + f === :BackupFloat && return _getptr(x, f) return getfield(x, f) end @@ -1856,7 +2442,7 @@ function Base.getproperty(x::ImGuiStyleMod, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStyleMod}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStyleMod @@ -2231,7 +2817,7 @@ struct ImGuiTableColumn data::NTuple{112, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :Flags && return Ptr{ImGuiTableColumnFlags}(x + 0) f === :WidthGiven && return Ptr{Cfloat}(x + 4) f === :MinX && return Ptr{Cfloat}(x + 8) @@ -2273,6 +2859,51 @@ function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :SortDirectionsAvailCount && return (Ptr{ImU8}(x + 108), 10, 2) f === :SortDirectionsAvailMask && return (Ptr{ImU8}(x + 108), 12, 4) f === :SortDirectionsAvailList && return Ptr{ImU8}(x + 110) + error("Unrecognized field of type `ImGuiTableColumn`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :WidthGiven && return unsafe_load(_getptr(x, f)) + f === :MinX && return unsafe_load(_getptr(x, f)) + f === :MaxX && return unsafe_load(_getptr(x, f)) + f === :WidthRequest && return unsafe_load(_getptr(x, f)) + f === :WidthAuto && return unsafe_load(_getptr(x, f)) + f === :StretchWeight && return unsafe_load(_getptr(x, f)) + f === :InitStretchWeightOrWidth && return unsafe_load(_getptr(x, f)) + f === :ClipRect && return _getptr(x, f) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :WorkMinX && return unsafe_load(_getptr(x, f)) + f === :WorkMaxX && return unsafe_load(_getptr(x, f)) + f === :ItemWidth && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXFrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXUnfrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersUsed && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersIdeal && return unsafe_load(_getptr(x, f)) + f === :NameOffset && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IndexWithinEnabledSet && return unsafe_load(_getptr(x, f)) + f === :PrevEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :NextEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :DrawChannelFrozen && return unsafe_load(_getptr(x, f)) + f === :DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabledNextFrame && return unsafe_load(_getptr(x, f)) + f === :IsVisibleX && return unsafe_load(_getptr(x, f)) + f === :IsVisibleY && return unsafe_load(_getptr(x, f)) + f === :IsRequestOutput && return unsafe_load(_getptr(x, f)) + f === :IsSkipItems && return unsafe_load(_getptr(x, f)) + f === :IsPreserveWidthAuto && return unsafe_load(_getptr(x, f)) + f === :NavLayerCurrent && return unsafe_load(_getptr(x, f)) + f === :AutoFitQueue && return unsafe_load(_getptr(x, f)) + f === :CannotSkipItemsQueue && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailCount && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailMask && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailList && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2300,7 +2931,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumn}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2387,7 +3018,7 @@ struct ImGuiTable data::NTuple{512, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) +function _getptr(x::Ptr{ImGuiTable}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiTableFlags}(x + 4) f === :RawData && return Ptr{Ptr{Cvoid}}(x + 8) @@ -2500,6 +3131,122 @@ function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) f === :HasScrollbarYPrev && return Ptr{Bool}(x + 507) f === :MemoryCompacted && return Ptr{Bool}(x + 508) f === :HostSkipItems && return Ptr{Bool}(x + 509) + error("Unrecognized field of type `ImGuiTable`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :RawData && return unsafe_load(_getptr(x, f)) + f === :TempData && return unsafe_load(_getptr(x, f)) + f === :Columns && return _getptr(x, f) + f === :DisplayOrderToIndex && return _getptr(x, f) + f === :RowCellData && return _getptr(x, f) + f === :EnabledMaskByDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :EnabledMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :VisibleMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :SettingsLoadedFlags && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :ColumnsCount && return unsafe_load(_getptr(x, f)) + f === :CurrentRow && return unsafe_load(_getptr(x, f)) + f === :CurrentColumn && return unsafe_load(_getptr(x, f)) + f === :InstanceCurrent && return unsafe_load(_getptr(x, f)) + f === :InstanceInteracted && return unsafe_load(_getptr(x, f)) + f === :RowPosY1 && return unsafe_load(_getptr(x, f)) + f === :RowPosY2 && return unsafe_load(_getptr(x, f)) + f === :RowMinHeight && return unsafe_load(_getptr(x, f)) + f === :RowCellPaddingY && return unsafe_load(_getptr(x, f)) + f === :RowTextBaseline && return unsafe_load(_getptr(x, f)) + f === :RowIndentOffsetX && return unsafe_load(_getptr(x, f)) + f === :RowFlags && return unsafe_load(_getptr(x, f)) + f === :LastRowFlags && return unsafe_load(_getptr(x, f)) + f === :RowBgColorCounter && return unsafe_load(_getptr(x, f)) + f === :RowBgColor && return _getptr(x, f) + f === :BorderColorStrong && return unsafe_load(_getptr(x, f)) + f === :BorderColorLight && return unsafe_load(_getptr(x, f)) + f === :BorderX1 && return unsafe_load(_getptr(x, f)) + f === :BorderX2 && return unsafe_load(_getptr(x, f)) + f === :HostIndentX && return unsafe_load(_getptr(x, f)) + f === :MinColumnWidth && return unsafe_load(_getptr(x, f)) + f === :OuterPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX1 && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX2 && return unsafe_load(_getptr(x, f)) + f === :InnerWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsGivenWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsAutoFitWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsStretchSumWeights && return unsafe_load(_getptr(x, f)) + f === :ResizedColumnNextWidth && return unsafe_load(_getptr(x, f)) + f === :ResizeLockMinContentsX2 && return unsafe_load(_getptr(x, f)) + f === :RefScale && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersHeight && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersSlope && return unsafe_load(_getptr(x, f)) + f === :OuterRect && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :BgClipRect && return _getptr(x, f) + f === :Bg0ClipRectForDrawCmd && return _getptr(x, f) + f === :Bg2ClipRectForDrawCmd && return _getptr(x, f) + f === :HostClipRect && return _getptr(x, f) + f === :HostBackupInnerClipRect && return _getptr(x, f) + f === :OuterWindow && return unsafe_load(_getptr(x, f)) + f === :InnerWindow && return unsafe_load(_getptr(x, f)) + f === :ColumnsNames && return _getptr(x, f) + f === :DrawSplitter && return unsafe_load(_getptr(x, f)) + f === :InstanceDataFirst && return _getptr(x, f) + f === :InstanceDataExtra && return _getptr(x, f) + f === :SortSpecsSingle && return _getptr(x, f) + f === :SortSpecsMulti && return _getptr(x, f) + f === :SortSpecs && return _getptr(x, f) + f === :SortSpecsCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledFixedCount && return unsafe_load(_getptr(x, f)) + f === :DeclColumnsCount && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersCount && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBody && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBorder && return unsafe_load(_getptr(x, f)) + f === :HighlightColumnHeader && return unsafe_load(_getptr(x, f)) + f === :AutoFitSingleColumn && return unsafe_load(_getptr(x, f)) + f === :ResizedColumn && return unsafe_load(_getptr(x, f)) + f === :LastResizedColumn && return unsafe_load(_getptr(x, f)) + f === :HeldHeaderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumnDir && return unsafe_load(_getptr(x, f)) + f === :LeftMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :LeftMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :ContextPopupColumn && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsCount && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsCount && return unsafe_load(_getptr(x, f)) + f === :RowCellDataCurrent && return unsafe_load(_getptr(x, f)) + f === :DummyDrawChannel && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsLayoutLocked && return unsafe_load(_getptr(x, f)) + f === :IsInsideRow && return unsafe_load(_getptr(x, f)) + f === :IsInitializing && return unsafe_load(_getptr(x, f)) + f === :IsSortSpecsDirty && return unsafe_load(_getptr(x, f)) + f === :IsUsingHeaders && return unsafe_load(_getptr(x, f)) + f === :IsContextPopupOpen && return unsafe_load(_getptr(x, f)) + f === :DisableDefaultContextMenu && return unsafe_load(_getptr(x, f)) + f === :IsSettingsRequestLoad && return unsafe_load(_getptr(x, f)) + f === :IsSettingsDirty && return unsafe_load(_getptr(x, f)) + f === :IsDefaultDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IsResetAllRequest && return unsafe_load(_getptr(x, f)) + f === :IsResetDisplayOrderRequest && return unsafe_load(_getptr(x, f)) + f === :IsUnfrozenRows && return unsafe_load(_getptr(x, f)) + f === :IsDefaultSizingPolicy && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdAliveBeforeTable && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdInTable && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYCurr && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYPrev && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :HostSkipItems && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2527,7 +3274,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTable}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2832,12 +3579,21 @@ struct ImGuiStackLevelInfo data::NTuple{64, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) +function _getptr(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :QueryFrameCount && return Ptr{ImS8}(x + 4) f === :QuerySuccess && return Ptr{Bool}(x + 5) f === :DataType && return (Ptr{ImGuiDataType}(x + 4), 16, 8) f === :Desc && return Ptr{NTuple{57, Cchar}}(x + 7) + error("Unrecognized field of type `ImGuiStackLevelInfo`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :QueryFrameCount && return unsafe_load(_getptr(x, f)) + f === :QuerySuccess && return unsafe_load(_getptr(x, f)) + f === :DataType && return unsafe_load(_getptr(x, f)) + f === :Desc && return _getptr(x, f) return getfield(x, f) end @@ -2865,7 +3621,7 @@ end function Base.setproperty!(x::Ptr{ImGuiStackLevelInfo}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2916,7 +3672,7 @@ struct ImGuiContext data::NTuple{13492, UInt8} end -function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) +function _getptr(x::Ptr{ImGuiContext}, f::Symbol) f === :Initialized && return Ptr{Bool}(x + 0) f === :FontAtlasOwnedByContext && return Ptr{Bool}(x + 1) f === :IO && return Ptr{ImGuiIO}(x + 4) @@ -3207,6 +3963,300 @@ function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) f === :WantTextInputNextFrame && return Ptr{Cint}(x + 13412) f === :TempBuffer && return Ptr{ImVector_char}(x + 13416) f === :TempKeychordName && return Ptr{NTuple{64, Cchar}}(x + 13428) + error("Unrecognized field of type `ImGuiContext`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) + f === :Initialized && return unsafe_load(_getptr(x, f)) + f === :FontAtlasOwnedByContext && return unsafe_load(_getptr(x, f)) + f === :IO && return _getptr(x, f) + f === :PlatformIO && return _getptr(x, f) + f === :Style && return _getptr(x, f) + f === :ConfigFlagsCurrFrame && return unsafe_load(_getptr(x, f)) + f === :ConfigFlagsLastFrame && return unsafe_load(_getptr(x, f)) + f === :Font && return unsafe_load(_getptr(x, f)) + f === :FontSize && return unsafe_load(_getptr(x, f)) + f === :FontBaseSize && return unsafe_load(_getptr(x, f)) + f === :CurrentDpiScale && return unsafe_load(_getptr(x, f)) + f === :DrawListSharedData && return _getptr(x, f) + f === :Time && return unsafe_load(_getptr(x, f)) + f === :FrameCount && return unsafe_load(_getptr(x, f)) + f === :FrameCountEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountPlatformEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountRendered && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScope && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScopeWithImplicitWindow && return unsafe_load(_getptr(x, f)) + f === :WithinEndChild && return unsafe_load(_getptr(x, f)) + f === :GcCompactAll && return unsafe_load(_getptr(x, f)) + f === :TestEngineHookItems && return unsafe_load(_getptr(x, f)) + f === :TestEngine && return unsafe_load(_getptr(x, f)) + f === :InputEventsQueue && return _getptr(x, f) + f === :InputEventsTrail && return _getptr(x, f) + f === :InputEventsNextMouseSource && return unsafe_load(_getptr(x, f)) + f === :InputEventsNextEventId && return unsafe_load(_getptr(x, f)) + f === :Windows && return _getptr(x, f) + f === :WindowsFocusOrder && return _getptr(x, f) + f === :WindowsTempSortBuffer && return _getptr(x, f) + f === :CurrentWindowStack && return _getptr(x, f) + f === :WindowsById && return _getptr(x, f) + f === :WindowsActiveCount && return unsafe_load(_getptr(x, f)) + f === :WindowsHoverPadding && return _getptr(x, f) + f === :DebugBreakInWindow && return unsafe_load(_getptr(x, f)) + f === :CurrentWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindowUnderMovingWindow && return unsafe_load(_getptr(x, f)) + f === :MovingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowRefMousePos && return _getptr(x, f) + f === :WheelingWindowStartFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowScrolledFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowReleaseTimer && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowWheelRemainder && return _getptr(x, f) + f === :WheelingAxisAvg && return _getptr(x, f) + f === :DebugHookIdInfo && return unsafe_load(_getptr(x, f)) + f === :HoveredId && return unsafe_load(_getptr(x, f)) + f === :HoveredIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoveredIdTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdNotActiveTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :HoveredIdDisabled && return unsafe_load(_getptr(x, f)) + f === :ItemUnclipByLog && return unsafe_load(_getptr(x, f)) + f === :ActiveId && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsJustActivated && return unsafe_load(_getptr(x, f)) + f === :ActiveIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :ActiveIdNoClearOnFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenPressedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedThisFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdFromShortcut && return unsafe_load(_getptr(x, f)) + f === :ActiveIdMouseButton && return unsafe_load(_getptr(x, f)) + f === :ActiveIdClickOffset && return _getptr(x, f) + f === :ActiveIdWindow && return unsafe_load(_getptr(x, f)) + f === :ActiveIdSource && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameWindow && return unsafe_load(_getptr(x, f)) + f === :LastActiveId && return unsafe_load(_getptr(x, f)) + f === :LastActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeFromNoneTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyboardKeyPressTime && return unsafe_load(_getptr(x, f)) + f === :KeysMayBeCharInput && return _getptr(x, f) + f === :KeysOwnerData && return _getptr(x, f) + f === :KeysRoutingTable && return _getptr(x, f) + f === :ActiveIdUsingNavDirMask && return unsafe_load(_getptr(x, f)) + f === :ActiveIdUsingAllKeyboardKeys && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInShortcutRouting && return unsafe_load(_getptr(x, f)) + f === :CurrentFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :CurrentItemFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLocateId && return unsafe_load(_getptr(x, f)) + f === :NextItemData && return _getptr(x, f) + f === :LastItemData && return _getptr(x, f) + f === :NextWindowData && return _getptr(x, f) + f === :DebugShowGroupRects && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorIdx && return unsafe_load(_getptr(x, f)) + f === :ColorStack && return _getptr(x, f) + f === :StyleVarStack && return _getptr(x, f) + f === :FontStack && return _getptr(x, f) + f === :FocusScopeStack && return _getptr(x, f) + f === :ItemFlagsStack && return _getptr(x, f) + f === :GroupStack && return _getptr(x, f) + f === :OpenPopupStack && return _getptr(x, f) + f === :BeginPopupStack && return _getptr(x, f) + f === :NavTreeNodeStack && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) + f === :CurrentViewport && return unsafe_load(_getptr(x, f)) + f === :MouseViewport && return unsafe_load(_getptr(x, f)) + f === :MouseLastHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :PlatformLastFocusedViewportId && return unsafe_load(_getptr(x, f)) + f === :FallbackMonitor && return _getptr(x, f) + f === :PlatformMonitorsFullWorkRect && return _getptr(x, f) + f === :ViewportCreatedCount && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowsCreatedCount && return unsafe_load(_getptr(x, f)) + f === :ViewportFocusedStampCount && return unsafe_load(_getptr(x, f)) + f === :NavWindow && return unsafe_load(_getptr(x, f)) + f === :NavId && return unsafe_load(_getptr(x, f)) + f === :NavFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavActivateId && return unsafe_load(_getptr(x, f)) + f === :NavActivateDownId && return unsafe_load(_getptr(x, f)) + f === :NavActivatePressedId && return unsafe_load(_getptr(x, f)) + f === :NavActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavFocusRoute && return _getptr(x, f) + f === :NavHighlightActivatedId && return unsafe_load(_getptr(x, f)) + f === :NavHighlightActivatedTimer && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateId && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavInputSource && return unsafe_load(_getptr(x, f)) + f === :NavLayer && return unsafe_load(_getptr(x, f)) + f === :NavLastValidSelectionUserData && return unsafe_load(_getptr(x, f)) + f === :NavIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :NavMousePosDirty && return unsafe_load(_getptr(x, f)) + f === :NavDisableHighlight && return unsafe_load(_getptr(x, f)) + f === :NavDisableMouseHover && return unsafe_load(_getptr(x, f)) + f === :NavAnyRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequestFromMove && return unsafe_load(_getptr(x, f)) + f === :NavInitResult && return _getptr(x, f) + f === :NavMoveSubmitted && return unsafe_load(_getptr(x, f)) + f === :NavMoveScoringItems && return unsafe_load(_getptr(x, f)) + f === :NavMoveForwardToNextFrame && return unsafe_load(_getptr(x, f)) + f === :NavMoveFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveScrollFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavMoveDir && return unsafe_load(_getptr(x, f)) + f === :NavMoveDirForDebug && return unsafe_load(_getptr(x, f)) + f === :NavMoveClipDir && return unsafe_load(_getptr(x, f)) + f === :NavScoringRect && return _getptr(x, f) + f === :NavScoringNoClipRect && return _getptr(x, f) + f === :NavScoringDebugCount && return unsafe_load(_getptr(x, f)) + f === :NavTabbingDir && return unsafe_load(_getptr(x, f)) + f === :NavTabbingCounter && return unsafe_load(_getptr(x, f)) + f === :NavMoveResultLocal && return _getptr(x, f) + f === :NavMoveResultLocalVisible && return _getptr(x, f) + f === :NavMoveResultOther && return _getptr(x, f) + f === :NavTabbingResultFirst && return _getptr(x, f) + f === :ConfigNavWindowingKeyNext && return unsafe_load(_getptr(x, f)) + f === :ConfigNavWindowingKeyPrev && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTarget && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTargetAnim && return unsafe_load(_getptr(x, f)) + f === :NavWindowingListWindow && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTimer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingHighlightAlpha && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleLayer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleKey && return unsafe_load(_getptr(x, f)) + f === :NavWindowingAccumDeltaPos && return _getptr(x, f) + f === :NavWindowingAccumDeltaSize && return _getptr(x, f) + f === :DimBgRatio && return unsafe_load(_getptr(x, f)) + f === :DragDropActive && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinSource && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinTarget && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropMouseButton && return unsafe_load(_getptr(x, f)) + f === :DragDropPayload && return _getptr(x, f) + f === :DragDropTargetRect && return _getptr(x, f) + f === :DragDropTargetClipRect && return _getptr(x, f) + f === :DragDropTargetId && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurrRectSurface && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurr && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdPrev && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropHoldJustPressedId && return unsafe_load(_getptr(x, f)) + f === :DragDropPayloadBufHeap && return _getptr(x, f) + f === :DragDropPayloadBufLocal && return _getptr(x, f) + f === :ClipperTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :ClipperTempData && return _getptr(x, f) + f === :CurrentTable && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInTable && return unsafe_load(_getptr(x, f)) + f === :TablesTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :TablesTempData && return _getptr(x, f) + f === :Tables && return _getptr(x, f) + f === :TablesLastTimeActive && return _getptr(x, f) + f === :DrawChannelsTempMergeBuffer && return _getptr(x, f) + f === :CurrentTabBar && return unsafe_load(_getptr(x, f)) + f === :TabBars && return _getptr(x, f) + f === :CurrentTabBarStack && return _getptr(x, f) + f === :ShrinkWidthBuffer && return _getptr(x, f) + f === :HoverItemDelayId && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayClearTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :HoverWindowUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :MouseCursor && return unsafe_load(_getptr(x, f)) + f === :MouseStationaryTimer && return unsafe_load(_getptr(x, f)) + f === :MouseLastValidPos && return _getptr(x, f) + f === :InputTextState && return _getptr(x, f) + f === :InputTextDeactivatedState && return _getptr(x, f) + f === :InputTextPasswordFont && return _getptr(x, f) + f === :TempInputId && return unsafe_load(_getptr(x, f)) + f === :DataTypeZeroValue && return _getptr(x, f) + f === :BeginMenuDepth && return unsafe_load(_getptr(x, f)) + f === :BeginComboDepth && return unsafe_load(_getptr(x, f)) + f === :ColorEditOptions && return unsafe_load(_getptr(x, f)) + f === :ColorEditCurrentID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedHue && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedSat && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedColor && return unsafe_load(_getptr(x, f)) + f === :ColorPickerRef && return _getptr(x, f) + f === :ComboPreviewData && return _getptr(x, f) + f === :WindowResizeBorderExpectedRect && return _getptr(x, f) + f === :WindowResizeRelativeMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSeekMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarClickDeltaToGrabCenter && return unsafe_load(_getptr(x, f)) + f === :SliderGrabClickOffset && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :DragSpeedDefaultRatio && return unsafe_load(_getptr(x, f)) + f === :DisabledAlphaBackup && return unsafe_load(_getptr(x, f)) + f === :DisabledStackSize && return unsafe_load(_getptr(x, f)) + f === :LockMarkEdited && return unsafe_load(_getptr(x, f)) + f === :TooltipOverrideCount && return unsafe_load(_getptr(x, f)) + f === :ClipboardHandlerData && return _getptr(x, f) + f === :MenusIdSubmittedThisFrame && return _getptr(x, f) + f === :TypingSelectState && return _getptr(x, f) + f === :PlatformImeData && return _getptr(x, f) + f === :PlatformImeDataPrev && return _getptr(x, f) + f === :PlatformImeViewport && return unsafe_load(_getptr(x, f)) + f === :DockContext && return _getptr(x, f) + f === :DockNodeWindowMenuHandler && return unsafe_load(_getptr(x, f)) + f === :SettingsLoaded && return unsafe_load(_getptr(x, f)) + f === :SettingsDirtyTimer && return unsafe_load(_getptr(x, f)) + f === :SettingsIniData && return _getptr(x, f) + f === :SettingsHandlers && return _getptr(x, f) + f === :SettingsWindows && return _getptr(x, f) + f === :SettingsTables && return _getptr(x, f) + f === :Hooks && return _getptr(x, f) + f === :HookIdNext && return unsafe_load(_getptr(x, f)) + f === :LocalizationTable && return _getptr(x, f) + f === :LogEnabled && return unsafe_load(_getptr(x, f)) + f === :LogType && return unsafe_load(_getptr(x, f)) + f === :LogFile && return unsafe_load(_getptr(x, f)) + f === :LogBuffer && return _getptr(x, f) + f === :LogNextPrefix && return unsafe_load(_getptr(x, f)) + f === :LogNextSuffix && return unsafe_load(_getptr(x, f)) + f === :LogLinePosY && return unsafe_load(_getptr(x, f)) + f === :LogLineFirstItem && return unsafe_load(_getptr(x, f)) + f === :LogDepthRef && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpand && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpandDefault && return unsafe_load(_getptr(x, f)) + f === :DebugLogFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogBuf && return _getptr(x, f) + f === :DebugLogIndex && return _getptr(x, f) + f === :DebugLogAutoDisableFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogAutoDisableFrames && return unsafe_load(_getptr(x, f)) + f === :DebugLocateFrames && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInLocateId && return unsafe_load(_getptr(x, f)) + f === :DebugBreakKeyChord && return unsafe_load(_getptr(x, f)) + f === :DebugBeginReturnValueCullDepth && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerActive && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerMouseButton && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerBreakId && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorTime && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorBackup && return _getptr(x, f) + f === :DebugMetricsConfig && return _getptr(x, f) + f === :DebugIDStackTool && return _getptr(x, f) + f === :DebugAllocInfo && return _getptr(x, f) + f === :DebugHoveredDockNode && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrame && return _getptr(x, f) + f === :FramerateSecPerFrameIdx && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameCount && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameAccum && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouseNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboardNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantTextInputNextFrame && return unsafe_load(_getptr(x, f)) + f === :TempBuffer && return _getptr(x, f) + f === :TempKeychordName && return _getptr(x, f) return getfield(x, f) end @@ -3234,7 +4284,7 @@ end function Base.setproperty!(x::Ptr{ImGuiContext}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -3279,16 +4329,24 @@ struct ImGuiSizeCallbackData CurrentSize::ImVec2 DesiredSize::ImVec2 end -function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) +function _getptr(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) f === :UserData && return Ptr{Ptr{Cvoid}}(x + 0) f === :Pos && return Ptr{ImVec2}(x + 4) f === :CurrentSize && return Ptr{ImVec2}(x + 12) f === :DesiredSize && return Ptr{ImVec2}(x + 20) + error("Unrecognized field of type `ImGuiSizeCallbackData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :CurrentSize && return _getptr(x, f) + f === :DesiredSize && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiSizeCallbackData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -4381,7 +5439,7 @@ struct ImGuiTableColumnSettings data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :WidthOrWeight && return Ptr{Cfloat}(x + 0) f === :UserID && return Ptr{ImGuiID}(x + 4) f === :Index && return Ptr{ImGuiTableColumnIdx}(x + 8) @@ -4390,6 +5448,18 @@ function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :SortDirection && return (Ptr{ImU8}(x + 12), 16, 2) f === :IsEnabled && return (Ptr{ImU8}(x + 12), 18, 1) f === :IsStretch && return (Ptr{ImU8}(x + 12), 19, 1) + error("Unrecognized field of type `ImGuiTableColumnSettings`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) + f === :WidthOrWeight && return unsafe_load(_getptr(x, f)) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :Index && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsStretch && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -4417,7 +5487,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumnSettings}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) diff --git a/lib/i686-linux-musl.jl b/lib/i686-linux-musl.jl index 54479d2..24c050c 100644 --- a/lib/i686-linux-musl.jl +++ b/lib/i686-linux-musl.jl @@ -1,4 +1,4 @@ -using CEnum +using CEnum: CEnum, @cenum to_c_type(t::Type) = t to_c_type_pairs(va_list) = map(enumerate(to_c_type.(va_list))) do (ind, type) @@ -30,16 +30,24 @@ struct ImVec4 z::Cfloat w::Cfloat end -function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) +function _getptr(x::Ptr{ImVec4}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) f === :z && return Ptr{Cfloat}(x + 8) f === :w && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImVec4`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) + f === :z && return unsafe_load(_getptr(x, f)) + f === :w && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec4}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -54,7 +62,7 @@ struct ImDrawCmd UserCallback::ImDrawCallback UserCallbackData::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) +function _getptr(x::Ptr{ImDrawCmd}, f::Symbol) f === :ClipRect && return Ptr{ImVec4}(x + 0) f === :TextureId && return Ptr{ImTextureID}(x + 16) f === :VtxOffset && return Ptr{Cuint}(x + 20) @@ -62,11 +70,22 @@ function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) f === :ElemCount && return Ptr{Cuint}(x + 28) f === :UserCallback && return Ptr{ImDrawCallback}(x + 32) f === :UserCallbackData && return Ptr{Ptr{Cvoid}}(x + 36) + error("Unrecognized field of type `ImDrawCmd`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) + f === :ClipRect && return _getptr(x, f) + f === :TextureId && return unsafe_load(_getptr(x, f)) + f === :VtxOffset && return unsafe_load(_getptr(x, f)) + f === :IdxOffset && return unsafe_load(_getptr(x, f)) + f === :ElemCount && return unsafe_load(_getptr(x, f)) + f === :UserCallback && return unsafe_load(_getptr(x, f)) + f === :UserCallbackData && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawCmd}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -93,14 +112,20 @@ struct ImVec2 x::Cfloat y::Cfloat end -function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) +function _getptr(x::Ptr{ImVec2}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) + error("Unrecognized field of type `ImVec2`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec2}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -117,6 +142,24 @@ struct ImVector_ImDrawVert Capacity::Cint Data::Ptr{ImDrawVert} end +function _getptr(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return Ptr{Cint}(x + 0) + f === :Capacity && return Ptr{Cint}(x + 4) + f === :Data && return Ptr{Ptr{ImDrawVert}}(x + 8) + error("Unrecognized field of type `ImVector_ImDrawVert`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return unsafe_load(_getptr(x, f)) + f === :Capacity && return unsafe_load(_getptr(x, f)) + f === :Data && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImVector_ImDrawVert}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImDrawListFlags = Cint @@ -140,7 +183,7 @@ struct ImFontGlyph data::NTuple{40, UInt8} end -function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) +function _getptr(x::Ptr{ImFontGlyph}, f::Symbol) f === :Colored && return (Ptr{Cuint}(x + 0), 0, 1) f === :Visible && return (Ptr{Cuint}(x + 0), 1, 1) f === :Codepoint && return (Ptr{Cuint}(x + 0), 2, 30) @@ -153,6 +196,22 @@ function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) f === :V0 && return Ptr{Cfloat}(x + 28) f === :U1 && return Ptr{Cfloat}(x + 32) f === :V1 && return Ptr{Cfloat}(x + 36) + error("Unrecognized field of type `ImFontGlyph`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) + f === :Colored && return unsafe_load(_getptr(x, f)) + f === :Visible && return unsafe_load(_getptr(x, f)) + f === :Codepoint && return unsafe_load(_getptr(x, f)) + f === :AdvanceX && return unsafe_load(_getptr(x, f)) + f === :X0 && return unsafe_load(_getptr(x, f)) + f === :Y0 && return unsafe_load(_getptr(x, f)) + f === :X1 && return unsafe_load(_getptr(x, f)) + f === :Y1 && return unsafe_load(_getptr(x, f)) + f === :U0 && return unsafe_load(_getptr(x, f)) + f === :V0 && return unsafe_load(_getptr(x, f)) + f === :U1 && return unsafe_load(_getptr(x, f)) + f === :V1 && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -180,7 +239,7 @@ end function Base.setproperty!(x::Ptr{ImFontGlyph}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -268,7 +327,7 @@ function Base.getproperty(x::ImFontConfig, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) +function _getptr(x::Ptr{ImFontConfig}, f::Symbol) f === :FontData && return Ptr{Ptr{Cvoid}}(x + 0) f === :FontDataSize && return Ptr{Cint}(x + 4) f === :FontDataOwnedByAtlas && return Ptr{Bool}(x + 8) @@ -289,11 +348,35 @@ function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) f === :EllipsisChar && return Ptr{ImWchar}(x + 76) f === :Name && return Ptr{NTuple{40, Cchar}}(x + 78) f === :DstFont && return Ptr{Ptr{ImFont}}(x + 120) + error("Unrecognized field of type `ImFontConfig`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) + f === :FontData && return unsafe_load(_getptr(x, f)) + f === :FontDataSize && return unsafe_load(_getptr(x, f)) + f === :FontDataOwnedByAtlas && return unsafe_load(_getptr(x, f)) + f === :FontNo && return unsafe_load(_getptr(x, f)) + f === :SizePixels && return unsafe_load(_getptr(x, f)) + f === :OversampleH && return unsafe_load(_getptr(x, f)) + f === :OversampleV && return unsafe_load(_getptr(x, f)) + f === :PixelSnapH && return unsafe_load(_getptr(x, f)) + f === :GlyphExtraSpacing && return _getptr(x, f) + f === :GlyphOffset && return _getptr(x, f) + f === :GlyphRanges && return unsafe_load(_getptr(x, f)) + f === :GlyphMinAdvanceX && return unsafe_load(_getptr(x, f)) + f === :GlyphMaxAdvanceX && return unsafe_load(_getptr(x, f)) + f === :MergeMode && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :RasterizerMultiply && return unsafe_load(_getptr(x, f)) + f === :RasterizerDensity && return unsafe_load(_getptr(x, f)) + f === :EllipsisChar && return unsafe_load(_getptr(x, f)) + f === :Name && return _getptr(x, f) + f === :DstFont && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontConfig}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImFontConfig @@ -330,7 +413,7 @@ struct ImFontAtlas PackIdMouseCursors::Cint PackIdLines::Cint end -function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) +function _getptr(x::Ptr{ImFontAtlas}, f::Symbol) f === :Flags && return Ptr{ImFontAtlasFlags}(x + 0) f === :TexID && return Ptr{ImTextureID}(x + 4) f === :TexDesiredWidth && return Ptr{Cint}(x + 8) @@ -353,11 +436,37 @@ function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) f === :FontBuilderFlags && return Ptr{Cuint}(x + 1124) f === :PackIdMouseCursors && return Ptr{Cint}(x + 1128) f === :PackIdLines && return Ptr{Cint}(x + 1132) + error("Unrecognized field of type `ImFontAtlas`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :TexID && return unsafe_load(_getptr(x, f)) + f === :TexDesiredWidth && return unsafe_load(_getptr(x, f)) + f === :TexGlyphPadding && return unsafe_load(_getptr(x, f)) + f === :Locked && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :TexReady && return unsafe_load(_getptr(x, f)) + f === :TexPixelsUseColors && return unsafe_load(_getptr(x, f)) + f === :TexPixelsAlpha8 && return unsafe_load(_getptr(x, f)) + f === :TexPixelsRGBA32 && return unsafe_load(_getptr(x, f)) + f === :TexWidth && return unsafe_load(_getptr(x, f)) + f === :TexHeight && return unsafe_load(_getptr(x, f)) + f === :TexUvScale && return _getptr(x, f) + f === :TexUvWhitePixel && return _getptr(x, f) + f === :Fonts && return _getptr(x, f) + f === :CustomRects && return _getptr(x, f) + f === :ConfigData && return _getptr(x, f) + f === :TexUvLines && return _getptr(x, f) + f === :FontBuilderIO && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :PackIdMouseCursors && return unsafe_load(_getptr(x, f)) + f === :PackIdLines && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontAtlas}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -454,7 +563,7 @@ struct ImDrawList _FringeScale::Cfloat _OwnerName::Ptr{Cchar} end -function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) +function _getptr(x::Ptr{ImDrawList}, f::Symbol) f === :CmdBuffer && return Ptr{ImVector_ImDrawCmd}(x + 0) f === :IdxBuffer && return Ptr{ImVector_ImDrawIdx}(x + 12) f === :VtxBuffer && return Ptr{ImVector_ImDrawVert}(x + 24) @@ -470,11 +579,30 @@ function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) f === :_TextureIdStack && return Ptr{ImVector_ImTextureID}(x + 124) f === :_FringeScale && return Ptr{Cfloat}(x + 136) f === :_OwnerName && return Ptr{Ptr{Cchar}}(x + 140) + error("Unrecognized field of type `ImDrawList`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) + f === :CmdBuffer && return _getptr(x, f) + f === :IdxBuffer && return _getptr(x, f) + f === :VtxBuffer && return _getptr(x, f) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :_VtxCurrentIdx && return unsafe_load(_getptr(x, f)) + f === :_Data && return unsafe_load(_getptr(x, f)) + f === :_VtxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_IdxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_Path && return _getptr(x, f) + f === :_CmdHeader && return _getptr(x, f) + f === :_Splitter && return _getptr(x, f) + f === :_ClipRectStack && return _getptr(x, f) + f === :_TextureIdStack && return _getptr(x, f) + f === :_FringeScale && return unsafe_load(_getptr(x, f)) + f === :_OwnerName && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawList}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -513,7 +641,7 @@ function Base.getproperty(x::ImGuiViewport, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) +function _getptr(x::Ptr{ImGuiViewport}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiViewportFlags}(x + 4) f === :Pos && return Ptr{ImVec2}(x + 8) @@ -531,11 +659,32 @@ function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) f === :PlatformRequestMove && return Ptr{Bool}(x + 69) f === :PlatformRequestResize && return Ptr{Bool}(x + 70) f === :PlatformRequestClose && return Ptr{Bool}(x + 71) + error("Unrecognized field of type `ImGuiViewport`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :ParentViewportId && return unsafe_load(_getptr(x, f)) + f === :DrawData && return unsafe_load(_getptr(x, f)) + f === :RendererUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) + f === :PlatformHandleRaw && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowCreated && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestMove && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestResize && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestClose && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiViewport}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImDrawData @@ -549,7 +698,7 @@ struct ImDrawData FramebufferScale::ImVec2 OwnerViewport::Ptr{ImGuiViewport} end -function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) +function _getptr(x::Ptr{ImDrawData}, f::Symbol) f === :Valid && return Ptr{Bool}(x + 0) f === :CmdListsCount && return Ptr{Cint}(x + 4) f === :TotalIdxCount && return Ptr{Cint}(x + 8) @@ -559,11 +708,24 @@ function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) f === :DisplaySize && return Ptr{ImVec2}(x + 36) f === :FramebufferScale && return Ptr{ImVec2}(x + 44) f === :OwnerViewport && return Ptr{Ptr{ImGuiViewport}}(x + 52) + error("Unrecognized field of type `ImDrawData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) + f === :Valid && return unsafe_load(_getptr(x, f)) + f === :CmdListsCount && return unsafe_load(_getptr(x, f)) + f === :TotalIdxCount && return unsafe_load(_getptr(x, f)) + f === :TotalVtxCount && return unsafe_load(_getptr(x, f)) + f === :CmdLists && return _getptr(x, f) + f === :DisplayPos && return _getptr(x, f) + f === :DisplaySize && return _getptr(x, f) + f === :FramebufferScale && return _getptr(x, f) + f === :OwnerViewport && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -600,6 +762,26 @@ struct ImGuiKeyData DownDurationPrev::Cfloat AnalogValue::Cfloat end +function _getptr(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return Ptr{Bool}(x + 0) + f === :DownDuration && return Ptr{Cfloat}(x + 4) + f === :DownDurationPrev && return Ptr{Cfloat}(x + 8) + f === :AnalogValue && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImGuiKeyData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return unsafe_load(_getptr(x, f)) + f === :DownDuration && return unsafe_load(_getptr(x, f)) + f === :DownDurationPrev && return unsafe_load(_getptr(x, f)) + f === :AnalogValue && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImGuiKeyData}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImU16 = Cushort @@ -713,7 +895,7 @@ function Base.getproperty(x::ImGuiIO, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiIO}, f::Symbol) f === :ConfigFlags && return Ptr{ImGuiConfigFlags}(x + 0) f === :BackendFlags && return Ptr{ImGuiBackendFlags}(x + 4) f === :DisplaySize && return Ptr{ImVec2}(x + 8) @@ -814,11 +996,115 @@ function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) f === :BackendUsingLegacyNavInputArray && return Ptr{Bool}(x + 2939) f === :InputQueueSurrogate && return Ptr{ImWchar16}(x + 2940) f === :InputQueueCharacters && return Ptr{ImVector_ImWchar}(x + 2944) + error("Unrecognized field of type `ImGuiIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) + f === :ConfigFlags && return unsafe_load(_getptr(x, f)) + f === :BackendFlags && return unsafe_load(_getptr(x, f)) + f === :DisplaySize && return _getptr(x, f) + f === :DeltaTime && return unsafe_load(_getptr(x, f)) + f === :IniSavingRate && return unsafe_load(_getptr(x, f)) + f === :IniFilename && return unsafe_load(_getptr(x, f)) + f === :LogFilename && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Fonts && return unsafe_load(_getptr(x, f)) + f === :FontGlobalScale && return unsafe_load(_getptr(x, f)) + f === :FontAllowUserScaling && return unsafe_load(_getptr(x, f)) + f === :FontDefault && return unsafe_load(_getptr(x, f)) + f === :DisplayFramebufferScale && return _getptr(x, f) + f === :ConfigDockingNoSplit && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingWithShift && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingAlwaysTabBar && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingTransparentPayload && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoAutoMerge && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoTaskBarIcon && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDecoration && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDefaultParent && return unsafe_load(_getptr(x, f)) + f === :MouseDrawCursor && return unsafe_load(_getptr(x, f)) + f === :ConfigMacOSXBehaviors && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTrickleEventQueue && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextCursorBlink && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextEnterKeepActive && return unsafe_load(_getptr(x, f)) + f === :ConfigDragClickToInputText && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsResizeFromEdges && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsMoveFromTitleBarOnly && return unsafe_load(_getptr(x, f)) + f === :ConfigMemoryCompactTimer && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickTime && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickMaxDist && return unsafe_load(_getptr(x, f)) + f === :MouseDragThreshold && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatDelay && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatRate && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIsDebuggerPresent && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueOnce && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueLoop && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIgnoreFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIniSettings && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformName && return unsafe_load(_getptr(x, f)) + f === :BackendRendererName && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformUserData && return unsafe_load(_getptr(x, f)) + f === :BackendRendererUserData && return unsafe_load(_getptr(x, f)) + f === :BackendLanguageUserData && return unsafe_load(_getptr(x, f)) + f === :GetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :SetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :ClipboardUserData && return unsafe_load(_getptr(x, f)) + f === :SetPlatformImeDataFn && return unsafe_load(_getptr(x, f)) + f === :PlatformLocaleDecimalPoint && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouse && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboard && return unsafe_load(_getptr(x, f)) + f === :WantTextInput && return unsafe_load(_getptr(x, f)) + f === :WantSetMousePos && return unsafe_load(_getptr(x, f)) + f === :WantSaveIniSettings && return unsafe_load(_getptr(x, f)) + f === :NavActive && return unsafe_load(_getptr(x, f)) + f === :NavVisible && return unsafe_load(_getptr(x, f)) + f === :Framerate && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderVertices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderIndices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderWindows && return unsafe_load(_getptr(x, f)) + f === :MetricsActiveWindows && return unsafe_load(_getptr(x, f)) + f === :MouseDelta && return _getptr(x, f) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseDown && return _getptr(x, f) + f === :MouseWheel && return unsafe_load(_getptr(x, f)) + f === :MouseWheelH && return unsafe_load(_getptr(x, f)) + f === :MouseSource && return unsafe_load(_getptr(x, f)) + f === :MouseHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :KeyCtrl && return unsafe_load(_getptr(x, f)) + f === :KeyShift && return unsafe_load(_getptr(x, f)) + f === :KeyAlt && return unsafe_load(_getptr(x, f)) + f === :KeySuper && return unsafe_load(_getptr(x, f)) + f === :KeyMods && return unsafe_load(_getptr(x, f)) + f === :KeysData && return _getptr(x, f) + f === :WantCaptureMouseUnlessPopupClose && return unsafe_load(_getptr(x, f)) + f === :MousePosPrev && return _getptr(x, f) + f === :MouseClickedPos && return _getptr(x, f) + f === :MouseClickedTime && return _getptr(x, f) + f === :MouseClicked && return _getptr(x, f) + f === :MouseDoubleClicked && return _getptr(x, f) + f === :MouseClickedCount && return _getptr(x, f) + f === :MouseClickedLastCount && return _getptr(x, f) + f === :MouseReleased && return _getptr(x, f) + f === :MouseDownOwned && return _getptr(x, f) + f === :MouseDownOwnedUnlessPopupClose && return _getptr(x, f) + f === :MouseWheelRequestAxisSwap && return unsafe_load(_getptr(x, f)) + f === :MouseCtrlLeftAsRightClick && return unsafe_load(_getptr(x, f)) + f === :MouseDownDuration && return _getptr(x, f) + f === :MouseDownDurationPrev && return _getptr(x, f) + f === :MouseDragMaxDistanceAbs && return _getptr(x, f) + f === :MouseDragMaxDistanceSqr && return _getptr(x, f) + f === :PenPressure && return unsafe_load(_getptr(x, f)) + f === :AppFocusLost && return unsafe_load(_getptr(x, f)) + f === :AppAcceptingEvents && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyKeyArrays && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyNavInputArray && return unsafe_load(_getptr(x, f)) + f === :InputQueueSurrogate && return unsafe_load(_getptr(x, f)) + f === :InputQueueCharacters && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImGuiPlatformMonitor @@ -829,18 +1115,28 @@ struct ImGuiPlatformMonitor DpiScale::Cfloat PlatformHandle::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) f === :MainPos && return Ptr{ImVec2}(x + 0) f === :MainSize && return Ptr{ImVec2}(x + 8) f === :WorkPos && return Ptr{ImVec2}(x + 16) f === :WorkSize && return Ptr{ImVec2}(x + 24) f === :DpiScale && return Ptr{Cfloat}(x + 32) f === :PlatformHandle && return Ptr{Ptr{Cvoid}}(x + 36) + error("Unrecognized field of type `ImGuiPlatformMonitor`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) + f === :MainPos && return _getptr(x, f) + f === :MainSize && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformMonitor}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -883,7 +1179,7 @@ struct ImGuiPlatformIO Monitors::ImVector_ImGuiPlatformMonitor Viewports::ImVector_ImGuiViewportPtr end -function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Platform_CreateWindow && return Ptr{Ptr{Cvoid}}(x + 0) f === :Platform_DestroyWindow && return Ptr{Ptr{Cvoid}}(x + 4) f === :Platform_ShowWindow && return Ptr{Ptr{Cvoid}}(x + 8) @@ -909,11 +1205,40 @@ function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Renderer_SwapBuffers && return Ptr{Ptr{Cvoid}}(x + 88) f === :Monitors && return Ptr{ImVector_ImGuiPlatformMonitor}(x + 92) f === :Viewports && return Ptr{ImVector_ImGuiViewportPtr}(x + 104) + error("Unrecognized field of type `ImGuiPlatformIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) + f === :Platform_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_ShowWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowMinimized && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowTitle && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowAlpha && return unsafe_load(_getptr(x, f)) + f === :Platform_UpdateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowDpiScale && return unsafe_load(_getptr(x, f)) + f === :Platform_OnChangedViewport && return unsafe_load(_getptr(x, f)) + f === :Platform_CreateVkSurface && return unsafe_load(_getptr(x, f)) + f === :Renderer_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Renderer_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Monitors && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -983,7 +1308,7 @@ struct ImGuiStyle HoverFlagsForTooltipMouse::ImGuiHoveredFlags HoverFlagsForTooltipNav::ImGuiHoveredFlags end -function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyle}, f::Symbol) f === :Alpha && return Ptr{Cfloat}(x + 0) f === :DisabledAlpha && return Ptr{Cfloat}(x + 4) f === :WindowPadding && return Ptr{ImVec2}(x + 8) @@ -1037,11 +1362,68 @@ function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) f === :HoverDelayNormal && return Ptr{Cfloat}(x + 1128) f === :HoverFlagsForTooltipMouse && return Ptr{ImGuiHoveredFlags}(x + 1132) f === :HoverFlagsForTooltipNav && return Ptr{ImGuiHoveredFlags}(x + 1136) + error("Unrecognized field of type `ImGuiStyle`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) + f === :Alpha && return unsafe_load(_getptr(x, f)) + f === :DisabledAlpha && return unsafe_load(_getptr(x, f)) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :WindowMinSize && return _getptr(x, f) + f === :WindowTitleAlign && return _getptr(x, f) + f === :WindowMenuButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ChildRounding && return unsafe_load(_getptr(x, f)) + f === :ChildBorderSize && return unsafe_load(_getptr(x, f)) + f === :PopupRounding && return unsafe_load(_getptr(x, f)) + f === :PopupBorderSize && return unsafe_load(_getptr(x, f)) + f === :FramePadding && return _getptr(x, f) + f === :FrameRounding && return unsafe_load(_getptr(x, f)) + f === :FrameBorderSize && return unsafe_load(_getptr(x, f)) + f === :ItemSpacing && return _getptr(x, f) + f === :ItemInnerSpacing && return _getptr(x, f) + f === :CellPadding && return _getptr(x, f) + f === :TouchExtraPadding && return _getptr(x, f) + f === :IndentSpacing && return unsafe_load(_getptr(x, f)) + f === :ColumnsMinSpacing && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSize && return unsafe_load(_getptr(x, f)) + f === :ScrollbarRounding && return unsafe_load(_getptr(x, f)) + f === :GrabMinSize && return unsafe_load(_getptr(x, f)) + f === :GrabRounding && return unsafe_load(_getptr(x, f)) + f === :LogSliderDeadzone && return unsafe_load(_getptr(x, f)) + f === :TabRounding && return unsafe_load(_getptr(x, f)) + f === :TabBorderSize && return unsafe_load(_getptr(x, f)) + f === :TabMinWidthForCloseButton && return unsafe_load(_getptr(x, f)) + f === :TabBarBorderSize && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersAngle && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersTextAlign && return _getptr(x, f) + f === :ColorButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ButtonTextAlign && return _getptr(x, f) + f === :SelectableTextAlign && return _getptr(x, f) + f === :SeparatorTextBorderSize && return unsafe_load(_getptr(x, f)) + f === :SeparatorTextAlign && return _getptr(x, f) + f === :SeparatorTextPadding && return _getptr(x, f) + f === :DisplayWindowPadding && return _getptr(x, f) + f === :DisplaySafeAreaPadding && return _getptr(x, f) + f === :DockingSeparatorSize && return unsafe_load(_getptr(x, f)) + f === :MouseCursorScale && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLines && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLinesUseTex && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedFill && return unsafe_load(_getptr(x, f)) + f === :CurveTessellationTol && return unsafe_load(_getptr(x, f)) + f === :CircleTessellationMaxError && return unsafe_load(_getptr(x, f)) + f === :Colors && return _getptr(x, f) + f === :HoverStationaryDelay && return unsafe_load(_getptr(x, f)) + f === :HoverDelayShort && return unsafe_load(_getptr(x, f)) + f === :HoverDelayNormal && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipMouse && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipNav && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiStyle}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -1069,7 +1451,7 @@ struct ImGuiInputEvent data::NTuple{28, UInt8} end -function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) +function _getptr(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Type && return Ptr{ImGuiInputEventType}(x + 0) f === :Source && return Ptr{ImGuiInputSource}(x + 4) f === :EventId && return Ptr{ImU32}(x + 8) @@ -1081,6 +1463,21 @@ function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Text && return Ptr{ImGuiInputEventText}(x + 12) f === :AppFocused && return Ptr{ImGuiInputEventAppFocused}(x + 12) f === :AddedByTestEngine && return Ptr{Bool}(x + 24) + error("Unrecognized field of type `ImGuiInputEvent`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) + f === :Type && return unsafe_load(_getptr(x, f)) + f === :Source && return unsafe_load(_getptr(x, f)) + f === :EventId && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseWheel && return _getptr(x, f) + f === :MouseButton && return _getptr(x, f) + f === :MouseViewport && return _getptr(x, f) + f === :Key && return _getptr(x, f) + f === :Text && return _getptr(x, f) + f === :AppFocused && return _getptr(x, f) + f === :AddedByTestEngine && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1092,7 +1489,7 @@ function Base.getproperty(x::ImGuiInputEvent, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiInputEvent}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiInputEvent @@ -1200,11 +1597,19 @@ struct ImGuiStoragePair data::NTuple{8, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) +function _getptr(x::Ptr{ImGuiStoragePair}, f::Symbol) f === :key && return Ptr{ImGuiID}(x + 0) f === :val_i && return Ptr{Cint}(x + 4) f === :val_f && return Ptr{Cfloat}(x + 4) f === :val_p && return Ptr{Ptr{Cvoid}}(x + 4) + error("Unrecognized field of type `ImGuiStoragePair`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) + f === :key && return unsafe_load(_getptr(x, f)) + f === :val_i && return unsafe_load(_getptr(x, f)) + f === :val_f && return unsafe_load(_getptr(x, f)) + f === :val_p && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1216,7 +1621,7 @@ function Base.getproperty(x::ImGuiStoragePair, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStoragePair}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStoragePair @@ -1424,7 +1829,7 @@ struct ImGuiDockNode data::NTuple{168, UInt8} end -function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) +function _getptr(x::Ptr{ImGuiDockNode}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :SharedFlags && return Ptr{ImGuiDockNodeFlags}(x + 4) f === :LocalFlags && return Ptr{ImGuiDockNodeFlags}(x + 8) @@ -1467,6 +1872,52 @@ function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) f === :WantMouseMove && return (Ptr{Bool}(x + 164), 17, 1) f === :WantHiddenTabBarUpdate && return (Ptr{Bool}(x + 164), 18, 1) f === :WantHiddenTabBarToggle && return (Ptr{Bool}(x + 164), 19, 1) + error("Unrecognized field of type `ImGuiDockNode`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :SharedFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlagsInWindows && return unsafe_load(_getptr(x, f)) + f === :MergedFlags && return unsafe_load(_getptr(x, f)) + f === :State && return unsafe_load(_getptr(x, f)) + f === :ParentNode && return unsafe_load(_getptr(x, f)) + f === :ChildNodes && return _getptr(x, f) + f === :Windows && return _getptr(x, f) + f === :TabBar && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeRef && return _getptr(x, f) + f === :SplitAxis && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :LastBgColor && return unsafe_load(_getptr(x, f)) + f === :HostWindow && return unsafe_load(_getptr(x, f)) + f === :VisibleWindow && return unsafe_load(_getptr(x, f)) + f === :CentralNode && return unsafe_load(_getptr(x, f)) + f === :OnlyNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :CountNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :LastFrameAlive && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameFocused && return unsafe_load(_getptr(x, f)) + f === :LastFocusedNodeId && return unsafe_load(_getptr(x, f)) + f === :SelectedTabId && return unsafe_load(_getptr(x, f)) + f === :WantCloseTabId && return unsafe_load(_getptr(x, f)) + f === :RefViewportId && return unsafe_load(_getptr(x, f)) + f === :AuthorityForPos && return unsafe_load(_getptr(x, f)) + f === :AuthorityForSize && return unsafe_load(_getptr(x, f)) + f === :AuthorityForViewport && return unsafe_load(_getptr(x, f)) + f === :IsVisible && return unsafe_load(_getptr(x, f)) + f === :IsFocused && return unsafe_load(_getptr(x, f)) + f === :IsBgDrawnThisFrame && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :HasWindowMenuButton && return unsafe_load(_getptr(x, f)) + f === :HasCentralNodeChild && return unsafe_load(_getptr(x, f)) + f === :WantCloseAll && return unsafe_load(_getptr(x, f)) + f === :WantLockSizeOnce && return unsafe_load(_getptr(x, f)) + f === :WantMouseMove && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarUpdate && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarToggle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1494,7 +1945,7 @@ end function Base.setproperty!(x::Ptr{ImGuiDockNode}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1519,7 +1970,7 @@ struct ImGuiWindow data::NTuple{1008, UInt8} end -function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) +function _getptr(x::Ptr{ImGuiWindow}, f::Symbol) f === :Ctx && return Ptr{Ptr{ImGuiContext}}(x + 0) f === :Name && return Ptr{Ptr{Cchar}}(x + 4) f === :ID && return Ptr{ImGuiID}(x + 8) @@ -1644,6 +2095,134 @@ function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) f === :DockId && return Ptr{ImGuiID}(x + 984) f === :DockTabItemStatusFlags && return Ptr{ImGuiItemStatusFlags}(x + 988) f === :DockTabItemRect && return Ptr{ImRect}(x + 992) + error("Unrecognized field of type `ImGuiWindow`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :Name && return unsafe_load(_getptr(x, f)) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :FlagsPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ChildFlags && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :Viewport && return unsafe_load(_getptr(x, f)) + f === :ViewportId && return unsafe_load(_getptr(x, f)) + f === :ViewportPos && return _getptr(x, f) + f === :ViewportAllowPlatformMonitorExtend && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeFull && return _getptr(x, f) + f === :ContentSize && return _getptr(x, f) + f === :ContentSizeIdeal && return _getptr(x, f) + f === :ContentSizeExplicit && return _getptr(x, f) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :TitleBarHeight && return unsafe_load(_getptr(x, f)) + f === :MenuBarHeight && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX2 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY2 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeY1 && return unsafe_load(_getptr(x, f)) + f === :NameBufLen && return unsafe_load(_getptr(x, f)) + f === :MoveId && return unsafe_load(_getptr(x, f)) + f === :TabId && return unsafe_load(_getptr(x, f)) + f === :ChildId && return unsafe_load(_getptr(x, f)) + f === :PopupId && return unsafe_load(_getptr(x, f)) + f === :Scroll && return _getptr(x, f) + f === :ScrollMax && return _getptr(x, f) + f === :ScrollTarget && return _getptr(x, f) + f === :ScrollTargetCenterRatio && return _getptr(x, f) + f === :ScrollTargetEdgeSnapDist && return _getptr(x, f) + f === :ScrollbarSizes && return _getptr(x, f) + f === :ScrollbarX && return unsafe_load(_getptr(x, f)) + f === :ScrollbarY && return unsafe_load(_getptr(x, f)) + f === :ViewportOwned && return unsafe_load(_getptr(x, f)) + f === :Active && return unsafe_load(_getptr(x, f)) + f === :WasActive && return unsafe_load(_getptr(x, f)) + f === :WriteAccessed && return unsafe_load(_getptr(x, f)) + f === :Collapsed && return unsafe_load(_getptr(x, f)) + f === :WantCollapseToggle && return unsafe_load(_getptr(x, f)) + f === :SkipItems && return unsafe_load(_getptr(x, f)) + f === :SkipRefresh && return unsafe_load(_getptr(x, f)) + f === :Appearing && return unsafe_load(_getptr(x, f)) + f === :Hidden && return unsafe_load(_getptr(x, f)) + f === :IsFallbackWindow && return unsafe_load(_getptr(x, f)) + f === :IsExplicitChild && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHovered && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHeld && return unsafe_load(_getptr(x, f)) + f === :BeginCount && return unsafe_load(_getptr(x, f)) + f === :BeginCountPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinParent && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinContext && return unsafe_load(_getptr(x, f)) + f === :FocusOrder && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesX && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesY && return unsafe_load(_getptr(x, f)) + f === :AutoFitOnlyGrows && return unsafe_load(_getptr(x, f)) + f === :AutoPosLastDirection && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCanSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCannotSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesForRenderOnly && return unsafe_load(_getptr(x, f)) + f === :DisableInputsFrames && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowSizeAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowCollapsedAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowDockAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosVal && return _getptr(x, f) + f === :SetWindowPosPivot && return _getptr(x, f) + f === :IDStack && return _getptr(x, f) + f === :DC && return _getptr(x, f) + f === :OuterRectClipped && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :ParentWorkRect && return _getptr(x, f) + f === :ClipRect && return _getptr(x, f) + f === :ContentRegionRect && return _getptr(x, f) + f === :HitTestHoleSize && return _getptr(x, f) + f === :HitTestHoleOffset && return _getptr(x, f) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameJustFocused && return unsafe_load(_getptr(x, f)) + f === :LastTimeActive && return unsafe_load(_getptr(x, f)) + f === :ItemWidthDefault && return unsafe_load(_getptr(x, f)) + f === :StateStorage && return _getptr(x, f) + f === :ColumnsStorage && return _getptr(x, f) + f === :FontWindowScale && return unsafe_load(_getptr(x, f)) + f === :FontDpiScale && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :DrawList && return unsafe_load(_getptr(x, f)) + f === :DrawListInst && return _getptr(x, f) + f === :ParentWindow && return unsafe_load(_getptr(x, f)) + f === :ParentWindowInBeginStack && return unsafe_load(_getptr(x, f)) + f === :RootWindow && return unsafe_load(_getptr(x, f)) + f === :RootWindowPopupTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowDockTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowForTitleBarHighlight && return unsafe_load(_getptr(x, f)) + f === :RootWindowForNav && return unsafe_load(_getptr(x, f)) + f === :ParentWindowForFocusRoute && return unsafe_load(_getptr(x, f)) + f === :NavLastChildNavWindow && return unsafe_load(_getptr(x, f)) + f === :NavLastIds && return _getptr(x, f) + f === :NavRectRel && return _getptr(x, f) + f === :NavPreferredScoringPosRel && return _getptr(x, f) + f === :NavRootFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListIdxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListVtxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :DockIsActive && return unsafe_load(_getptr(x, f)) + f === :DockNodeIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabWantClose && return unsafe_load(_getptr(x, f)) + f === :DockOrder && return unsafe_load(_getptr(x, f)) + f === :DockStyle && return _getptr(x, f) + f === :DockNode && return unsafe_load(_getptr(x, f)) + f === :DockNodeAsHost && return unsafe_load(_getptr(x, f)) + f === :DockId && return unsafe_load(_getptr(x, f)) + f === :DockTabItemStatusFlags && return unsafe_load(_getptr(x, f)) + f === :DockTabItemRect && return _getptr(x, f) return getfield(x, f) end @@ -1671,7 +2250,7 @@ end function Base.setproperty!(x::Ptr{ImGuiWindow}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1839,10 +2418,17 @@ struct ImGuiStyleMod data::NTuple{12, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyleMod}, f::Symbol) f === :VarIdx && return Ptr{ImGuiStyleVar}(x + 0) f === :BackupInt && return Ptr{NTuple{2, Cint}}(x + 4) f === :BackupFloat && return Ptr{NTuple{2, Cfloat}}(x + 4) + error("Unrecognized field of type `ImGuiStyleMod`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) + f === :VarIdx && return unsafe_load(_getptr(x, f)) + f === :BackupInt && return _getptr(x, f) + f === :BackupFloat && return _getptr(x, f) return getfield(x, f) end @@ -1854,7 +2440,7 @@ function Base.getproperty(x::ImGuiStyleMod, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStyleMod}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStyleMod @@ -2229,7 +2815,7 @@ struct ImGuiTableColumn data::NTuple{112, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :Flags && return Ptr{ImGuiTableColumnFlags}(x + 0) f === :WidthGiven && return Ptr{Cfloat}(x + 4) f === :MinX && return Ptr{Cfloat}(x + 8) @@ -2271,6 +2857,51 @@ function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :SortDirectionsAvailCount && return (Ptr{ImU8}(x + 108), 10, 2) f === :SortDirectionsAvailMask && return (Ptr{ImU8}(x + 108), 12, 4) f === :SortDirectionsAvailList && return Ptr{ImU8}(x + 110) + error("Unrecognized field of type `ImGuiTableColumn`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :WidthGiven && return unsafe_load(_getptr(x, f)) + f === :MinX && return unsafe_load(_getptr(x, f)) + f === :MaxX && return unsafe_load(_getptr(x, f)) + f === :WidthRequest && return unsafe_load(_getptr(x, f)) + f === :WidthAuto && return unsafe_load(_getptr(x, f)) + f === :StretchWeight && return unsafe_load(_getptr(x, f)) + f === :InitStretchWeightOrWidth && return unsafe_load(_getptr(x, f)) + f === :ClipRect && return _getptr(x, f) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :WorkMinX && return unsafe_load(_getptr(x, f)) + f === :WorkMaxX && return unsafe_load(_getptr(x, f)) + f === :ItemWidth && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXFrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXUnfrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersUsed && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersIdeal && return unsafe_load(_getptr(x, f)) + f === :NameOffset && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IndexWithinEnabledSet && return unsafe_load(_getptr(x, f)) + f === :PrevEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :NextEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :DrawChannelFrozen && return unsafe_load(_getptr(x, f)) + f === :DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabledNextFrame && return unsafe_load(_getptr(x, f)) + f === :IsVisibleX && return unsafe_load(_getptr(x, f)) + f === :IsVisibleY && return unsafe_load(_getptr(x, f)) + f === :IsRequestOutput && return unsafe_load(_getptr(x, f)) + f === :IsSkipItems && return unsafe_load(_getptr(x, f)) + f === :IsPreserveWidthAuto && return unsafe_load(_getptr(x, f)) + f === :NavLayerCurrent && return unsafe_load(_getptr(x, f)) + f === :AutoFitQueue && return unsafe_load(_getptr(x, f)) + f === :CannotSkipItemsQueue && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailCount && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailMask && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailList && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2298,7 +2929,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumn}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2385,7 +3016,7 @@ struct ImGuiTable data::NTuple{512, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) +function _getptr(x::Ptr{ImGuiTable}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiTableFlags}(x + 4) f === :RawData && return Ptr{Ptr{Cvoid}}(x + 8) @@ -2498,6 +3129,122 @@ function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) f === :HasScrollbarYPrev && return Ptr{Bool}(x + 507) f === :MemoryCompacted && return Ptr{Bool}(x + 508) f === :HostSkipItems && return Ptr{Bool}(x + 509) + error("Unrecognized field of type `ImGuiTable`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :RawData && return unsafe_load(_getptr(x, f)) + f === :TempData && return unsafe_load(_getptr(x, f)) + f === :Columns && return _getptr(x, f) + f === :DisplayOrderToIndex && return _getptr(x, f) + f === :RowCellData && return _getptr(x, f) + f === :EnabledMaskByDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :EnabledMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :VisibleMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :SettingsLoadedFlags && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :ColumnsCount && return unsafe_load(_getptr(x, f)) + f === :CurrentRow && return unsafe_load(_getptr(x, f)) + f === :CurrentColumn && return unsafe_load(_getptr(x, f)) + f === :InstanceCurrent && return unsafe_load(_getptr(x, f)) + f === :InstanceInteracted && return unsafe_load(_getptr(x, f)) + f === :RowPosY1 && return unsafe_load(_getptr(x, f)) + f === :RowPosY2 && return unsafe_load(_getptr(x, f)) + f === :RowMinHeight && return unsafe_load(_getptr(x, f)) + f === :RowCellPaddingY && return unsafe_load(_getptr(x, f)) + f === :RowTextBaseline && return unsafe_load(_getptr(x, f)) + f === :RowIndentOffsetX && return unsafe_load(_getptr(x, f)) + f === :RowFlags && return unsafe_load(_getptr(x, f)) + f === :LastRowFlags && return unsafe_load(_getptr(x, f)) + f === :RowBgColorCounter && return unsafe_load(_getptr(x, f)) + f === :RowBgColor && return _getptr(x, f) + f === :BorderColorStrong && return unsafe_load(_getptr(x, f)) + f === :BorderColorLight && return unsafe_load(_getptr(x, f)) + f === :BorderX1 && return unsafe_load(_getptr(x, f)) + f === :BorderX2 && return unsafe_load(_getptr(x, f)) + f === :HostIndentX && return unsafe_load(_getptr(x, f)) + f === :MinColumnWidth && return unsafe_load(_getptr(x, f)) + f === :OuterPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX1 && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX2 && return unsafe_load(_getptr(x, f)) + f === :InnerWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsGivenWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsAutoFitWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsStretchSumWeights && return unsafe_load(_getptr(x, f)) + f === :ResizedColumnNextWidth && return unsafe_load(_getptr(x, f)) + f === :ResizeLockMinContentsX2 && return unsafe_load(_getptr(x, f)) + f === :RefScale && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersHeight && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersSlope && return unsafe_load(_getptr(x, f)) + f === :OuterRect && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :BgClipRect && return _getptr(x, f) + f === :Bg0ClipRectForDrawCmd && return _getptr(x, f) + f === :Bg2ClipRectForDrawCmd && return _getptr(x, f) + f === :HostClipRect && return _getptr(x, f) + f === :HostBackupInnerClipRect && return _getptr(x, f) + f === :OuterWindow && return unsafe_load(_getptr(x, f)) + f === :InnerWindow && return unsafe_load(_getptr(x, f)) + f === :ColumnsNames && return _getptr(x, f) + f === :DrawSplitter && return unsafe_load(_getptr(x, f)) + f === :InstanceDataFirst && return _getptr(x, f) + f === :InstanceDataExtra && return _getptr(x, f) + f === :SortSpecsSingle && return _getptr(x, f) + f === :SortSpecsMulti && return _getptr(x, f) + f === :SortSpecs && return _getptr(x, f) + f === :SortSpecsCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledFixedCount && return unsafe_load(_getptr(x, f)) + f === :DeclColumnsCount && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersCount && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBody && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBorder && return unsafe_load(_getptr(x, f)) + f === :HighlightColumnHeader && return unsafe_load(_getptr(x, f)) + f === :AutoFitSingleColumn && return unsafe_load(_getptr(x, f)) + f === :ResizedColumn && return unsafe_load(_getptr(x, f)) + f === :LastResizedColumn && return unsafe_load(_getptr(x, f)) + f === :HeldHeaderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumnDir && return unsafe_load(_getptr(x, f)) + f === :LeftMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :LeftMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :ContextPopupColumn && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsCount && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsCount && return unsafe_load(_getptr(x, f)) + f === :RowCellDataCurrent && return unsafe_load(_getptr(x, f)) + f === :DummyDrawChannel && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsLayoutLocked && return unsafe_load(_getptr(x, f)) + f === :IsInsideRow && return unsafe_load(_getptr(x, f)) + f === :IsInitializing && return unsafe_load(_getptr(x, f)) + f === :IsSortSpecsDirty && return unsafe_load(_getptr(x, f)) + f === :IsUsingHeaders && return unsafe_load(_getptr(x, f)) + f === :IsContextPopupOpen && return unsafe_load(_getptr(x, f)) + f === :DisableDefaultContextMenu && return unsafe_load(_getptr(x, f)) + f === :IsSettingsRequestLoad && return unsafe_load(_getptr(x, f)) + f === :IsSettingsDirty && return unsafe_load(_getptr(x, f)) + f === :IsDefaultDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IsResetAllRequest && return unsafe_load(_getptr(x, f)) + f === :IsResetDisplayOrderRequest && return unsafe_load(_getptr(x, f)) + f === :IsUnfrozenRows && return unsafe_load(_getptr(x, f)) + f === :IsDefaultSizingPolicy && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdAliveBeforeTable && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdInTable && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYCurr && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYPrev && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :HostSkipItems && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2525,7 +3272,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTable}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2830,12 +3577,21 @@ struct ImGuiStackLevelInfo data::NTuple{64, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) +function _getptr(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :QueryFrameCount && return Ptr{ImS8}(x + 4) f === :QuerySuccess && return Ptr{Bool}(x + 5) f === :DataType && return (Ptr{ImGuiDataType}(x + 4), 16, 8) f === :Desc && return Ptr{NTuple{57, Cchar}}(x + 7) + error("Unrecognized field of type `ImGuiStackLevelInfo`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :QueryFrameCount && return unsafe_load(_getptr(x, f)) + f === :QuerySuccess && return unsafe_load(_getptr(x, f)) + f === :DataType && return unsafe_load(_getptr(x, f)) + f === :Desc && return _getptr(x, f) return getfield(x, f) end @@ -2863,7 +3619,7 @@ end function Base.setproperty!(x::Ptr{ImGuiStackLevelInfo}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2914,7 +3670,7 @@ struct ImGuiContext data::NTuple{13492, UInt8} end -function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) +function _getptr(x::Ptr{ImGuiContext}, f::Symbol) f === :Initialized && return Ptr{Bool}(x + 0) f === :FontAtlasOwnedByContext && return Ptr{Bool}(x + 1) f === :IO && return Ptr{ImGuiIO}(x + 4) @@ -3205,6 +3961,300 @@ function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) f === :WantTextInputNextFrame && return Ptr{Cint}(x + 13412) f === :TempBuffer && return Ptr{ImVector_char}(x + 13416) f === :TempKeychordName && return Ptr{NTuple{64, Cchar}}(x + 13428) + error("Unrecognized field of type `ImGuiContext`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) + f === :Initialized && return unsafe_load(_getptr(x, f)) + f === :FontAtlasOwnedByContext && return unsafe_load(_getptr(x, f)) + f === :IO && return _getptr(x, f) + f === :PlatformIO && return _getptr(x, f) + f === :Style && return _getptr(x, f) + f === :ConfigFlagsCurrFrame && return unsafe_load(_getptr(x, f)) + f === :ConfigFlagsLastFrame && return unsafe_load(_getptr(x, f)) + f === :Font && return unsafe_load(_getptr(x, f)) + f === :FontSize && return unsafe_load(_getptr(x, f)) + f === :FontBaseSize && return unsafe_load(_getptr(x, f)) + f === :CurrentDpiScale && return unsafe_load(_getptr(x, f)) + f === :DrawListSharedData && return _getptr(x, f) + f === :Time && return unsafe_load(_getptr(x, f)) + f === :FrameCount && return unsafe_load(_getptr(x, f)) + f === :FrameCountEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountPlatformEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountRendered && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScope && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScopeWithImplicitWindow && return unsafe_load(_getptr(x, f)) + f === :WithinEndChild && return unsafe_load(_getptr(x, f)) + f === :GcCompactAll && return unsafe_load(_getptr(x, f)) + f === :TestEngineHookItems && return unsafe_load(_getptr(x, f)) + f === :TestEngine && return unsafe_load(_getptr(x, f)) + f === :InputEventsQueue && return _getptr(x, f) + f === :InputEventsTrail && return _getptr(x, f) + f === :InputEventsNextMouseSource && return unsafe_load(_getptr(x, f)) + f === :InputEventsNextEventId && return unsafe_load(_getptr(x, f)) + f === :Windows && return _getptr(x, f) + f === :WindowsFocusOrder && return _getptr(x, f) + f === :WindowsTempSortBuffer && return _getptr(x, f) + f === :CurrentWindowStack && return _getptr(x, f) + f === :WindowsById && return _getptr(x, f) + f === :WindowsActiveCount && return unsafe_load(_getptr(x, f)) + f === :WindowsHoverPadding && return _getptr(x, f) + f === :DebugBreakInWindow && return unsafe_load(_getptr(x, f)) + f === :CurrentWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindowUnderMovingWindow && return unsafe_load(_getptr(x, f)) + f === :MovingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowRefMousePos && return _getptr(x, f) + f === :WheelingWindowStartFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowScrolledFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowReleaseTimer && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowWheelRemainder && return _getptr(x, f) + f === :WheelingAxisAvg && return _getptr(x, f) + f === :DebugHookIdInfo && return unsafe_load(_getptr(x, f)) + f === :HoveredId && return unsafe_load(_getptr(x, f)) + f === :HoveredIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoveredIdTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdNotActiveTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :HoveredIdDisabled && return unsafe_load(_getptr(x, f)) + f === :ItemUnclipByLog && return unsafe_load(_getptr(x, f)) + f === :ActiveId && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsJustActivated && return unsafe_load(_getptr(x, f)) + f === :ActiveIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :ActiveIdNoClearOnFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenPressedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedThisFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdFromShortcut && return unsafe_load(_getptr(x, f)) + f === :ActiveIdMouseButton && return unsafe_load(_getptr(x, f)) + f === :ActiveIdClickOffset && return _getptr(x, f) + f === :ActiveIdWindow && return unsafe_load(_getptr(x, f)) + f === :ActiveIdSource && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameWindow && return unsafe_load(_getptr(x, f)) + f === :LastActiveId && return unsafe_load(_getptr(x, f)) + f === :LastActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeFromNoneTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyboardKeyPressTime && return unsafe_load(_getptr(x, f)) + f === :KeysMayBeCharInput && return _getptr(x, f) + f === :KeysOwnerData && return _getptr(x, f) + f === :KeysRoutingTable && return _getptr(x, f) + f === :ActiveIdUsingNavDirMask && return unsafe_load(_getptr(x, f)) + f === :ActiveIdUsingAllKeyboardKeys && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInShortcutRouting && return unsafe_load(_getptr(x, f)) + f === :CurrentFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :CurrentItemFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLocateId && return unsafe_load(_getptr(x, f)) + f === :NextItemData && return _getptr(x, f) + f === :LastItemData && return _getptr(x, f) + f === :NextWindowData && return _getptr(x, f) + f === :DebugShowGroupRects && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorIdx && return unsafe_load(_getptr(x, f)) + f === :ColorStack && return _getptr(x, f) + f === :StyleVarStack && return _getptr(x, f) + f === :FontStack && return _getptr(x, f) + f === :FocusScopeStack && return _getptr(x, f) + f === :ItemFlagsStack && return _getptr(x, f) + f === :GroupStack && return _getptr(x, f) + f === :OpenPopupStack && return _getptr(x, f) + f === :BeginPopupStack && return _getptr(x, f) + f === :NavTreeNodeStack && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) + f === :CurrentViewport && return unsafe_load(_getptr(x, f)) + f === :MouseViewport && return unsafe_load(_getptr(x, f)) + f === :MouseLastHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :PlatformLastFocusedViewportId && return unsafe_load(_getptr(x, f)) + f === :FallbackMonitor && return _getptr(x, f) + f === :PlatformMonitorsFullWorkRect && return _getptr(x, f) + f === :ViewportCreatedCount && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowsCreatedCount && return unsafe_load(_getptr(x, f)) + f === :ViewportFocusedStampCount && return unsafe_load(_getptr(x, f)) + f === :NavWindow && return unsafe_load(_getptr(x, f)) + f === :NavId && return unsafe_load(_getptr(x, f)) + f === :NavFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavActivateId && return unsafe_load(_getptr(x, f)) + f === :NavActivateDownId && return unsafe_load(_getptr(x, f)) + f === :NavActivatePressedId && return unsafe_load(_getptr(x, f)) + f === :NavActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavFocusRoute && return _getptr(x, f) + f === :NavHighlightActivatedId && return unsafe_load(_getptr(x, f)) + f === :NavHighlightActivatedTimer && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateId && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavInputSource && return unsafe_load(_getptr(x, f)) + f === :NavLayer && return unsafe_load(_getptr(x, f)) + f === :NavLastValidSelectionUserData && return unsafe_load(_getptr(x, f)) + f === :NavIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :NavMousePosDirty && return unsafe_load(_getptr(x, f)) + f === :NavDisableHighlight && return unsafe_load(_getptr(x, f)) + f === :NavDisableMouseHover && return unsafe_load(_getptr(x, f)) + f === :NavAnyRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequestFromMove && return unsafe_load(_getptr(x, f)) + f === :NavInitResult && return _getptr(x, f) + f === :NavMoveSubmitted && return unsafe_load(_getptr(x, f)) + f === :NavMoveScoringItems && return unsafe_load(_getptr(x, f)) + f === :NavMoveForwardToNextFrame && return unsafe_load(_getptr(x, f)) + f === :NavMoveFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveScrollFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavMoveDir && return unsafe_load(_getptr(x, f)) + f === :NavMoveDirForDebug && return unsafe_load(_getptr(x, f)) + f === :NavMoveClipDir && return unsafe_load(_getptr(x, f)) + f === :NavScoringRect && return _getptr(x, f) + f === :NavScoringNoClipRect && return _getptr(x, f) + f === :NavScoringDebugCount && return unsafe_load(_getptr(x, f)) + f === :NavTabbingDir && return unsafe_load(_getptr(x, f)) + f === :NavTabbingCounter && return unsafe_load(_getptr(x, f)) + f === :NavMoveResultLocal && return _getptr(x, f) + f === :NavMoveResultLocalVisible && return _getptr(x, f) + f === :NavMoveResultOther && return _getptr(x, f) + f === :NavTabbingResultFirst && return _getptr(x, f) + f === :ConfigNavWindowingKeyNext && return unsafe_load(_getptr(x, f)) + f === :ConfigNavWindowingKeyPrev && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTarget && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTargetAnim && return unsafe_load(_getptr(x, f)) + f === :NavWindowingListWindow && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTimer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingHighlightAlpha && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleLayer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleKey && return unsafe_load(_getptr(x, f)) + f === :NavWindowingAccumDeltaPos && return _getptr(x, f) + f === :NavWindowingAccumDeltaSize && return _getptr(x, f) + f === :DimBgRatio && return unsafe_load(_getptr(x, f)) + f === :DragDropActive && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinSource && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinTarget && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropMouseButton && return unsafe_load(_getptr(x, f)) + f === :DragDropPayload && return _getptr(x, f) + f === :DragDropTargetRect && return _getptr(x, f) + f === :DragDropTargetClipRect && return _getptr(x, f) + f === :DragDropTargetId && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurrRectSurface && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurr && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdPrev && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropHoldJustPressedId && return unsafe_load(_getptr(x, f)) + f === :DragDropPayloadBufHeap && return _getptr(x, f) + f === :DragDropPayloadBufLocal && return _getptr(x, f) + f === :ClipperTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :ClipperTempData && return _getptr(x, f) + f === :CurrentTable && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInTable && return unsafe_load(_getptr(x, f)) + f === :TablesTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :TablesTempData && return _getptr(x, f) + f === :Tables && return _getptr(x, f) + f === :TablesLastTimeActive && return _getptr(x, f) + f === :DrawChannelsTempMergeBuffer && return _getptr(x, f) + f === :CurrentTabBar && return unsafe_load(_getptr(x, f)) + f === :TabBars && return _getptr(x, f) + f === :CurrentTabBarStack && return _getptr(x, f) + f === :ShrinkWidthBuffer && return _getptr(x, f) + f === :HoverItemDelayId && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayClearTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :HoverWindowUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :MouseCursor && return unsafe_load(_getptr(x, f)) + f === :MouseStationaryTimer && return unsafe_load(_getptr(x, f)) + f === :MouseLastValidPos && return _getptr(x, f) + f === :InputTextState && return _getptr(x, f) + f === :InputTextDeactivatedState && return _getptr(x, f) + f === :InputTextPasswordFont && return _getptr(x, f) + f === :TempInputId && return unsafe_load(_getptr(x, f)) + f === :DataTypeZeroValue && return _getptr(x, f) + f === :BeginMenuDepth && return unsafe_load(_getptr(x, f)) + f === :BeginComboDepth && return unsafe_load(_getptr(x, f)) + f === :ColorEditOptions && return unsafe_load(_getptr(x, f)) + f === :ColorEditCurrentID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedHue && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedSat && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedColor && return unsafe_load(_getptr(x, f)) + f === :ColorPickerRef && return _getptr(x, f) + f === :ComboPreviewData && return _getptr(x, f) + f === :WindowResizeBorderExpectedRect && return _getptr(x, f) + f === :WindowResizeRelativeMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSeekMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarClickDeltaToGrabCenter && return unsafe_load(_getptr(x, f)) + f === :SliderGrabClickOffset && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :DragSpeedDefaultRatio && return unsafe_load(_getptr(x, f)) + f === :DisabledAlphaBackup && return unsafe_load(_getptr(x, f)) + f === :DisabledStackSize && return unsafe_load(_getptr(x, f)) + f === :LockMarkEdited && return unsafe_load(_getptr(x, f)) + f === :TooltipOverrideCount && return unsafe_load(_getptr(x, f)) + f === :ClipboardHandlerData && return _getptr(x, f) + f === :MenusIdSubmittedThisFrame && return _getptr(x, f) + f === :TypingSelectState && return _getptr(x, f) + f === :PlatformImeData && return _getptr(x, f) + f === :PlatformImeDataPrev && return _getptr(x, f) + f === :PlatformImeViewport && return unsafe_load(_getptr(x, f)) + f === :DockContext && return _getptr(x, f) + f === :DockNodeWindowMenuHandler && return unsafe_load(_getptr(x, f)) + f === :SettingsLoaded && return unsafe_load(_getptr(x, f)) + f === :SettingsDirtyTimer && return unsafe_load(_getptr(x, f)) + f === :SettingsIniData && return _getptr(x, f) + f === :SettingsHandlers && return _getptr(x, f) + f === :SettingsWindows && return _getptr(x, f) + f === :SettingsTables && return _getptr(x, f) + f === :Hooks && return _getptr(x, f) + f === :HookIdNext && return unsafe_load(_getptr(x, f)) + f === :LocalizationTable && return _getptr(x, f) + f === :LogEnabled && return unsafe_load(_getptr(x, f)) + f === :LogType && return unsafe_load(_getptr(x, f)) + f === :LogFile && return unsafe_load(_getptr(x, f)) + f === :LogBuffer && return _getptr(x, f) + f === :LogNextPrefix && return unsafe_load(_getptr(x, f)) + f === :LogNextSuffix && return unsafe_load(_getptr(x, f)) + f === :LogLinePosY && return unsafe_load(_getptr(x, f)) + f === :LogLineFirstItem && return unsafe_load(_getptr(x, f)) + f === :LogDepthRef && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpand && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpandDefault && return unsafe_load(_getptr(x, f)) + f === :DebugLogFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogBuf && return _getptr(x, f) + f === :DebugLogIndex && return _getptr(x, f) + f === :DebugLogAutoDisableFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogAutoDisableFrames && return unsafe_load(_getptr(x, f)) + f === :DebugLocateFrames && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInLocateId && return unsafe_load(_getptr(x, f)) + f === :DebugBreakKeyChord && return unsafe_load(_getptr(x, f)) + f === :DebugBeginReturnValueCullDepth && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerActive && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerMouseButton && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerBreakId && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorTime && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorBackup && return _getptr(x, f) + f === :DebugMetricsConfig && return _getptr(x, f) + f === :DebugIDStackTool && return _getptr(x, f) + f === :DebugAllocInfo && return _getptr(x, f) + f === :DebugHoveredDockNode && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrame && return _getptr(x, f) + f === :FramerateSecPerFrameIdx && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameCount && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameAccum && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouseNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboardNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantTextInputNextFrame && return unsafe_load(_getptr(x, f)) + f === :TempBuffer && return _getptr(x, f) + f === :TempKeychordName && return _getptr(x, f) return getfield(x, f) end @@ -3232,7 +4282,7 @@ end function Base.setproperty!(x::Ptr{ImGuiContext}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -3277,16 +4327,24 @@ struct ImGuiSizeCallbackData CurrentSize::ImVec2 DesiredSize::ImVec2 end -function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) +function _getptr(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) f === :UserData && return Ptr{Ptr{Cvoid}}(x + 0) f === :Pos && return Ptr{ImVec2}(x + 4) f === :CurrentSize && return Ptr{ImVec2}(x + 12) f === :DesiredSize && return Ptr{ImVec2}(x + 20) + error("Unrecognized field of type `ImGuiSizeCallbackData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :CurrentSize && return _getptr(x, f) + f === :DesiredSize && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiSizeCallbackData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -4379,7 +5437,7 @@ struct ImGuiTableColumnSettings data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :WidthOrWeight && return Ptr{Cfloat}(x + 0) f === :UserID && return Ptr{ImGuiID}(x + 4) f === :Index && return Ptr{ImGuiTableColumnIdx}(x + 8) @@ -4388,6 +5446,18 @@ function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :SortDirection && return (Ptr{ImU8}(x + 12), 16, 2) f === :IsEnabled && return (Ptr{ImU8}(x + 12), 18, 1) f === :IsStretch && return (Ptr{ImU8}(x + 12), 19, 1) + error("Unrecognized field of type `ImGuiTableColumnSettings`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) + f === :WidthOrWeight && return unsafe_load(_getptr(x, f)) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :Index && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsStretch && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -4415,7 +5485,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumnSettings}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) diff --git a/lib/i686-w64-mingw32.jl b/lib/i686-w64-mingw32.jl index 8da505d..4e78b8a 100644 --- a/lib/i686-w64-mingw32.jl +++ b/lib/i686-w64-mingw32.jl @@ -1,4 +1,4 @@ -using CEnum +using CEnum: CEnum, @cenum to_c_type(t::Type) = t to_c_type_pairs(va_list) = map(enumerate(to_c_type.(va_list))) do (ind, type) @@ -13,7 +13,7 @@ struct tm data::NTuple{36, UInt8} end -function Base.getproperty(x::Ptr{tm}, f::Symbol) +function _getptr(x::Ptr{tm}, f::Symbol) f === :tm_sec && return Ptr{Cint}(x + 0) f === :tm_min && return Ptr{Cint}(x + 4) f === :tm_hour && return Ptr{Cint}(x + 8) @@ -23,6 +23,19 @@ function Base.getproperty(x::Ptr{tm}, f::Symbol) f === :tm_wday && return Ptr{Cint}(x + 24) f === :tm_yday && return Ptr{Cint}(x + 28) f === :tm_isdst && return Ptr{Cint}(x + 32) + error("Unrecognized field of type `tm`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{tm}, f::Symbol) + f === :tm_sec && return unsafe_load(_getptr(x, f)) + f === :tm_min && return unsafe_load(_getptr(x, f)) + f === :tm_hour && return unsafe_load(_getptr(x, f)) + f === :tm_mday && return unsafe_load(_getptr(x, f)) + f === :tm_mon && return unsafe_load(_getptr(x, f)) + f === :tm_year && return unsafe_load(_getptr(x, f)) + f === :tm_wday && return unsafe_load(_getptr(x, f)) + f === :tm_yday && return unsafe_load(_getptr(x, f)) + f === :tm_isdst && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -34,7 +47,7 @@ function Base.getproperty(x::tm, f::Symbol) end function Base.setproperty!(x::Ptr{tm}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end # typedef void ( * ImDrawCallback ) ( const ImDrawList * parent_list , const ImDrawCmd * cmd ) @@ -46,16 +59,24 @@ struct ImVec4 z::Cfloat w::Cfloat end -function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) +function _getptr(x::Ptr{ImVec4}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) f === :z && return Ptr{Cfloat}(x + 8) f === :w && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImVec4`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) + f === :z && return unsafe_load(_getptr(x, f)) + f === :w && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec4}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -70,7 +91,7 @@ struct ImDrawCmd UserCallback::ImDrawCallback UserCallbackData::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) +function _getptr(x::Ptr{ImDrawCmd}, f::Symbol) f === :ClipRect && return Ptr{ImVec4}(x + 0) f === :TextureId && return Ptr{ImTextureID}(x + 16) f === :VtxOffset && return Ptr{Cuint}(x + 20) @@ -78,11 +99,22 @@ function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) f === :ElemCount && return Ptr{Cuint}(x + 28) f === :UserCallback && return Ptr{ImDrawCallback}(x + 32) f === :UserCallbackData && return Ptr{Ptr{Cvoid}}(x + 36) + error("Unrecognized field of type `ImDrawCmd`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) + f === :ClipRect && return _getptr(x, f) + f === :TextureId && return unsafe_load(_getptr(x, f)) + f === :VtxOffset && return unsafe_load(_getptr(x, f)) + f === :IdxOffset && return unsafe_load(_getptr(x, f)) + f === :ElemCount && return unsafe_load(_getptr(x, f)) + f === :UserCallback && return unsafe_load(_getptr(x, f)) + f === :UserCallbackData && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawCmd}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -109,14 +141,20 @@ struct ImVec2 x::Cfloat y::Cfloat end -function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) +function _getptr(x::Ptr{ImVec2}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) + error("Unrecognized field of type `ImVec2`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec2}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -133,6 +171,24 @@ struct ImVector_ImDrawVert Capacity::Cint Data::Ptr{ImDrawVert} end +function _getptr(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return Ptr{Cint}(x + 0) + f === :Capacity && return Ptr{Cint}(x + 4) + f === :Data && return Ptr{Ptr{ImDrawVert}}(x + 8) + error("Unrecognized field of type `ImVector_ImDrawVert`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return unsafe_load(_getptr(x, f)) + f === :Capacity && return unsafe_load(_getptr(x, f)) + f === :Data && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImVector_ImDrawVert}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImDrawListFlags = Cint @@ -156,7 +212,7 @@ struct ImFontGlyph data::NTuple{40, UInt8} end -function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) +function _getptr(x::Ptr{ImFontGlyph}, f::Symbol) f === :Colored && return (Ptr{Cuint}(x + 0), 0, 1) f === :Visible && return (Ptr{Cuint}(x + 0), 1, 1) f === :Codepoint && return (Ptr{Cuint}(x + 0), 2, 30) @@ -169,6 +225,22 @@ function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) f === :V0 && return Ptr{Cfloat}(x + 28) f === :U1 && return Ptr{Cfloat}(x + 32) f === :V1 && return Ptr{Cfloat}(x + 36) + error("Unrecognized field of type `ImFontGlyph`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) + f === :Colored && return unsafe_load(_getptr(x, f)) + f === :Visible && return unsafe_load(_getptr(x, f)) + f === :Codepoint && return unsafe_load(_getptr(x, f)) + f === :AdvanceX && return unsafe_load(_getptr(x, f)) + f === :X0 && return unsafe_load(_getptr(x, f)) + f === :Y0 && return unsafe_load(_getptr(x, f)) + f === :X1 && return unsafe_load(_getptr(x, f)) + f === :Y1 && return unsafe_load(_getptr(x, f)) + f === :U0 && return unsafe_load(_getptr(x, f)) + f === :V0 && return unsafe_load(_getptr(x, f)) + f === :U1 && return unsafe_load(_getptr(x, f)) + f === :V1 && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -196,7 +268,7 @@ end function Base.setproperty!(x::Ptr{ImFontGlyph}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -284,7 +356,7 @@ function Base.getproperty(x::ImFontConfig, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) +function _getptr(x::Ptr{ImFontConfig}, f::Symbol) f === :FontData && return Ptr{Ptr{Cvoid}}(x + 0) f === :FontDataSize && return Ptr{Cint}(x + 4) f === :FontDataOwnedByAtlas && return Ptr{Bool}(x + 8) @@ -305,11 +377,35 @@ function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) f === :EllipsisChar && return Ptr{ImWchar}(x + 76) f === :Name && return Ptr{NTuple{40, Cchar}}(x + 78) f === :DstFont && return Ptr{Ptr{ImFont}}(x + 120) + error("Unrecognized field of type `ImFontConfig`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) + f === :FontData && return unsafe_load(_getptr(x, f)) + f === :FontDataSize && return unsafe_load(_getptr(x, f)) + f === :FontDataOwnedByAtlas && return unsafe_load(_getptr(x, f)) + f === :FontNo && return unsafe_load(_getptr(x, f)) + f === :SizePixels && return unsafe_load(_getptr(x, f)) + f === :OversampleH && return unsafe_load(_getptr(x, f)) + f === :OversampleV && return unsafe_load(_getptr(x, f)) + f === :PixelSnapH && return unsafe_load(_getptr(x, f)) + f === :GlyphExtraSpacing && return _getptr(x, f) + f === :GlyphOffset && return _getptr(x, f) + f === :GlyphRanges && return unsafe_load(_getptr(x, f)) + f === :GlyphMinAdvanceX && return unsafe_load(_getptr(x, f)) + f === :GlyphMaxAdvanceX && return unsafe_load(_getptr(x, f)) + f === :MergeMode && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :RasterizerMultiply && return unsafe_load(_getptr(x, f)) + f === :RasterizerDensity && return unsafe_load(_getptr(x, f)) + f === :EllipsisChar && return unsafe_load(_getptr(x, f)) + f === :Name && return _getptr(x, f) + f === :DstFont && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontConfig}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImFontConfig @@ -346,7 +442,7 @@ struct ImFontAtlas PackIdMouseCursors::Cint PackIdLines::Cint end -function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) +function _getptr(x::Ptr{ImFontAtlas}, f::Symbol) f === :Flags && return Ptr{ImFontAtlasFlags}(x + 0) f === :TexID && return Ptr{ImTextureID}(x + 4) f === :TexDesiredWidth && return Ptr{Cint}(x + 8) @@ -369,11 +465,37 @@ function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) f === :FontBuilderFlags && return Ptr{Cuint}(x + 1124) f === :PackIdMouseCursors && return Ptr{Cint}(x + 1128) f === :PackIdLines && return Ptr{Cint}(x + 1132) + error("Unrecognized field of type `ImFontAtlas`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :TexID && return unsafe_load(_getptr(x, f)) + f === :TexDesiredWidth && return unsafe_load(_getptr(x, f)) + f === :TexGlyphPadding && return unsafe_load(_getptr(x, f)) + f === :Locked && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :TexReady && return unsafe_load(_getptr(x, f)) + f === :TexPixelsUseColors && return unsafe_load(_getptr(x, f)) + f === :TexPixelsAlpha8 && return unsafe_load(_getptr(x, f)) + f === :TexPixelsRGBA32 && return unsafe_load(_getptr(x, f)) + f === :TexWidth && return unsafe_load(_getptr(x, f)) + f === :TexHeight && return unsafe_load(_getptr(x, f)) + f === :TexUvScale && return _getptr(x, f) + f === :TexUvWhitePixel && return _getptr(x, f) + f === :Fonts && return _getptr(x, f) + f === :CustomRects && return _getptr(x, f) + f === :ConfigData && return _getptr(x, f) + f === :TexUvLines && return _getptr(x, f) + f === :FontBuilderIO && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :PackIdMouseCursors && return unsafe_load(_getptr(x, f)) + f === :PackIdLines && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontAtlas}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -470,7 +592,7 @@ struct ImDrawList _FringeScale::Cfloat _OwnerName::Ptr{Cchar} end -function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) +function _getptr(x::Ptr{ImDrawList}, f::Symbol) f === :CmdBuffer && return Ptr{ImVector_ImDrawCmd}(x + 0) f === :IdxBuffer && return Ptr{ImVector_ImDrawIdx}(x + 12) f === :VtxBuffer && return Ptr{ImVector_ImDrawVert}(x + 24) @@ -486,11 +608,30 @@ function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) f === :_TextureIdStack && return Ptr{ImVector_ImTextureID}(x + 124) f === :_FringeScale && return Ptr{Cfloat}(x + 136) f === :_OwnerName && return Ptr{Ptr{Cchar}}(x + 140) + error("Unrecognized field of type `ImDrawList`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) + f === :CmdBuffer && return _getptr(x, f) + f === :IdxBuffer && return _getptr(x, f) + f === :VtxBuffer && return _getptr(x, f) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :_VtxCurrentIdx && return unsafe_load(_getptr(x, f)) + f === :_Data && return unsafe_load(_getptr(x, f)) + f === :_VtxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_IdxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_Path && return _getptr(x, f) + f === :_CmdHeader && return _getptr(x, f) + f === :_Splitter && return _getptr(x, f) + f === :_ClipRectStack && return _getptr(x, f) + f === :_TextureIdStack && return _getptr(x, f) + f === :_FringeScale && return unsafe_load(_getptr(x, f)) + f === :_OwnerName && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawList}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -529,7 +670,7 @@ function Base.getproperty(x::ImGuiViewport, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) +function _getptr(x::Ptr{ImGuiViewport}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiViewportFlags}(x + 4) f === :Pos && return Ptr{ImVec2}(x + 8) @@ -547,11 +688,32 @@ function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) f === :PlatformRequestMove && return Ptr{Bool}(x + 69) f === :PlatformRequestResize && return Ptr{Bool}(x + 70) f === :PlatformRequestClose && return Ptr{Bool}(x + 71) + error("Unrecognized field of type `ImGuiViewport`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :ParentViewportId && return unsafe_load(_getptr(x, f)) + f === :DrawData && return unsafe_load(_getptr(x, f)) + f === :RendererUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) + f === :PlatformHandleRaw && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowCreated && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestMove && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestResize && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestClose && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiViewport}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImDrawData @@ -565,7 +727,7 @@ struct ImDrawData FramebufferScale::ImVec2 OwnerViewport::Ptr{ImGuiViewport} end -function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) +function _getptr(x::Ptr{ImDrawData}, f::Symbol) f === :Valid && return Ptr{Bool}(x + 0) f === :CmdListsCount && return Ptr{Cint}(x + 4) f === :TotalIdxCount && return Ptr{Cint}(x + 8) @@ -575,11 +737,24 @@ function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) f === :DisplaySize && return Ptr{ImVec2}(x + 36) f === :FramebufferScale && return Ptr{ImVec2}(x + 44) f === :OwnerViewport && return Ptr{Ptr{ImGuiViewport}}(x + 52) + error("Unrecognized field of type `ImDrawData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) + f === :Valid && return unsafe_load(_getptr(x, f)) + f === :CmdListsCount && return unsafe_load(_getptr(x, f)) + f === :TotalIdxCount && return unsafe_load(_getptr(x, f)) + f === :TotalVtxCount && return unsafe_load(_getptr(x, f)) + f === :CmdLists && return _getptr(x, f) + f === :DisplayPos && return _getptr(x, f) + f === :DisplaySize && return _getptr(x, f) + f === :FramebufferScale && return _getptr(x, f) + f === :OwnerViewport && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -616,6 +791,26 @@ struct ImGuiKeyData DownDurationPrev::Cfloat AnalogValue::Cfloat end +function _getptr(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return Ptr{Bool}(x + 0) + f === :DownDuration && return Ptr{Cfloat}(x + 4) + f === :DownDurationPrev && return Ptr{Cfloat}(x + 8) + f === :AnalogValue && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImGuiKeyData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return unsafe_load(_getptr(x, f)) + f === :DownDuration && return unsafe_load(_getptr(x, f)) + f === :DownDurationPrev && return unsafe_load(_getptr(x, f)) + f === :AnalogValue && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImGuiKeyData}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImU16 = Cushort @@ -729,7 +924,7 @@ function Base.getproperty(x::ImGuiIO, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiIO}, f::Symbol) f === :ConfigFlags && return Ptr{ImGuiConfigFlags}(x + 0) f === :BackendFlags && return Ptr{ImGuiBackendFlags}(x + 4) f === :DisplaySize && return Ptr{ImVec2}(x + 8) @@ -830,11 +1025,115 @@ function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) f === :BackendUsingLegacyNavInputArray && return Ptr{Bool}(x + 2939) f === :InputQueueSurrogate && return Ptr{ImWchar16}(x + 2940) f === :InputQueueCharacters && return Ptr{ImVector_ImWchar}(x + 2944) + error("Unrecognized field of type `ImGuiIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) + f === :ConfigFlags && return unsafe_load(_getptr(x, f)) + f === :BackendFlags && return unsafe_load(_getptr(x, f)) + f === :DisplaySize && return _getptr(x, f) + f === :DeltaTime && return unsafe_load(_getptr(x, f)) + f === :IniSavingRate && return unsafe_load(_getptr(x, f)) + f === :IniFilename && return unsafe_load(_getptr(x, f)) + f === :LogFilename && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Fonts && return unsafe_load(_getptr(x, f)) + f === :FontGlobalScale && return unsafe_load(_getptr(x, f)) + f === :FontAllowUserScaling && return unsafe_load(_getptr(x, f)) + f === :FontDefault && return unsafe_load(_getptr(x, f)) + f === :DisplayFramebufferScale && return _getptr(x, f) + f === :ConfigDockingNoSplit && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingWithShift && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingAlwaysTabBar && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingTransparentPayload && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoAutoMerge && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoTaskBarIcon && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDecoration && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDefaultParent && return unsafe_load(_getptr(x, f)) + f === :MouseDrawCursor && return unsafe_load(_getptr(x, f)) + f === :ConfigMacOSXBehaviors && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTrickleEventQueue && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextCursorBlink && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextEnterKeepActive && return unsafe_load(_getptr(x, f)) + f === :ConfigDragClickToInputText && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsResizeFromEdges && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsMoveFromTitleBarOnly && return unsafe_load(_getptr(x, f)) + f === :ConfigMemoryCompactTimer && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickTime && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickMaxDist && return unsafe_load(_getptr(x, f)) + f === :MouseDragThreshold && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatDelay && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatRate && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIsDebuggerPresent && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueOnce && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueLoop && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIgnoreFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIniSettings && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformName && return unsafe_load(_getptr(x, f)) + f === :BackendRendererName && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformUserData && return unsafe_load(_getptr(x, f)) + f === :BackendRendererUserData && return unsafe_load(_getptr(x, f)) + f === :BackendLanguageUserData && return unsafe_load(_getptr(x, f)) + f === :GetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :SetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :ClipboardUserData && return unsafe_load(_getptr(x, f)) + f === :SetPlatformImeDataFn && return unsafe_load(_getptr(x, f)) + f === :PlatformLocaleDecimalPoint && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouse && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboard && return unsafe_load(_getptr(x, f)) + f === :WantTextInput && return unsafe_load(_getptr(x, f)) + f === :WantSetMousePos && return unsafe_load(_getptr(x, f)) + f === :WantSaveIniSettings && return unsafe_load(_getptr(x, f)) + f === :NavActive && return unsafe_load(_getptr(x, f)) + f === :NavVisible && return unsafe_load(_getptr(x, f)) + f === :Framerate && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderVertices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderIndices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderWindows && return unsafe_load(_getptr(x, f)) + f === :MetricsActiveWindows && return unsafe_load(_getptr(x, f)) + f === :MouseDelta && return _getptr(x, f) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseDown && return _getptr(x, f) + f === :MouseWheel && return unsafe_load(_getptr(x, f)) + f === :MouseWheelH && return unsafe_load(_getptr(x, f)) + f === :MouseSource && return unsafe_load(_getptr(x, f)) + f === :MouseHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :KeyCtrl && return unsafe_load(_getptr(x, f)) + f === :KeyShift && return unsafe_load(_getptr(x, f)) + f === :KeyAlt && return unsafe_load(_getptr(x, f)) + f === :KeySuper && return unsafe_load(_getptr(x, f)) + f === :KeyMods && return unsafe_load(_getptr(x, f)) + f === :KeysData && return _getptr(x, f) + f === :WantCaptureMouseUnlessPopupClose && return unsafe_load(_getptr(x, f)) + f === :MousePosPrev && return _getptr(x, f) + f === :MouseClickedPos && return _getptr(x, f) + f === :MouseClickedTime && return _getptr(x, f) + f === :MouseClicked && return _getptr(x, f) + f === :MouseDoubleClicked && return _getptr(x, f) + f === :MouseClickedCount && return _getptr(x, f) + f === :MouseClickedLastCount && return _getptr(x, f) + f === :MouseReleased && return _getptr(x, f) + f === :MouseDownOwned && return _getptr(x, f) + f === :MouseDownOwnedUnlessPopupClose && return _getptr(x, f) + f === :MouseWheelRequestAxisSwap && return unsafe_load(_getptr(x, f)) + f === :MouseCtrlLeftAsRightClick && return unsafe_load(_getptr(x, f)) + f === :MouseDownDuration && return _getptr(x, f) + f === :MouseDownDurationPrev && return _getptr(x, f) + f === :MouseDragMaxDistanceAbs && return _getptr(x, f) + f === :MouseDragMaxDistanceSqr && return _getptr(x, f) + f === :PenPressure && return unsafe_load(_getptr(x, f)) + f === :AppFocusLost && return unsafe_load(_getptr(x, f)) + f === :AppAcceptingEvents && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyKeyArrays && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyNavInputArray && return unsafe_load(_getptr(x, f)) + f === :InputQueueSurrogate && return unsafe_load(_getptr(x, f)) + f === :InputQueueCharacters && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImGuiPlatformMonitor @@ -845,18 +1144,28 @@ struct ImGuiPlatformMonitor DpiScale::Cfloat PlatformHandle::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) f === :MainPos && return Ptr{ImVec2}(x + 0) f === :MainSize && return Ptr{ImVec2}(x + 8) f === :WorkPos && return Ptr{ImVec2}(x + 16) f === :WorkSize && return Ptr{ImVec2}(x + 24) f === :DpiScale && return Ptr{Cfloat}(x + 32) f === :PlatformHandle && return Ptr{Ptr{Cvoid}}(x + 36) + error("Unrecognized field of type `ImGuiPlatformMonitor`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) + f === :MainPos && return _getptr(x, f) + f === :MainSize && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformMonitor}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -899,7 +1208,7 @@ struct ImGuiPlatformIO Monitors::ImVector_ImGuiPlatformMonitor Viewports::ImVector_ImGuiViewportPtr end -function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Platform_CreateWindow && return Ptr{Ptr{Cvoid}}(x + 0) f === :Platform_DestroyWindow && return Ptr{Ptr{Cvoid}}(x + 4) f === :Platform_ShowWindow && return Ptr{Ptr{Cvoid}}(x + 8) @@ -925,11 +1234,40 @@ function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Renderer_SwapBuffers && return Ptr{Ptr{Cvoid}}(x + 88) f === :Monitors && return Ptr{ImVector_ImGuiPlatformMonitor}(x + 92) f === :Viewports && return Ptr{ImVector_ImGuiViewportPtr}(x + 104) + error("Unrecognized field of type `ImGuiPlatformIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) + f === :Platform_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_ShowWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowMinimized && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowTitle && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowAlpha && return unsafe_load(_getptr(x, f)) + f === :Platform_UpdateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowDpiScale && return unsafe_load(_getptr(x, f)) + f === :Platform_OnChangedViewport && return unsafe_load(_getptr(x, f)) + f === :Platform_CreateVkSurface && return unsafe_load(_getptr(x, f)) + f === :Renderer_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Renderer_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Monitors && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -999,7 +1337,7 @@ struct ImGuiStyle HoverFlagsForTooltipMouse::ImGuiHoveredFlags HoverFlagsForTooltipNav::ImGuiHoveredFlags end -function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyle}, f::Symbol) f === :Alpha && return Ptr{Cfloat}(x + 0) f === :DisabledAlpha && return Ptr{Cfloat}(x + 4) f === :WindowPadding && return Ptr{ImVec2}(x + 8) @@ -1053,11 +1391,68 @@ function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) f === :HoverDelayNormal && return Ptr{Cfloat}(x + 1128) f === :HoverFlagsForTooltipMouse && return Ptr{ImGuiHoveredFlags}(x + 1132) f === :HoverFlagsForTooltipNav && return Ptr{ImGuiHoveredFlags}(x + 1136) + error("Unrecognized field of type `ImGuiStyle`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) + f === :Alpha && return unsafe_load(_getptr(x, f)) + f === :DisabledAlpha && return unsafe_load(_getptr(x, f)) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :WindowMinSize && return _getptr(x, f) + f === :WindowTitleAlign && return _getptr(x, f) + f === :WindowMenuButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ChildRounding && return unsafe_load(_getptr(x, f)) + f === :ChildBorderSize && return unsafe_load(_getptr(x, f)) + f === :PopupRounding && return unsafe_load(_getptr(x, f)) + f === :PopupBorderSize && return unsafe_load(_getptr(x, f)) + f === :FramePadding && return _getptr(x, f) + f === :FrameRounding && return unsafe_load(_getptr(x, f)) + f === :FrameBorderSize && return unsafe_load(_getptr(x, f)) + f === :ItemSpacing && return _getptr(x, f) + f === :ItemInnerSpacing && return _getptr(x, f) + f === :CellPadding && return _getptr(x, f) + f === :TouchExtraPadding && return _getptr(x, f) + f === :IndentSpacing && return unsafe_load(_getptr(x, f)) + f === :ColumnsMinSpacing && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSize && return unsafe_load(_getptr(x, f)) + f === :ScrollbarRounding && return unsafe_load(_getptr(x, f)) + f === :GrabMinSize && return unsafe_load(_getptr(x, f)) + f === :GrabRounding && return unsafe_load(_getptr(x, f)) + f === :LogSliderDeadzone && return unsafe_load(_getptr(x, f)) + f === :TabRounding && return unsafe_load(_getptr(x, f)) + f === :TabBorderSize && return unsafe_load(_getptr(x, f)) + f === :TabMinWidthForCloseButton && return unsafe_load(_getptr(x, f)) + f === :TabBarBorderSize && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersAngle && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersTextAlign && return _getptr(x, f) + f === :ColorButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ButtonTextAlign && return _getptr(x, f) + f === :SelectableTextAlign && return _getptr(x, f) + f === :SeparatorTextBorderSize && return unsafe_load(_getptr(x, f)) + f === :SeparatorTextAlign && return _getptr(x, f) + f === :SeparatorTextPadding && return _getptr(x, f) + f === :DisplayWindowPadding && return _getptr(x, f) + f === :DisplaySafeAreaPadding && return _getptr(x, f) + f === :DockingSeparatorSize && return unsafe_load(_getptr(x, f)) + f === :MouseCursorScale && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLines && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLinesUseTex && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedFill && return unsafe_load(_getptr(x, f)) + f === :CurveTessellationTol && return unsafe_load(_getptr(x, f)) + f === :CircleTessellationMaxError && return unsafe_load(_getptr(x, f)) + f === :Colors && return _getptr(x, f) + f === :HoverStationaryDelay && return unsafe_load(_getptr(x, f)) + f === :HoverDelayShort && return unsafe_load(_getptr(x, f)) + f === :HoverDelayNormal && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipMouse && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipNav && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiStyle}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -1085,7 +1480,7 @@ struct ImGuiInputEvent data::NTuple{28, UInt8} end -function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) +function _getptr(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Type && return Ptr{ImGuiInputEventType}(x + 0) f === :Source && return Ptr{ImGuiInputSource}(x + 4) f === :EventId && return Ptr{ImU32}(x + 8) @@ -1097,6 +1492,21 @@ function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Text && return Ptr{ImGuiInputEventText}(x + 12) f === :AppFocused && return Ptr{ImGuiInputEventAppFocused}(x + 12) f === :AddedByTestEngine && return Ptr{Bool}(x + 24) + error("Unrecognized field of type `ImGuiInputEvent`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) + f === :Type && return unsafe_load(_getptr(x, f)) + f === :Source && return unsafe_load(_getptr(x, f)) + f === :EventId && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseWheel && return _getptr(x, f) + f === :MouseButton && return _getptr(x, f) + f === :MouseViewport && return _getptr(x, f) + f === :Key && return _getptr(x, f) + f === :Text && return _getptr(x, f) + f === :AppFocused && return _getptr(x, f) + f === :AddedByTestEngine && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1108,7 +1518,7 @@ function Base.getproperty(x::ImGuiInputEvent, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiInputEvent}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiInputEvent @@ -1216,11 +1626,19 @@ struct ImGuiStoragePair data::NTuple{8, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) +function _getptr(x::Ptr{ImGuiStoragePair}, f::Symbol) f === :key && return Ptr{ImGuiID}(x + 0) f === :val_i && return Ptr{Cint}(x + 4) f === :val_f && return Ptr{Cfloat}(x + 4) f === :val_p && return Ptr{Ptr{Cvoid}}(x + 4) + error("Unrecognized field of type `ImGuiStoragePair`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) + f === :key && return unsafe_load(_getptr(x, f)) + f === :val_i && return unsafe_load(_getptr(x, f)) + f === :val_f && return unsafe_load(_getptr(x, f)) + f === :val_p && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1232,7 +1650,7 @@ function Base.getproperty(x::ImGuiStoragePair, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStoragePair}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStoragePair @@ -1440,7 +1858,7 @@ struct ImGuiDockNode data::NTuple{172, UInt8} end -function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) +function _getptr(x::Ptr{ImGuiDockNode}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :SharedFlags && return Ptr{ImGuiDockNodeFlags}(x + 4) f === :LocalFlags && return Ptr{ImGuiDockNodeFlags}(x + 8) @@ -1483,6 +1901,52 @@ function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) f === :WantMouseMove && return (Ptr{Bool}(x + 168), 8, 1) f === :WantHiddenTabBarUpdate && return (Ptr{Bool}(x + 168), 9, 1) f === :WantHiddenTabBarToggle && return (Ptr{Bool}(x + 168), 10, 1) + error("Unrecognized field of type `ImGuiDockNode`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :SharedFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlagsInWindows && return unsafe_load(_getptr(x, f)) + f === :MergedFlags && return unsafe_load(_getptr(x, f)) + f === :State && return unsafe_load(_getptr(x, f)) + f === :ParentNode && return unsafe_load(_getptr(x, f)) + f === :ChildNodes && return _getptr(x, f) + f === :Windows && return _getptr(x, f) + f === :TabBar && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeRef && return _getptr(x, f) + f === :SplitAxis && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :LastBgColor && return unsafe_load(_getptr(x, f)) + f === :HostWindow && return unsafe_load(_getptr(x, f)) + f === :VisibleWindow && return unsafe_load(_getptr(x, f)) + f === :CentralNode && return unsafe_load(_getptr(x, f)) + f === :OnlyNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :CountNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :LastFrameAlive && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameFocused && return unsafe_load(_getptr(x, f)) + f === :LastFocusedNodeId && return unsafe_load(_getptr(x, f)) + f === :SelectedTabId && return unsafe_load(_getptr(x, f)) + f === :WantCloseTabId && return unsafe_load(_getptr(x, f)) + f === :RefViewportId && return unsafe_load(_getptr(x, f)) + f === :AuthorityForPos && return unsafe_load(_getptr(x, f)) + f === :AuthorityForSize && return unsafe_load(_getptr(x, f)) + f === :AuthorityForViewport && return unsafe_load(_getptr(x, f)) + f === :IsVisible && return unsafe_load(_getptr(x, f)) + f === :IsFocused && return unsafe_load(_getptr(x, f)) + f === :IsBgDrawnThisFrame && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :HasWindowMenuButton && return unsafe_load(_getptr(x, f)) + f === :HasCentralNodeChild && return unsafe_load(_getptr(x, f)) + f === :WantCloseAll && return unsafe_load(_getptr(x, f)) + f === :WantLockSizeOnce && return unsafe_load(_getptr(x, f)) + f === :WantMouseMove && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarUpdate && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarToggle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1510,7 +1974,7 @@ end function Base.setproperty!(x::Ptr{ImGuiDockNode}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1535,7 +1999,7 @@ struct ImGuiWindow data::NTuple{1008, UInt8} end -function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) +function _getptr(x::Ptr{ImGuiWindow}, f::Symbol) f === :Ctx && return Ptr{Ptr{ImGuiContext}}(x + 0) f === :Name && return Ptr{Ptr{Cchar}}(x + 4) f === :ID && return Ptr{ImGuiID}(x + 8) @@ -1660,6 +2124,134 @@ function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) f === :DockId && return Ptr{ImGuiID}(x + 984) f === :DockTabItemStatusFlags && return Ptr{ImGuiItemStatusFlags}(x + 988) f === :DockTabItemRect && return Ptr{ImRect}(x + 992) + error("Unrecognized field of type `ImGuiWindow`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :Name && return unsafe_load(_getptr(x, f)) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :FlagsPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ChildFlags && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :Viewport && return unsafe_load(_getptr(x, f)) + f === :ViewportId && return unsafe_load(_getptr(x, f)) + f === :ViewportPos && return _getptr(x, f) + f === :ViewportAllowPlatformMonitorExtend && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeFull && return _getptr(x, f) + f === :ContentSize && return _getptr(x, f) + f === :ContentSizeIdeal && return _getptr(x, f) + f === :ContentSizeExplicit && return _getptr(x, f) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :TitleBarHeight && return unsafe_load(_getptr(x, f)) + f === :MenuBarHeight && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX2 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY2 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeY1 && return unsafe_load(_getptr(x, f)) + f === :NameBufLen && return unsafe_load(_getptr(x, f)) + f === :MoveId && return unsafe_load(_getptr(x, f)) + f === :TabId && return unsafe_load(_getptr(x, f)) + f === :ChildId && return unsafe_load(_getptr(x, f)) + f === :PopupId && return unsafe_load(_getptr(x, f)) + f === :Scroll && return _getptr(x, f) + f === :ScrollMax && return _getptr(x, f) + f === :ScrollTarget && return _getptr(x, f) + f === :ScrollTargetCenterRatio && return _getptr(x, f) + f === :ScrollTargetEdgeSnapDist && return _getptr(x, f) + f === :ScrollbarSizes && return _getptr(x, f) + f === :ScrollbarX && return unsafe_load(_getptr(x, f)) + f === :ScrollbarY && return unsafe_load(_getptr(x, f)) + f === :ViewportOwned && return unsafe_load(_getptr(x, f)) + f === :Active && return unsafe_load(_getptr(x, f)) + f === :WasActive && return unsafe_load(_getptr(x, f)) + f === :WriteAccessed && return unsafe_load(_getptr(x, f)) + f === :Collapsed && return unsafe_load(_getptr(x, f)) + f === :WantCollapseToggle && return unsafe_load(_getptr(x, f)) + f === :SkipItems && return unsafe_load(_getptr(x, f)) + f === :SkipRefresh && return unsafe_load(_getptr(x, f)) + f === :Appearing && return unsafe_load(_getptr(x, f)) + f === :Hidden && return unsafe_load(_getptr(x, f)) + f === :IsFallbackWindow && return unsafe_load(_getptr(x, f)) + f === :IsExplicitChild && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHovered && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHeld && return unsafe_load(_getptr(x, f)) + f === :BeginCount && return unsafe_load(_getptr(x, f)) + f === :BeginCountPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinParent && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinContext && return unsafe_load(_getptr(x, f)) + f === :FocusOrder && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesX && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesY && return unsafe_load(_getptr(x, f)) + f === :AutoFitOnlyGrows && return unsafe_load(_getptr(x, f)) + f === :AutoPosLastDirection && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCanSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCannotSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesForRenderOnly && return unsafe_load(_getptr(x, f)) + f === :DisableInputsFrames && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowSizeAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowCollapsedAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowDockAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosVal && return _getptr(x, f) + f === :SetWindowPosPivot && return _getptr(x, f) + f === :IDStack && return _getptr(x, f) + f === :DC && return _getptr(x, f) + f === :OuterRectClipped && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :ParentWorkRect && return _getptr(x, f) + f === :ClipRect && return _getptr(x, f) + f === :ContentRegionRect && return _getptr(x, f) + f === :HitTestHoleSize && return _getptr(x, f) + f === :HitTestHoleOffset && return _getptr(x, f) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameJustFocused && return unsafe_load(_getptr(x, f)) + f === :LastTimeActive && return unsafe_load(_getptr(x, f)) + f === :ItemWidthDefault && return unsafe_load(_getptr(x, f)) + f === :StateStorage && return _getptr(x, f) + f === :ColumnsStorage && return _getptr(x, f) + f === :FontWindowScale && return unsafe_load(_getptr(x, f)) + f === :FontDpiScale && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :DrawList && return unsafe_load(_getptr(x, f)) + f === :DrawListInst && return _getptr(x, f) + f === :ParentWindow && return unsafe_load(_getptr(x, f)) + f === :ParentWindowInBeginStack && return unsafe_load(_getptr(x, f)) + f === :RootWindow && return unsafe_load(_getptr(x, f)) + f === :RootWindowPopupTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowDockTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowForTitleBarHighlight && return unsafe_load(_getptr(x, f)) + f === :RootWindowForNav && return unsafe_load(_getptr(x, f)) + f === :ParentWindowForFocusRoute && return unsafe_load(_getptr(x, f)) + f === :NavLastChildNavWindow && return unsafe_load(_getptr(x, f)) + f === :NavLastIds && return _getptr(x, f) + f === :NavRectRel && return _getptr(x, f) + f === :NavPreferredScoringPosRel && return _getptr(x, f) + f === :NavRootFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListIdxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListVtxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :DockIsActive && return unsafe_load(_getptr(x, f)) + f === :DockNodeIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabWantClose && return unsafe_load(_getptr(x, f)) + f === :DockOrder && return unsafe_load(_getptr(x, f)) + f === :DockStyle && return _getptr(x, f) + f === :DockNode && return unsafe_load(_getptr(x, f)) + f === :DockNodeAsHost && return unsafe_load(_getptr(x, f)) + f === :DockId && return unsafe_load(_getptr(x, f)) + f === :DockTabItemStatusFlags && return unsafe_load(_getptr(x, f)) + f === :DockTabItemRect && return _getptr(x, f) return getfield(x, f) end @@ -1687,7 +2279,7 @@ end function Base.setproperty!(x::Ptr{ImGuiWindow}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1855,10 +2447,17 @@ struct ImGuiStyleMod data::NTuple{12, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyleMod}, f::Symbol) f === :VarIdx && return Ptr{ImGuiStyleVar}(x + 0) f === :BackupInt && return Ptr{NTuple{2, Cint}}(x + 4) f === :BackupFloat && return Ptr{NTuple{2, Cfloat}}(x + 4) + error("Unrecognized field of type `ImGuiStyleMod`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) + f === :VarIdx && return unsafe_load(_getptr(x, f)) + f === :BackupInt && return _getptr(x, f) + f === :BackupFloat && return _getptr(x, f) return getfield(x, f) end @@ -1870,7 +2469,7 @@ function Base.getproperty(x::ImGuiStyleMod, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStyleMod}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStyleMod @@ -2245,7 +2844,7 @@ struct ImGuiTableColumn data::NTuple{112, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :Flags && return Ptr{ImGuiTableColumnFlags}(x + 0) f === :WidthGiven && return Ptr{Cfloat}(x + 4) f === :MinX && return Ptr{Cfloat}(x + 8) @@ -2287,6 +2886,51 @@ function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :SortDirectionsAvailCount && return (Ptr{ImU8}(x + 108), 10, 2) f === :SortDirectionsAvailMask && return (Ptr{ImU8}(x + 108), 12, 4) f === :SortDirectionsAvailList && return Ptr{ImU8}(x + 110) + error("Unrecognized field of type `ImGuiTableColumn`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :WidthGiven && return unsafe_load(_getptr(x, f)) + f === :MinX && return unsafe_load(_getptr(x, f)) + f === :MaxX && return unsafe_load(_getptr(x, f)) + f === :WidthRequest && return unsafe_load(_getptr(x, f)) + f === :WidthAuto && return unsafe_load(_getptr(x, f)) + f === :StretchWeight && return unsafe_load(_getptr(x, f)) + f === :InitStretchWeightOrWidth && return unsafe_load(_getptr(x, f)) + f === :ClipRect && return _getptr(x, f) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :WorkMinX && return unsafe_load(_getptr(x, f)) + f === :WorkMaxX && return unsafe_load(_getptr(x, f)) + f === :ItemWidth && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXFrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXUnfrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersUsed && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersIdeal && return unsafe_load(_getptr(x, f)) + f === :NameOffset && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IndexWithinEnabledSet && return unsafe_load(_getptr(x, f)) + f === :PrevEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :NextEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :DrawChannelFrozen && return unsafe_load(_getptr(x, f)) + f === :DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabledNextFrame && return unsafe_load(_getptr(x, f)) + f === :IsVisibleX && return unsafe_load(_getptr(x, f)) + f === :IsVisibleY && return unsafe_load(_getptr(x, f)) + f === :IsRequestOutput && return unsafe_load(_getptr(x, f)) + f === :IsSkipItems && return unsafe_load(_getptr(x, f)) + f === :IsPreserveWidthAuto && return unsafe_load(_getptr(x, f)) + f === :NavLayerCurrent && return unsafe_load(_getptr(x, f)) + f === :AutoFitQueue && return unsafe_load(_getptr(x, f)) + f === :CannotSkipItemsQueue && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailCount && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailMask && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailList && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2314,7 +2958,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumn}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2401,7 +3045,7 @@ struct ImGuiTable data::NTuple{512, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) +function _getptr(x::Ptr{ImGuiTable}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiTableFlags}(x + 4) f === :RawData && return Ptr{Ptr{Cvoid}}(x + 8) @@ -2514,6 +3158,122 @@ function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) f === :HasScrollbarYPrev && return Ptr{Bool}(x + 507) f === :MemoryCompacted && return Ptr{Bool}(x + 508) f === :HostSkipItems && return Ptr{Bool}(x + 509) + error("Unrecognized field of type `ImGuiTable`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :RawData && return unsafe_load(_getptr(x, f)) + f === :TempData && return unsafe_load(_getptr(x, f)) + f === :Columns && return _getptr(x, f) + f === :DisplayOrderToIndex && return _getptr(x, f) + f === :RowCellData && return _getptr(x, f) + f === :EnabledMaskByDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :EnabledMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :VisibleMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :SettingsLoadedFlags && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :ColumnsCount && return unsafe_load(_getptr(x, f)) + f === :CurrentRow && return unsafe_load(_getptr(x, f)) + f === :CurrentColumn && return unsafe_load(_getptr(x, f)) + f === :InstanceCurrent && return unsafe_load(_getptr(x, f)) + f === :InstanceInteracted && return unsafe_load(_getptr(x, f)) + f === :RowPosY1 && return unsafe_load(_getptr(x, f)) + f === :RowPosY2 && return unsafe_load(_getptr(x, f)) + f === :RowMinHeight && return unsafe_load(_getptr(x, f)) + f === :RowCellPaddingY && return unsafe_load(_getptr(x, f)) + f === :RowTextBaseline && return unsafe_load(_getptr(x, f)) + f === :RowIndentOffsetX && return unsafe_load(_getptr(x, f)) + f === :RowFlags && return unsafe_load(_getptr(x, f)) + f === :LastRowFlags && return unsafe_load(_getptr(x, f)) + f === :RowBgColorCounter && return unsafe_load(_getptr(x, f)) + f === :RowBgColor && return _getptr(x, f) + f === :BorderColorStrong && return unsafe_load(_getptr(x, f)) + f === :BorderColorLight && return unsafe_load(_getptr(x, f)) + f === :BorderX1 && return unsafe_load(_getptr(x, f)) + f === :BorderX2 && return unsafe_load(_getptr(x, f)) + f === :HostIndentX && return unsafe_load(_getptr(x, f)) + f === :MinColumnWidth && return unsafe_load(_getptr(x, f)) + f === :OuterPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX1 && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX2 && return unsafe_load(_getptr(x, f)) + f === :InnerWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsGivenWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsAutoFitWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsStretchSumWeights && return unsafe_load(_getptr(x, f)) + f === :ResizedColumnNextWidth && return unsafe_load(_getptr(x, f)) + f === :ResizeLockMinContentsX2 && return unsafe_load(_getptr(x, f)) + f === :RefScale && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersHeight && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersSlope && return unsafe_load(_getptr(x, f)) + f === :OuterRect && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :BgClipRect && return _getptr(x, f) + f === :Bg0ClipRectForDrawCmd && return _getptr(x, f) + f === :Bg2ClipRectForDrawCmd && return _getptr(x, f) + f === :HostClipRect && return _getptr(x, f) + f === :HostBackupInnerClipRect && return _getptr(x, f) + f === :OuterWindow && return unsafe_load(_getptr(x, f)) + f === :InnerWindow && return unsafe_load(_getptr(x, f)) + f === :ColumnsNames && return _getptr(x, f) + f === :DrawSplitter && return unsafe_load(_getptr(x, f)) + f === :InstanceDataFirst && return _getptr(x, f) + f === :InstanceDataExtra && return _getptr(x, f) + f === :SortSpecsSingle && return _getptr(x, f) + f === :SortSpecsMulti && return _getptr(x, f) + f === :SortSpecs && return _getptr(x, f) + f === :SortSpecsCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledFixedCount && return unsafe_load(_getptr(x, f)) + f === :DeclColumnsCount && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersCount && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBody && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBorder && return unsafe_load(_getptr(x, f)) + f === :HighlightColumnHeader && return unsafe_load(_getptr(x, f)) + f === :AutoFitSingleColumn && return unsafe_load(_getptr(x, f)) + f === :ResizedColumn && return unsafe_load(_getptr(x, f)) + f === :LastResizedColumn && return unsafe_load(_getptr(x, f)) + f === :HeldHeaderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumnDir && return unsafe_load(_getptr(x, f)) + f === :LeftMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :LeftMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :ContextPopupColumn && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsCount && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsCount && return unsafe_load(_getptr(x, f)) + f === :RowCellDataCurrent && return unsafe_load(_getptr(x, f)) + f === :DummyDrawChannel && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsLayoutLocked && return unsafe_load(_getptr(x, f)) + f === :IsInsideRow && return unsafe_load(_getptr(x, f)) + f === :IsInitializing && return unsafe_load(_getptr(x, f)) + f === :IsSortSpecsDirty && return unsafe_load(_getptr(x, f)) + f === :IsUsingHeaders && return unsafe_load(_getptr(x, f)) + f === :IsContextPopupOpen && return unsafe_load(_getptr(x, f)) + f === :DisableDefaultContextMenu && return unsafe_load(_getptr(x, f)) + f === :IsSettingsRequestLoad && return unsafe_load(_getptr(x, f)) + f === :IsSettingsDirty && return unsafe_load(_getptr(x, f)) + f === :IsDefaultDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IsResetAllRequest && return unsafe_load(_getptr(x, f)) + f === :IsResetDisplayOrderRequest && return unsafe_load(_getptr(x, f)) + f === :IsUnfrozenRows && return unsafe_load(_getptr(x, f)) + f === :IsDefaultSizingPolicy && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdAliveBeforeTable && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdInTable && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYCurr && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYPrev && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :HostSkipItems && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2541,7 +3301,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTable}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2846,12 +3606,21 @@ struct ImGuiStackLevelInfo data::NTuple{72, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) +function _getptr(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :QueryFrameCount && return Ptr{ImS8}(x + 4) f === :QuerySuccess && return Ptr{Bool}(x + 5) f === :DataType && return (Ptr{ImGuiDataType}(x + 8), 0, 8) f === :Desc && return Ptr{NTuple{57, Cchar}}(x + 12) + error("Unrecognized field of type `ImGuiStackLevelInfo`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :QueryFrameCount && return unsafe_load(_getptr(x, f)) + f === :QuerySuccess && return unsafe_load(_getptr(x, f)) + f === :DataType && return unsafe_load(_getptr(x, f)) + f === :Desc && return _getptr(x, f) return getfield(x, f) end @@ -2879,7 +3648,7 @@ end function Base.setproperty!(x::Ptr{ImGuiStackLevelInfo}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2930,7 +3699,7 @@ struct ImGuiContext data::NTuple{13536, UInt8} end -function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) +function _getptr(x::Ptr{ImGuiContext}, f::Symbol) f === :Initialized && return Ptr{Bool}(x + 0) f === :FontAtlasOwnedByContext && return Ptr{Bool}(x + 1) f === :IO && return Ptr{ImGuiIO}(x + 8) @@ -3221,6 +3990,300 @@ function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) f === :WantTextInputNextFrame && return Ptr{Cint}(x + 13452) f === :TempBuffer && return Ptr{ImVector_char}(x + 13456) f === :TempKeychordName && return Ptr{NTuple{64, Cchar}}(x + 13468) + error("Unrecognized field of type `ImGuiContext`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) + f === :Initialized && return unsafe_load(_getptr(x, f)) + f === :FontAtlasOwnedByContext && return unsafe_load(_getptr(x, f)) + f === :IO && return _getptr(x, f) + f === :PlatformIO && return _getptr(x, f) + f === :Style && return _getptr(x, f) + f === :ConfigFlagsCurrFrame && return unsafe_load(_getptr(x, f)) + f === :ConfigFlagsLastFrame && return unsafe_load(_getptr(x, f)) + f === :Font && return unsafe_load(_getptr(x, f)) + f === :FontSize && return unsafe_load(_getptr(x, f)) + f === :FontBaseSize && return unsafe_load(_getptr(x, f)) + f === :CurrentDpiScale && return unsafe_load(_getptr(x, f)) + f === :DrawListSharedData && return _getptr(x, f) + f === :Time && return unsafe_load(_getptr(x, f)) + f === :FrameCount && return unsafe_load(_getptr(x, f)) + f === :FrameCountEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountPlatformEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountRendered && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScope && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScopeWithImplicitWindow && return unsafe_load(_getptr(x, f)) + f === :WithinEndChild && return unsafe_load(_getptr(x, f)) + f === :GcCompactAll && return unsafe_load(_getptr(x, f)) + f === :TestEngineHookItems && return unsafe_load(_getptr(x, f)) + f === :TestEngine && return unsafe_load(_getptr(x, f)) + f === :InputEventsQueue && return _getptr(x, f) + f === :InputEventsTrail && return _getptr(x, f) + f === :InputEventsNextMouseSource && return unsafe_load(_getptr(x, f)) + f === :InputEventsNextEventId && return unsafe_load(_getptr(x, f)) + f === :Windows && return _getptr(x, f) + f === :WindowsFocusOrder && return _getptr(x, f) + f === :WindowsTempSortBuffer && return _getptr(x, f) + f === :CurrentWindowStack && return _getptr(x, f) + f === :WindowsById && return _getptr(x, f) + f === :WindowsActiveCount && return unsafe_load(_getptr(x, f)) + f === :WindowsHoverPadding && return _getptr(x, f) + f === :DebugBreakInWindow && return unsafe_load(_getptr(x, f)) + f === :CurrentWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindowUnderMovingWindow && return unsafe_load(_getptr(x, f)) + f === :MovingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowRefMousePos && return _getptr(x, f) + f === :WheelingWindowStartFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowScrolledFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowReleaseTimer && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowWheelRemainder && return _getptr(x, f) + f === :WheelingAxisAvg && return _getptr(x, f) + f === :DebugHookIdInfo && return unsafe_load(_getptr(x, f)) + f === :HoveredId && return unsafe_load(_getptr(x, f)) + f === :HoveredIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoveredIdTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdNotActiveTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :HoveredIdDisabled && return unsafe_load(_getptr(x, f)) + f === :ItemUnclipByLog && return unsafe_load(_getptr(x, f)) + f === :ActiveId && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsJustActivated && return unsafe_load(_getptr(x, f)) + f === :ActiveIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :ActiveIdNoClearOnFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenPressedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedThisFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdFromShortcut && return unsafe_load(_getptr(x, f)) + f === :ActiveIdMouseButton && return unsafe_load(_getptr(x, f)) + f === :ActiveIdClickOffset && return _getptr(x, f) + f === :ActiveIdWindow && return unsafe_load(_getptr(x, f)) + f === :ActiveIdSource && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameWindow && return unsafe_load(_getptr(x, f)) + f === :LastActiveId && return unsafe_load(_getptr(x, f)) + f === :LastActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeFromNoneTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyboardKeyPressTime && return unsafe_load(_getptr(x, f)) + f === :KeysMayBeCharInput && return _getptr(x, f) + f === :KeysOwnerData && return _getptr(x, f) + f === :KeysRoutingTable && return _getptr(x, f) + f === :ActiveIdUsingNavDirMask && return unsafe_load(_getptr(x, f)) + f === :ActiveIdUsingAllKeyboardKeys && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInShortcutRouting && return unsafe_load(_getptr(x, f)) + f === :CurrentFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :CurrentItemFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLocateId && return unsafe_load(_getptr(x, f)) + f === :NextItemData && return _getptr(x, f) + f === :LastItemData && return _getptr(x, f) + f === :NextWindowData && return _getptr(x, f) + f === :DebugShowGroupRects && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorIdx && return unsafe_load(_getptr(x, f)) + f === :ColorStack && return _getptr(x, f) + f === :StyleVarStack && return _getptr(x, f) + f === :FontStack && return _getptr(x, f) + f === :FocusScopeStack && return _getptr(x, f) + f === :ItemFlagsStack && return _getptr(x, f) + f === :GroupStack && return _getptr(x, f) + f === :OpenPopupStack && return _getptr(x, f) + f === :BeginPopupStack && return _getptr(x, f) + f === :NavTreeNodeStack && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) + f === :CurrentViewport && return unsafe_load(_getptr(x, f)) + f === :MouseViewport && return unsafe_load(_getptr(x, f)) + f === :MouseLastHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :PlatformLastFocusedViewportId && return unsafe_load(_getptr(x, f)) + f === :FallbackMonitor && return _getptr(x, f) + f === :PlatformMonitorsFullWorkRect && return _getptr(x, f) + f === :ViewportCreatedCount && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowsCreatedCount && return unsafe_load(_getptr(x, f)) + f === :ViewportFocusedStampCount && return unsafe_load(_getptr(x, f)) + f === :NavWindow && return unsafe_load(_getptr(x, f)) + f === :NavId && return unsafe_load(_getptr(x, f)) + f === :NavFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavActivateId && return unsafe_load(_getptr(x, f)) + f === :NavActivateDownId && return unsafe_load(_getptr(x, f)) + f === :NavActivatePressedId && return unsafe_load(_getptr(x, f)) + f === :NavActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavFocusRoute && return _getptr(x, f) + f === :NavHighlightActivatedId && return unsafe_load(_getptr(x, f)) + f === :NavHighlightActivatedTimer && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateId && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavInputSource && return unsafe_load(_getptr(x, f)) + f === :NavLayer && return unsafe_load(_getptr(x, f)) + f === :NavLastValidSelectionUserData && return unsafe_load(_getptr(x, f)) + f === :NavIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :NavMousePosDirty && return unsafe_load(_getptr(x, f)) + f === :NavDisableHighlight && return unsafe_load(_getptr(x, f)) + f === :NavDisableMouseHover && return unsafe_load(_getptr(x, f)) + f === :NavAnyRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequestFromMove && return unsafe_load(_getptr(x, f)) + f === :NavInitResult && return _getptr(x, f) + f === :NavMoveSubmitted && return unsafe_load(_getptr(x, f)) + f === :NavMoveScoringItems && return unsafe_load(_getptr(x, f)) + f === :NavMoveForwardToNextFrame && return unsafe_load(_getptr(x, f)) + f === :NavMoveFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveScrollFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavMoveDir && return unsafe_load(_getptr(x, f)) + f === :NavMoveDirForDebug && return unsafe_load(_getptr(x, f)) + f === :NavMoveClipDir && return unsafe_load(_getptr(x, f)) + f === :NavScoringRect && return _getptr(x, f) + f === :NavScoringNoClipRect && return _getptr(x, f) + f === :NavScoringDebugCount && return unsafe_load(_getptr(x, f)) + f === :NavTabbingDir && return unsafe_load(_getptr(x, f)) + f === :NavTabbingCounter && return unsafe_load(_getptr(x, f)) + f === :NavMoveResultLocal && return _getptr(x, f) + f === :NavMoveResultLocalVisible && return _getptr(x, f) + f === :NavMoveResultOther && return _getptr(x, f) + f === :NavTabbingResultFirst && return _getptr(x, f) + f === :ConfigNavWindowingKeyNext && return unsafe_load(_getptr(x, f)) + f === :ConfigNavWindowingKeyPrev && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTarget && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTargetAnim && return unsafe_load(_getptr(x, f)) + f === :NavWindowingListWindow && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTimer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingHighlightAlpha && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleLayer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleKey && return unsafe_load(_getptr(x, f)) + f === :NavWindowingAccumDeltaPos && return _getptr(x, f) + f === :NavWindowingAccumDeltaSize && return _getptr(x, f) + f === :DimBgRatio && return unsafe_load(_getptr(x, f)) + f === :DragDropActive && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinSource && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinTarget && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropMouseButton && return unsafe_load(_getptr(x, f)) + f === :DragDropPayload && return _getptr(x, f) + f === :DragDropTargetRect && return _getptr(x, f) + f === :DragDropTargetClipRect && return _getptr(x, f) + f === :DragDropTargetId && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurrRectSurface && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurr && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdPrev && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropHoldJustPressedId && return unsafe_load(_getptr(x, f)) + f === :DragDropPayloadBufHeap && return _getptr(x, f) + f === :DragDropPayloadBufLocal && return _getptr(x, f) + f === :ClipperTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :ClipperTempData && return _getptr(x, f) + f === :CurrentTable && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInTable && return unsafe_load(_getptr(x, f)) + f === :TablesTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :TablesTempData && return _getptr(x, f) + f === :Tables && return _getptr(x, f) + f === :TablesLastTimeActive && return _getptr(x, f) + f === :DrawChannelsTempMergeBuffer && return _getptr(x, f) + f === :CurrentTabBar && return unsafe_load(_getptr(x, f)) + f === :TabBars && return _getptr(x, f) + f === :CurrentTabBarStack && return _getptr(x, f) + f === :ShrinkWidthBuffer && return _getptr(x, f) + f === :HoverItemDelayId && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayClearTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :HoverWindowUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :MouseCursor && return unsafe_load(_getptr(x, f)) + f === :MouseStationaryTimer && return unsafe_load(_getptr(x, f)) + f === :MouseLastValidPos && return _getptr(x, f) + f === :InputTextState && return _getptr(x, f) + f === :InputTextDeactivatedState && return _getptr(x, f) + f === :InputTextPasswordFont && return _getptr(x, f) + f === :TempInputId && return unsafe_load(_getptr(x, f)) + f === :DataTypeZeroValue && return _getptr(x, f) + f === :BeginMenuDepth && return unsafe_load(_getptr(x, f)) + f === :BeginComboDepth && return unsafe_load(_getptr(x, f)) + f === :ColorEditOptions && return unsafe_load(_getptr(x, f)) + f === :ColorEditCurrentID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedHue && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedSat && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedColor && return unsafe_load(_getptr(x, f)) + f === :ColorPickerRef && return _getptr(x, f) + f === :ComboPreviewData && return _getptr(x, f) + f === :WindowResizeBorderExpectedRect && return _getptr(x, f) + f === :WindowResizeRelativeMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSeekMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarClickDeltaToGrabCenter && return unsafe_load(_getptr(x, f)) + f === :SliderGrabClickOffset && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :DragSpeedDefaultRatio && return unsafe_load(_getptr(x, f)) + f === :DisabledAlphaBackup && return unsafe_load(_getptr(x, f)) + f === :DisabledStackSize && return unsafe_load(_getptr(x, f)) + f === :LockMarkEdited && return unsafe_load(_getptr(x, f)) + f === :TooltipOverrideCount && return unsafe_load(_getptr(x, f)) + f === :ClipboardHandlerData && return _getptr(x, f) + f === :MenusIdSubmittedThisFrame && return _getptr(x, f) + f === :TypingSelectState && return _getptr(x, f) + f === :PlatformImeData && return _getptr(x, f) + f === :PlatformImeDataPrev && return _getptr(x, f) + f === :PlatformImeViewport && return unsafe_load(_getptr(x, f)) + f === :DockContext && return _getptr(x, f) + f === :DockNodeWindowMenuHandler && return unsafe_load(_getptr(x, f)) + f === :SettingsLoaded && return unsafe_load(_getptr(x, f)) + f === :SettingsDirtyTimer && return unsafe_load(_getptr(x, f)) + f === :SettingsIniData && return _getptr(x, f) + f === :SettingsHandlers && return _getptr(x, f) + f === :SettingsWindows && return _getptr(x, f) + f === :SettingsTables && return _getptr(x, f) + f === :Hooks && return _getptr(x, f) + f === :HookIdNext && return unsafe_load(_getptr(x, f)) + f === :LocalizationTable && return _getptr(x, f) + f === :LogEnabled && return unsafe_load(_getptr(x, f)) + f === :LogType && return unsafe_load(_getptr(x, f)) + f === :LogFile && return unsafe_load(_getptr(x, f)) + f === :LogBuffer && return _getptr(x, f) + f === :LogNextPrefix && return unsafe_load(_getptr(x, f)) + f === :LogNextSuffix && return unsafe_load(_getptr(x, f)) + f === :LogLinePosY && return unsafe_load(_getptr(x, f)) + f === :LogLineFirstItem && return unsafe_load(_getptr(x, f)) + f === :LogDepthRef && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpand && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpandDefault && return unsafe_load(_getptr(x, f)) + f === :DebugLogFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogBuf && return _getptr(x, f) + f === :DebugLogIndex && return _getptr(x, f) + f === :DebugLogAutoDisableFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogAutoDisableFrames && return unsafe_load(_getptr(x, f)) + f === :DebugLocateFrames && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInLocateId && return unsafe_load(_getptr(x, f)) + f === :DebugBreakKeyChord && return unsafe_load(_getptr(x, f)) + f === :DebugBeginReturnValueCullDepth && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerActive && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerMouseButton && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerBreakId && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorTime && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorBackup && return _getptr(x, f) + f === :DebugMetricsConfig && return _getptr(x, f) + f === :DebugIDStackTool && return _getptr(x, f) + f === :DebugAllocInfo && return _getptr(x, f) + f === :DebugHoveredDockNode && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrame && return _getptr(x, f) + f === :FramerateSecPerFrameIdx && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameCount && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameAccum && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouseNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboardNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantTextInputNextFrame && return unsafe_load(_getptr(x, f)) + f === :TempBuffer && return _getptr(x, f) + f === :TempKeychordName && return _getptr(x, f) return getfield(x, f) end @@ -3248,7 +4311,7 @@ end function Base.setproperty!(x::Ptr{ImGuiContext}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -3293,16 +4356,24 @@ struct ImGuiSizeCallbackData CurrentSize::ImVec2 DesiredSize::ImVec2 end -function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) +function _getptr(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) f === :UserData && return Ptr{Ptr{Cvoid}}(x + 0) f === :Pos && return Ptr{ImVec2}(x + 4) f === :CurrentSize && return Ptr{ImVec2}(x + 12) f === :DesiredSize && return Ptr{ImVec2}(x + 20) + error("Unrecognized field of type `ImGuiSizeCallbackData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :CurrentSize && return _getptr(x, f) + f === :DesiredSize && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiSizeCallbackData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -4395,7 +5466,7 @@ struct ImGuiTableColumnSettings data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :WidthOrWeight && return Ptr{Cfloat}(x + 0) f === :UserID && return Ptr{ImGuiID}(x + 4) f === :Index && return Ptr{ImGuiTableColumnIdx}(x + 8) @@ -4404,6 +5475,18 @@ function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :SortDirection && return (Ptr{ImU8}(x + 12), 16, 2) f === :IsEnabled && return (Ptr{ImU8}(x + 12), 18, 1) f === :IsStretch && return (Ptr{ImU8}(x + 12), 19, 1) + error("Unrecognized field of type `ImGuiTableColumnSettings`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) + f === :WidthOrWeight && return unsafe_load(_getptr(x, f)) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :Index && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsStretch && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -4431,7 +5514,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumnSettings}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) diff --git a/lib/powerpc64le-linux-gnu.jl b/lib/powerpc64le-linux-gnu.jl index 34deedc..45789fc 100644 --- a/lib/powerpc64le-linux-gnu.jl +++ b/lib/powerpc64le-linux-gnu.jl @@ -1,4 +1,4 @@ -using CEnum +using CEnum: CEnum, @cenum to_c_type(t::Type) = t to_c_type_pairs(va_list) = map(enumerate(to_c_type.(va_list))) do (ind, type) @@ -32,16 +32,24 @@ struct ImVec4 z::Cfloat w::Cfloat end -function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) +function _getptr(x::Ptr{ImVec4}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) f === :z && return Ptr{Cfloat}(x + 8) f === :w && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImVec4`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) + f === :z && return unsafe_load(_getptr(x, f)) + f === :w && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec4}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -56,7 +64,7 @@ struct ImDrawCmd UserCallback::ImDrawCallback UserCallbackData::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) +function _getptr(x::Ptr{ImDrawCmd}, f::Symbol) f === :ClipRect && return Ptr{ImVec4}(x + 0) f === :TextureId && return Ptr{ImTextureID}(x + 16) f === :VtxOffset && return Ptr{Cuint}(x + 24) @@ -64,11 +72,22 @@ function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) f === :ElemCount && return Ptr{Cuint}(x + 32) f === :UserCallback && return Ptr{ImDrawCallback}(x + 40) f === :UserCallbackData && return Ptr{Ptr{Cvoid}}(x + 48) + error("Unrecognized field of type `ImDrawCmd`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) + f === :ClipRect && return _getptr(x, f) + f === :TextureId && return unsafe_load(_getptr(x, f)) + f === :VtxOffset && return unsafe_load(_getptr(x, f)) + f === :IdxOffset && return unsafe_load(_getptr(x, f)) + f === :ElemCount && return unsafe_load(_getptr(x, f)) + f === :UserCallback && return unsafe_load(_getptr(x, f)) + f === :UserCallbackData && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawCmd}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -95,14 +114,20 @@ struct ImVec2 x::Cfloat y::Cfloat end -function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) +function _getptr(x::Ptr{ImVec2}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) + error("Unrecognized field of type `ImVec2`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec2}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -119,6 +144,24 @@ struct ImVector_ImDrawVert Capacity::Cint Data::Ptr{ImDrawVert} end +function _getptr(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return Ptr{Cint}(x + 0) + f === :Capacity && return Ptr{Cint}(x + 4) + f === :Data && return Ptr{Ptr{ImDrawVert}}(x + 8) + error("Unrecognized field of type `ImVector_ImDrawVert`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return unsafe_load(_getptr(x, f)) + f === :Capacity && return unsafe_load(_getptr(x, f)) + f === :Data && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImVector_ImDrawVert}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImDrawListFlags = Cint @@ -142,7 +185,7 @@ struct ImFontGlyph data::NTuple{40, UInt8} end -function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) +function _getptr(x::Ptr{ImFontGlyph}, f::Symbol) f === :Colored && return (Ptr{Cuint}(x + 0), 0, 1) f === :Visible && return (Ptr{Cuint}(x + 0), 1, 1) f === :Codepoint && return (Ptr{Cuint}(x + 0), 2, 30) @@ -155,6 +198,22 @@ function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) f === :V0 && return Ptr{Cfloat}(x + 28) f === :U1 && return Ptr{Cfloat}(x + 32) f === :V1 && return Ptr{Cfloat}(x + 36) + error("Unrecognized field of type `ImFontGlyph`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) + f === :Colored && return unsafe_load(_getptr(x, f)) + f === :Visible && return unsafe_load(_getptr(x, f)) + f === :Codepoint && return unsafe_load(_getptr(x, f)) + f === :AdvanceX && return unsafe_load(_getptr(x, f)) + f === :X0 && return unsafe_load(_getptr(x, f)) + f === :Y0 && return unsafe_load(_getptr(x, f)) + f === :X1 && return unsafe_load(_getptr(x, f)) + f === :Y1 && return unsafe_load(_getptr(x, f)) + f === :U0 && return unsafe_load(_getptr(x, f)) + f === :V0 && return unsafe_load(_getptr(x, f)) + f === :U1 && return unsafe_load(_getptr(x, f)) + f === :V1 && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -182,7 +241,7 @@ end function Base.setproperty!(x::Ptr{ImFontGlyph}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -270,7 +329,7 @@ function Base.getproperty(x::ImFontConfig, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) +function _getptr(x::Ptr{ImFontConfig}, f::Symbol) f === :FontData && return Ptr{Ptr{Cvoid}}(x + 0) f === :FontDataSize && return Ptr{Cint}(x + 8) f === :FontDataOwnedByAtlas && return Ptr{Bool}(x + 12) @@ -291,11 +350,35 @@ function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) f === :EllipsisChar && return Ptr{ImWchar}(x + 88) f === :Name && return Ptr{NTuple{40, Cchar}}(x + 90) f === :DstFont && return Ptr{Ptr{ImFont}}(x + 136) + error("Unrecognized field of type `ImFontConfig`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) + f === :FontData && return unsafe_load(_getptr(x, f)) + f === :FontDataSize && return unsafe_load(_getptr(x, f)) + f === :FontDataOwnedByAtlas && return unsafe_load(_getptr(x, f)) + f === :FontNo && return unsafe_load(_getptr(x, f)) + f === :SizePixels && return unsafe_load(_getptr(x, f)) + f === :OversampleH && return unsafe_load(_getptr(x, f)) + f === :OversampleV && return unsafe_load(_getptr(x, f)) + f === :PixelSnapH && return unsafe_load(_getptr(x, f)) + f === :GlyphExtraSpacing && return _getptr(x, f) + f === :GlyphOffset && return _getptr(x, f) + f === :GlyphRanges && return unsafe_load(_getptr(x, f)) + f === :GlyphMinAdvanceX && return unsafe_load(_getptr(x, f)) + f === :GlyphMaxAdvanceX && return unsafe_load(_getptr(x, f)) + f === :MergeMode && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :RasterizerMultiply && return unsafe_load(_getptr(x, f)) + f === :RasterizerDensity && return unsafe_load(_getptr(x, f)) + f === :EllipsisChar && return unsafe_load(_getptr(x, f)) + f === :Name && return _getptr(x, f) + f === :DstFont && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontConfig}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImFontConfig @@ -332,7 +415,7 @@ struct ImFontAtlas PackIdMouseCursors::Cint PackIdLines::Cint end -function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) +function _getptr(x::Ptr{ImFontAtlas}, f::Symbol) f === :Flags && return Ptr{ImFontAtlasFlags}(x + 0) f === :TexID && return Ptr{ImTextureID}(x + 8) f === :TexDesiredWidth && return Ptr{Cint}(x + 16) @@ -355,11 +438,37 @@ function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) f === :FontBuilderFlags && return Ptr{Cuint}(x + 1168) f === :PackIdMouseCursors && return Ptr{Cint}(x + 1172) f === :PackIdLines && return Ptr{Cint}(x + 1176) + error("Unrecognized field of type `ImFontAtlas`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :TexID && return unsafe_load(_getptr(x, f)) + f === :TexDesiredWidth && return unsafe_load(_getptr(x, f)) + f === :TexGlyphPadding && return unsafe_load(_getptr(x, f)) + f === :Locked && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :TexReady && return unsafe_load(_getptr(x, f)) + f === :TexPixelsUseColors && return unsafe_load(_getptr(x, f)) + f === :TexPixelsAlpha8 && return unsafe_load(_getptr(x, f)) + f === :TexPixelsRGBA32 && return unsafe_load(_getptr(x, f)) + f === :TexWidth && return unsafe_load(_getptr(x, f)) + f === :TexHeight && return unsafe_load(_getptr(x, f)) + f === :TexUvScale && return _getptr(x, f) + f === :TexUvWhitePixel && return _getptr(x, f) + f === :Fonts && return _getptr(x, f) + f === :CustomRects && return _getptr(x, f) + f === :ConfigData && return _getptr(x, f) + f === :TexUvLines && return _getptr(x, f) + f === :FontBuilderIO && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :PackIdMouseCursors && return unsafe_load(_getptr(x, f)) + f === :PackIdLines && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontAtlas}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -456,7 +565,7 @@ struct ImDrawList _FringeScale::Cfloat _OwnerName::Ptr{Cchar} end -function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) +function _getptr(x::Ptr{ImDrawList}, f::Symbol) f === :CmdBuffer && return Ptr{ImVector_ImDrawCmd}(x + 0) f === :IdxBuffer && return Ptr{ImVector_ImDrawIdx}(x + 16) f === :VtxBuffer && return Ptr{ImVector_ImDrawVert}(x + 32) @@ -472,11 +581,30 @@ function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) f === :_TextureIdStack && return Ptr{ImVector_ImTextureID}(x + 168) f === :_FringeScale && return Ptr{Cfloat}(x + 184) f === :_OwnerName && return Ptr{Ptr{Cchar}}(x + 192) + error("Unrecognized field of type `ImDrawList`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) + f === :CmdBuffer && return _getptr(x, f) + f === :IdxBuffer && return _getptr(x, f) + f === :VtxBuffer && return _getptr(x, f) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :_VtxCurrentIdx && return unsafe_load(_getptr(x, f)) + f === :_Data && return unsafe_load(_getptr(x, f)) + f === :_VtxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_IdxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_Path && return _getptr(x, f) + f === :_CmdHeader && return _getptr(x, f) + f === :_Splitter && return _getptr(x, f) + f === :_ClipRectStack && return _getptr(x, f) + f === :_TextureIdStack && return _getptr(x, f) + f === :_FringeScale && return unsafe_load(_getptr(x, f)) + f === :_OwnerName && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawList}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -515,7 +643,7 @@ function Base.getproperty(x::ImGuiViewport, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) +function _getptr(x::Ptr{ImGuiViewport}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiViewportFlags}(x + 4) f === :Pos && return Ptr{ImVec2}(x + 8) @@ -533,11 +661,32 @@ function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) f === :PlatformRequestMove && return Ptr{Bool}(x + 89) f === :PlatformRequestResize && return Ptr{Bool}(x + 90) f === :PlatformRequestClose && return Ptr{Bool}(x + 91) + error("Unrecognized field of type `ImGuiViewport`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :ParentViewportId && return unsafe_load(_getptr(x, f)) + f === :DrawData && return unsafe_load(_getptr(x, f)) + f === :RendererUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) + f === :PlatformHandleRaw && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowCreated && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestMove && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestResize && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestClose && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiViewport}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImDrawData @@ -551,7 +700,7 @@ struct ImDrawData FramebufferScale::ImVec2 OwnerViewport::Ptr{ImGuiViewport} end -function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) +function _getptr(x::Ptr{ImDrawData}, f::Symbol) f === :Valid && return Ptr{Bool}(x + 0) f === :CmdListsCount && return Ptr{Cint}(x + 4) f === :TotalIdxCount && return Ptr{Cint}(x + 8) @@ -561,11 +710,24 @@ function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) f === :DisplaySize && return Ptr{ImVec2}(x + 40) f === :FramebufferScale && return Ptr{ImVec2}(x + 48) f === :OwnerViewport && return Ptr{Ptr{ImGuiViewport}}(x + 56) + error("Unrecognized field of type `ImDrawData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) + f === :Valid && return unsafe_load(_getptr(x, f)) + f === :CmdListsCount && return unsafe_load(_getptr(x, f)) + f === :TotalIdxCount && return unsafe_load(_getptr(x, f)) + f === :TotalVtxCount && return unsafe_load(_getptr(x, f)) + f === :CmdLists && return _getptr(x, f) + f === :DisplayPos && return _getptr(x, f) + f === :DisplaySize && return _getptr(x, f) + f === :FramebufferScale && return _getptr(x, f) + f === :OwnerViewport && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -602,6 +764,26 @@ struct ImGuiKeyData DownDurationPrev::Cfloat AnalogValue::Cfloat end +function _getptr(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return Ptr{Bool}(x + 0) + f === :DownDuration && return Ptr{Cfloat}(x + 4) + f === :DownDurationPrev && return Ptr{Cfloat}(x + 8) + f === :AnalogValue && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImGuiKeyData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return unsafe_load(_getptr(x, f)) + f === :DownDuration && return unsafe_load(_getptr(x, f)) + f === :DownDurationPrev && return unsafe_load(_getptr(x, f)) + f === :AnalogValue && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImGuiKeyData}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImU16 = Cushort @@ -715,7 +897,7 @@ function Base.getproperty(x::ImGuiIO, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiIO}, f::Symbol) f === :ConfigFlags && return Ptr{ImGuiConfigFlags}(x + 0) f === :BackendFlags && return Ptr{ImGuiBackendFlags}(x + 4) f === :DisplaySize && return Ptr{ImVec2}(x + 8) @@ -816,11 +998,115 @@ function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) f === :BackendUsingLegacyNavInputArray && return Ptr{Bool}(x + 3003) f === :InputQueueSurrogate && return Ptr{ImWchar16}(x + 3004) f === :InputQueueCharacters && return Ptr{ImVector_ImWchar}(x + 3008) + error("Unrecognized field of type `ImGuiIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) + f === :ConfigFlags && return unsafe_load(_getptr(x, f)) + f === :BackendFlags && return unsafe_load(_getptr(x, f)) + f === :DisplaySize && return _getptr(x, f) + f === :DeltaTime && return unsafe_load(_getptr(x, f)) + f === :IniSavingRate && return unsafe_load(_getptr(x, f)) + f === :IniFilename && return unsafe_load(_getptr(x, f)) + f === :LogFilename && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Fonts && return unsafe_load(_getptr(x, f)) + f === :FontGlobalScale && return unsafe_load(_getptr(x, f)) + f === :FontAllowUserScaling && return unsafe_load(_getptr(x, f)) + f === :FontDefault && return unsafe_load(_getptr(x, f)) + f === :DisplayFramebufferScale && return _getptr(x, f) + f === :ConfigDockingNoSplit && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingWithShift && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingAlwaysTabBar && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingTransparentPayload && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoAutoMerge && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoTaskBarIcon && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDecoration && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDefaultParent && return unsafe_load(_getptr(x, f)) + f === :MouseDrawCursor && return unsafe_load(_getptr(x, f)) + f === :ConfigMacOSXBehaviors && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTrickleEventQueue && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextCursorBlink && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextEnterKeepActive && return unsafe_load(_getptr(x, f)) + f === :ConfigDragClickToInputText && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsResizeFromEdges && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsMoveFromTitleBarOnly && return unsafe_load(_getptr(x, f)) + f === :ConfigMemoryCompactTimer && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickTime && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickMaxDist && return unsafe_load(_getptr(x, f)) + f === :MouseDragThreshold && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatDelay && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatRate && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIsDebuggerPresent && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueOnce && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueLoop && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIgnoreFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIniSettings && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformName && return unsafe_load(_getptr(x, f)) + f === :BackendRendererName && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformUserData && return unsafe_load(_getptr(x, f)) + f === :BackendRendererUserData && return unsafe_load(_getptr(x, f)) + f === :BackendLanguageUserData && return unsafe_load(_getptr(x, f)) + f === :GetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :SetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :ClipboardUserData && return unsafe_load(_getptr(x, f)) + f === :SetPlatformImeDataFn && return unsafe_load(_getptr(x, f)) + f === :PlatformLocaleDecimalPoint && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouse && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboard && return unsafe_load(_getptr(x, f)) + f === :WantTextInput && return unsafe_load(_getptr(x, f)) + f === :WantSetMousePos && return unsafe_load(_getptr(x, f)) + f === :WantSaveIniSettings && return unsafe_load(_getptr(x, f)) + f === :NavActive && return unsafe_load(_getptr(x, f)) + f === :NavVisible && return unsafe_load(_getptr(x, f)) + f === :Framerate && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderVertices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderIndices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderWindows && return unsafe_load(_getptr(x, f)) + f === :MetricsActiveWindows && return unsafe_load(_getptr(x, f)) + f === :MouseDelta && return _getptr(x, f) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseDown && return _getptr(x, f) + f === :MouseWheel && return unsafe_load(_getptr(x, f)) + f === :MouseWheelH && return unsafe_load(_getptr(x, f)) + f === :MouseSource && return unsafe_load(_getptr(x, f)) + f === :MouseHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :KeyCtrl && return unsafe_load(_getptr(x, f)) + f === :KeyShift && return unsafe_load(_getptr(x, f)) + f === :KeyAlt && return unsafe_load(_getptr(x, f)) + f === :KeySuper && return unsafe_load(_getptr(x, f)) + f === :KeyMods && return unsafe_load(_getptr(x, f)) + f === :KeysData && return _getptr(x, f) + f === :WantCaptureMouseUnlessPopupClose && return unsafe_load(_getptr(x, f)) + f === :MousePosPrev && return _getptr(x, f) + f === :MouseClickedPos && return _getptr(x, f) + f === :MouseClickedTime && return _getptr(x, f) + f === :MouseClicked && return _getptr(x, f) + f === :MouseDoubleClicked && return _getptr(x, f) + f === :MouseClickedCount && return _getptr(x, f) + f === :MouseClickedLastCount && return _getptr(x, f) + f === :MouseReleased && return _getptr(x, f) + f === :MouseDownOwned && return _getptr(x, f) + f === :MouseDownOwnedUnlessPopupClose && return _getptr(x, f) + f === :MouseWheelRequestAxisSwap && return unsafe_load(_getptr(x, f)) + f === :MouseCtrlLeftAsRightClick && return unsafe_load(_getptr(x, f)) + f === :MouseDownDuration && return _getptr(x, f) + f === :MouseDownDurationPrev && return _getptr(x, f) + f === :MouseDragMaxDistanceAbs && return _getptr(x, f) + f === :MouseDragMaxDistanceSqr && return _getptr(x, f) + f === :PenPressure && return unsafe_load(_getptr(x, f)) + f === :AppFocusLost && return unsafe_load(_getptr(x, f)) + f === :AppAcceptingEvents && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyKeyArrays && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyNavInputArray && return unsafe_load(_getptr(x, f)) + f === :InputQueueSurrogate && return unsafe_load(_getptr(x, f)) + f === :InputQueueCharacters && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImGuiPlatformMonitor @@ -831,18 +1117,28 @@ struct ImGuiPlatformMonitor DpiScale::Cfloat PlatformHandle::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) f === :MainPos && return Ptr{ImVec2}(x + 0) f === :MainSize && return Ptr{ImVec2}(x + 8) f === :WorkPos && return Ptr{ImVec2}(x + 16) f === :WorkSize && return Ptr{ImVec2}(x + 24) f === :DpiScale && return Ptr{Cfloat}(x + 32) f === :PlatformHandle && return Ptr{Ptr{Cvoid}}(x + 40) + error("Unrecognized field of type `ImGuiPlatformMonitor`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) + f === :MainPos && return _getptr(x, f) + f === :MainSize && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformMonitor}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -885,7 +1181,7 @@ struct ImGuiPlatformIO Monitors::ImVector_ImGuiPlatformMonitor Viewports::ImVector_ImGuiViewportPtr end -function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Platform_CreateWindow && return Ptr{Ptr{Cvoid}}(x + 0) f === :Platform_DestroyWindow && return Ptr{Ptr{Cvoid}}(x + 8) f === :Platform_ShowWindow && return Ptr{Ptr{Cvoid}}(x + 16) @@ -911,11 +1207,40 @@ function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Renderer_SwapBuffers && return Ptr{Ptr{Cvoid}}(x + 176) f === :Monitors && return Ptr{ImVector_ImGuiPlatformMonitor}(x + 184) f === :Viewports && return Ptr{ImVector_ImGuiViewportPtr}(x + 200) + error("Unrecognized field of type `ImGuiPlatformIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) + f === :Platform_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_ShowWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowMinimized && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowTitle && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowAlpha && return unsafe_load(_getptr(x, f)) + f === :Platform_UpdateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowDpiScale && return unsafe_load(_getptr(x, f)) + f === :Platform_OnChangedViewport && return unsafe_load(_getptr(x, f)) + f === :Platform_CreateVkSurface && return unsafe_load(_getptr(x, f)) + f === :Renderer_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Renderer_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Monitors && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -985,7 +1310,7 @@ struct ImGuiStyle HoverFlagsForTooltipMouse::ImGuiHoveredFlags HoverFlagsForTooltipNav::ImGuiHoveredFlags end -function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyle}, f::Symbol) f === :Alpha && return Ptr{Cfloat}(x + 0) f === :DisabledAlpha && return Ptr{Cfloat}(x + 4) f === :WindowPadding && return Ptr{ImVec2}(x + 8) @@ -1039,11 +1364,68 @@ function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) f === :HoverDelayNormal && return Ptr{Cfloat}(x + 1128) f === :HoverFlagsForTooltipMouse && return Ptr{ImGuiHoveredFlags}(x + 1132) f === :HoverFlagsForTooltipNav && return Ptr{ImGuiHoveredFlags}(x + 1136) + error("Unrecognized field of type `ImGuiStyle`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) + f === :Alpha && return unsafe_load(_getptr(x, f)) + f === :DisabledAlpha && return unsafe_load(_getptr(x, f)) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :WindowMinSize && return _getptr(x, f) + f === :WindowTitleAlign && return _getptr(x, f) + f === :WindowMenuButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ChildRounding && return unsafe_load(_getptr(x, f)) + f === :ChildBorderSize && return unsafe_load(_getptr(x, f)) + f === :PopupRounding && return unsafe_load(_getptr(x, f)) + f === :PopupBorderSize && return unsafe_load(_getptr(x, f)) + f === :FramePadding && return _getptr(x, f) + f === :FrameRounding && return unsafe_load(_getptr(x, f)) + f === :FrameBorderSize && return unsafe_load(_getptr(x, f)) + f === :ItemSpacing && return _getptr(x, f) + f === :ItemInnerSpacing && return _getptr(x, f) + f === :CellPadding && return _getptr(x, f) + f === :TouchExtraPadding && return _getptr(x, f) + f === :IndentSpacing && return unsafe_load(_getptr(x, f)) + f === :ColumnsMinSpacing && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSize && return unsafe_load(_getptr(x, f)) + f === :ScrollbarRounding && return unsafe_load(_getptr(x, f)) + f === :GrabMinSize && return unsafe_load(_getptr(x, f)) + f === :GrabRounding && return unsafe_load(_getptr(x, f)) + f === :LogSliderDeadzone && return unsafe_load(_getptr(x, f)) + f === :TabRounding && return unsafe_load(_getptr(x, f)) + f === :TabBorderSize && return unsafe_load(_getptr(x, f)) + f === :TabMinWidthForCloseButton && return unsafe_load(_getptr(x, f)) + f === :TabBarBorderSize && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersAngle && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersTextAlign && return _getptr(x, f) + f === :ColorButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ButtonTextAlign && return _getptr(x, f) + f === :SelectableTextAlign && return _getptr(x, f) + f === :SeparatorTextBorderSize && return unsafe_load(_getptr(x, f)) + f === :SeparatorTextAlign && return _getptr(x, f) + f === :SeparatorTextPadding && return _getptr(x, f) + f === :DisplayWindowPadding && return _getptr(x, f) + f === :DisplaySafeAreaPadding && return _getptr(x, f) + f === :DockingSeparatorSize && return unsafe_load(_getptr(x, f)) + f === :MouseCursorScale && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLines && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLinesUseTex && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedFill && return unsafe_load(_getptr(x, f)) + f === :CurveTessellationTol && return unsafe_load(_getptr(x, f)) + f === :CircleTessellationMaxError && return unsafe_load(_getptr(x, f)) + f === :Colors && return _getptr(x, f) + f === :HoverStationaryDelay && return unsafe_load(_getptr(x, f)) + f === :HoverDelayShort && return unsafe_load(_getptr(x, f)) + f === :HoverDelayNormal && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipMouse && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipNav && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiStyle}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -1071,7 +1453,7 @@ struct ImGuiInputEvent data::NTuple{28, UInt8} end -function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) +function _getptr(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Type && return Ptr{ImGuiInputEventType}(x + 0) f === :Source && return Ptr{ImGuiInputSource}(x + 4) f === :EventId && return Ptr{ImU32}(x + 8) @@ -1083,6 +1465,21 @@ function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Text && return Ptr{ImGuiInputEventText}(x + 12) f === :AppFocused && return Ptr{ImGuiInputEventAppFocused}(x + 12) f === :AddedByTestEngine && return Ptr{Bool}(x + 24) + error("Unrecognized field of type `ImGuiInputEvent`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) + f === :Type && return unsafe_load(_getptr(x, f)) + f === :Source && return unsafe_load(_getptr(x, f)) + f === :EventId && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseWheel && return _getptr(x, f) + f === :MouseButton && return _getptr(x, f) + f === :MouseViewport && return _getptr(x, f) + f === :Key && return _getptr(x, f) + f === :Text && return _getptr(x, f) + f === :AppFocused && return _getptr(x, f) + f === :AddedByTestEngine && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1094,7 +1491,7 @@ function Base.getproperty(x::ImGuiInputEvent, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiInputEvent}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiInputEvent @@ -1202,11 +1599,19 @@ struct ImGuiStoragePair data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) +function _getptr(x::Ptr{ImGuiStoragePair}, f::Symbol) f === :key && return Ptr{ImGuiID}(x + 0) f === :val_i && return Ptr{Cint}(x + 8) f === :val_f && return Ptr{Cfloat}(x + 8) f === :val_p && return Ptr{Ptr{Cvoid}}(x + 8) + error("Unrecognized field of type `ImGuiStoragePair`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) + f === :key && return unsafe_load(_getptr(x, f)) + f === :val_i && return unsafe_load(_getptr(x, f)) + f === :val_f && return unsafe_load(_getptr(x, f)) + f === :val_p && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1218,7 +1623,7 @@ function Base.getproperty(x::ImGuiStoragePair, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStoragePair}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStoragePair @@ -1426,7 +1831,7 @@ struct ImGuiDockNode data::NTuple{208, UInt8} end -function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) +function _getptr(x::Ptr{ImGuiDockNode}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :SharedFlags && return Ptr{ImGuiDockNodeFlags}(x + 4) f === :LocalFlags && return Ptr{ImGuiDockNodeFlags}(x + 8) @@ -1469,6 +1874,52 @@ function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) f === :WantMouseMove && return (Ptr{Bool}(x + 200), 17, 1) f === :WantHiddenTabBarUpdate && return (Ptr{Bool}(x + 200), 18, 1) f === :WantHiddenTabBarToggle && return (Ptr{Bool}(x + 200), 19, 1) + error("Unrecognized field of type `ImGuiDockNode`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :SharedFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlagsInWindows && return unsafe_load(_getptr(x, f)) + f === :MergedFlags && return unsafe_load(_getptr(x, f)) + f === :State && return unsafe_load(_getptr(x, f)) + f === :ParentNode && return unsafe_load(_getptr(x, f)) + f === :ChildNodes && return _getptr(x, f) + f === :Windows && return _getptr(x, f) + f === :TabBar && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeRef && return _getptr(x, f) + f === :SplitAxis && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :LastBgColor && return unsafe_load(_getptr(x, f)) + f === :HostWindow && return unsafe_load(_getptr(x, f)) + f === :VisibleWindow && return unsafe_load(_getptr(x, f)) + f === :CentralNode && return unsafe_load(_getptr(x, f)) + f === :OnlyNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :CountNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :LastFrameAlive && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameFocused && return unsafe_load(_getptr(x, f)) + f === :LastFocusedNodeId && return unsafe_load(_getptr(x, f)) + f === :SelectedTabId && return unsafe_load(_getptr(x, f)) + f === :WantCloseTabId && return unsafe_load(_getptr(x, f)) + f === :RefViewportId && return unsafe_load(_getptr(x, f)) + f === :AuthorityForPos && return unsafe_load(_getptr(x, f)) + f === :AuthorityForSize && return unsafe_load(_getptr(x, f)) + f === :AuthorityForViewport && return unsafe_load(_getptr(x, f)) + f === :IsVisible && return unsafe_load(_getptr(x, f)) + f === :IsFocused && return unsafe_load(_getptr(x, f)) + f === :IsBgDrawnThisFrame && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :HasWindowMenuButton && return unsafe_load(_getptr(x, f)) + f === :HasCentralNodeChild && return unsafe_load(_getptr(x, f)) + f === :WantCloseAll && return unsafe_load(_getptr(x, f)) + f === :WantLockSizeOnce && return unsafe_load(_getptr(x, f)) + f === :WantMouseMove && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarUpdate && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarToggle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1496,7 +1947,7 @@ end function Base.setproperty!(x::Ptr{ImGuiDockNode}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1521,7 +1972,7 @@ struct ImGuiWindow data::NTuple{1160, UInt8} end -function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) +function _getptr(x::Ptr{ImGuiWindow}, f::Symbol) f === :Ctx && return Ptr{Ptr{ImGuiContext}}(x + 0) f === :Name && return Ptr{Ptr{Cchar}}(x + 8) f === :ID && return Ptr{ImGuiID}(x + 16) @@ -1646,6 +2097,134 @@ function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) f === :DockId && return Ptr{ImGuiID}(x + 1136) f === :DockTabItemStatusFlags && return Ptr{ImGuiItemStatusFlags}(x + 1140) f === :DockTabItemRect && return Ptr{ImRect}(x + 1144) + error("Unrecognized field of type `ImGuiWindow`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :Name && return unsafe_load(_getptr(x, f)) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :FlagsPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ChildFlags && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :Viewport && return unsafe_load(_getptr(x, f)) + f === :ViewportId && return unsafe_load(_getptr(x, f)) + f === :ViewportPos && return _getptr(x, f) + f === :ViewportAllowPlatformMonitorExtend && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeFull && return _getptr(x, f) + f === :ContentSize && return _getptr(x, f) + f === :ContentSizeIdeal && return _getptr(x, f) + f === :ContentSizeExplicit && return _getptr(x, f) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :TitleBarHeight && return unsafe_load(_getptr(x, f)) + f === :MenuBarHeight && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX2 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY2 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeY1 && return unsafe_load(_getptr(x, f)) + f === :NameBufLen && return unsafe_load(_getptr(x, f)) + f === :MoveId && return unsafe_load(_getptr(x, f)) + f === :TabId && return unsafe_load(_getptr(x, f)) + f === :ChildId && return unsafe_load(_getptr(x, f)) + f === :PopupId && return unsafe_load(_getptr(x, f)) + f === :Scroll && return _getptr(x, f) + f === :ScrollMax && return _getptr(x, f) + f === :ScrollTarget && return _getptr(x, f) + f === :ScrollTargetCenterRatio && return _getptr(x, f) + f === :ScrollTargetEdgeSnapDist && return _getptr(x, f) + f === :ScrollbarSizes && return _getptr(x, f) + f === :ScrollbarX && return unsafe_load(_getptr(x, f)) + f === :ScrollbarY && return unsafe_load(_getptr(x, f)) + f === :ViewportOwned && return unsafe_load(_getptr(x, f)) + f === :Active && return unsafe_load(_getptr(x, f)) + f === :WasActive && return unsafe_load(_getptr(x, f)) + f === :WriteAccessed && return unsafe_load(_getptr(x, f)) + f === :Collapsed && return unsafe_load(_getptr(x, f)) + f === :WantCollapseToggle && return unsafe_load(_getptr(x, f)) + f === :SkipItems && return unsafe_load(_getptr(x, f)) + f === :SkipRefresh && return unsafe_load(_getptr(x, f)) + f === :Appearing && return unsafe_load(_getptr(x, f)) + f === :Hidden && return unsafe_load(_getptr(x, f)) + f === :IsFallbackWindow && return unsafe_load(_getptr(x, f)) + f === :IsExplicitChild && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHovered && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHeld && return unsafe_load(_getptr(x, f)) + f === :BeginCount && return unsafe_load(_getptr(x, f)) + f === :BeginCountPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinParent && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinContext && return unsafe_load(_getptr(x, f)) + f === :FocusOrder && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesX && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesY && return unsafe_load(_getptr(x, f)) + f === :AutoFitOnlyGrows && return unsafe_load(_getptr(x, f)) + f === :AutoPosLastDirection && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCanSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCannotSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesForRenderOnly && return unsafe_load(_getptr(x, f)) + f === :DisableInputsFrames && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowSizeAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowCollapsedAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowDockAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosVal && return _getptr(x, f) + f === :SetWindowPosPivot && return _getptr(x, f) + f === :IDStack && return _getptr(x, f) + f === :DC && return _getptr(x, f) + f === :OuterRectClipped && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :ParentWorkRect && return _getptr(x, f) + f === :ClipRect && return _getptr(x, f) + f === :ContentRegionRect && return _getptr(x, f) + f === :HitTestHoleSize && return _getptr(x, f) + f === :HitTestHoleOffset && return _getptr(x, f) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameJustFocused && return unsafe_load(_getptr(x, f)) + f === :LastTimeActive && return unsafe_load(_getptr(x, f)) + f === :ItemWidthDefault && return unsafe_load(_getptr(x, f)) + f === :StateStorage && return _getptr(x, f) + f === :ColumnsStorage && return _getptr(x, f) + f === :FontWindowScale && return unsafe_load(_getptr(x, f)) + f === :FontDpiScale && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :DrawList && return unsafe_load(_getptr(x, f)) + f === :DrawListInst && return _getptr(x, f) + f === :ParentWindow && return unsafe_load(_getptr(x, f)) + f === :ParentWindowInBeginStack && return unsafe_load(_getptr(x, f)) + f === :RootWindow && return unsafe_load(_getptr(x, f)) + f === :RootWindowPopupTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowDockTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowForTitleBarHighlight && return unsafe_load(_getptr(x, f)) + f === :RootWindowForNav && return unsafe_load(_getptr(x, f)) + f === :ParentWindowForFocusRoute && return unsafe_load(_getptr(x, f)) + f === :NavLastChildNavWindow && return unsafe_load(_getptr(x, f)) + f === :NavLastIds && return _getptr(x, f) + f === :NavRectRel && return _getptr(x, f) + f === :NavPreferredScoringPosRel && return _getptr(x, f) + f === :NavRootFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListIdxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListVtxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :DockIsActive && return unsafe_load(_getptr(x, f)) + f === :DockNodeIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabWantClose && return unsafe_load(_getptr(x, f)) + f === :DockOrder && return unsafe_load(_getptr(x, f)) + f === :DockStyle && return _getptr(x, f) + f === :DockNode && return unsafe_load(_getptr(x, f)) + f === :DockNodeAsHost && return unsafe_load(_getptr(x, f)) + f === :DockId && return unsafe_load(_getptr(x, f)) + f === :DockTabItemStatusFlags && return unsafe_load(_getptr(x, f)) + f === :DockTabItemRect && return _getptr(x, f) return getfield(x, f) end @@ -1673,7 +2252,7 @@ end function Base.setproperty!(x::Ptr{ImGuiWindow}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1841,10 +2420,17 @@ struct ImGuiStyleMod data::NTuple{12, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyleMod}, f::Symbol) f === :VarIdx && return Ptr{ImGuiStyleVar}(x + 0) f === :BackupInt && return Ptr{NTuple{2, Cint}}(x + 4) f === :BackupFloat && return Ptr{NTuple{2, Cfloat}}(x + 4) + error("Unrecognized field of type `ImGuiStyleMod`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) + f === :VarIdx && return unsafe_load(_getptr(x, f)) + f === :BackupInt && return _getptr(x, f) + f === :BackupFloat && return _getptr(x, f) return getfield(x, f) end @@ -1856,7 +2442,7 @@ function Base.getproperty(x::ImGuiStyleMod, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStyleMod}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStyleMod @@ -2231,7 +2817,7 @@ struct ImGuiTableColumn data::NTuple{112, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :Flags && return Ptr{ImGuiTableColumnFlags}(x + 0) f === :WidthGiven && return Ptr{Cfloat}(x + 4) f === :MinX && return Ptr{Cfloat}(x + 8) @@ -2273,6 +2859,51 @@ function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :SortDirectionsAvailCount && return (Ptr{ImU8}(x + 108), 10, 2) f === :SortDirectionsAvailMask && return (Ptr{ImU8}(x + 108), 12, 4) f === :SortDirectionsAvailList && return Ptr{ImU8}(x + 110) + error("Unrecognized field of type `ImGuiTableColumn`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :WidthGiven && return unsafe_load(_getptr(x, f)) + f === :MinX && return unsafe_load(_getptr(x, f)) + f === :MaxX && return unsafe_load(_getptr(x, f)) + f === :WidthRequest && return unsafe_load(_getptr(x, f)) + f === :WidthAuto && return unsafe_load(_getptr(x, f)) + f === :StretchWeight && return unsafe_load(_getptr(x, f)) + f === :InitStretchWeightOrWidth && return unsafe_load(_getptr(x, f)) + f === :ClipRect && return _getptr(x, f) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :WorkMinX && return unsafe_load(_getptr(x, f)) + f === :WorkMaxX && return unsafe_load(_getptr(x, f)) + f === :ItemWidth && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXFrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXUnfrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersUsed && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersIdeal && return unsafe_load(_getptr(x, f)) + f === :NameOffset && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IndexWithinEnabledSet && return unsafe_load(_getptr(x, f)) + f === :PrevEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :NextEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :DrawChannelFrozen && return unsafe_load(_getptr(x, f)) + f === :DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabledNextFrame && return unsafe_load(_getptr(x, f)) + f === :IsVisibleX && return unsafe_load(_getptr(x, f)) + f === :IsVisibleY && return unsafe_load(_getptr(x, f)) + f === :IsRequestOutput && return unsafe_load(_getptr(x, f)) + f === :IsSkipItems && return unsafe_load(_getptr(x, f)) + f === :IsPreserveWidthAuto && return unsafe_load(_getptr(x, f)) + f === :NavLayerCurrent && return unsafe_load(_getptr(x, f)) + f === :AutoFitQueue && return unsafe_load(_getptr(x, f)) + f === :CannotSkipItemsQueue && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailCount && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailMask && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailList && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2300,7 +2931,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumn}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2387,7 +3018,7 @@ struct ImGuiTable data::NTuple{592, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) +function _getptr(x::Ptr{ImGuiTable}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiTableFlags}(x + 4) f === :RawData && return Ptr{Ptr{Cvoid}}(x + 8) @@ -2500,6 +3131,122 @@ function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) f === :HasScrollbarYPrev && return Ptr{Bool}(x + 583) f === :MemoryCompacted && return Ptr{Bool}(x + 584) f === :HostSkipItems && return Ptr{Bool}(x + 585) + error("Unrecognized field of type `ImGuiTable`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :RawData && return unsafe_load(_getptr(x, f)) + f === :TempData && return unsafe_load(_getptr(x, f)) + f === :Columns && return _getptr(x, f) + f === :DisplayOrderToIndex && return _getptr(x, f) + f === :RowCellData && return _getptr(x, f) + f === :EnabledMaskByDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :EnabledMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :VisibleMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :SettingsLoadedFlags && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :ColumnsCount && return unsafe_load(_getptr(x, f)) + f === :CurrentRow && return unsafe_load(_getptr(x, f)) + f === :CurrentColumn && return unsafe_load(_getptr(x, f)) + f === :InstanceCurrent && return unsafe_load(_getptr(x, f)) + f === :InstanceInteracted && return unsafe_load(_getptr(x, f)) + f === :RowPosY1 && return unsafe_load(_getptr(x, f)) + f === :RowPosY2 && return unsafe_load(_getptr(x, f)) + f === :RowMinHeight && return unsafe_load(_getptr(x, f)) + f === :RowCellPaddingY && return unsafe_load(_getptr(x, f)) + f === :RowTextBaseline && return unsafe_load(_getptr(x, f)) + f === :RowIndentOffsetX && return unsafe_load(_getptr(x, f)) + f === :RowFlags && return unsafe_load(_getptr(x, f)) + f === :LastRowFlags && return unsafe_load(_getptr(x, f)) + f === :RowBgColorCounter && return unsafe_load(_getptr(x, f)) + f === :RowBgColor && return _getptr(x, f) + f === :BorderColorStrong && return unsafe_load(_getptr(x, f)) + f === :BorderColorLight && return unsafe_load(_getptr(x, f)) + f === :BorderX1 && return unsafe_load(_getptr(x, f)) + f === :BorderX2 && return unsafe_load(_getptr(x, f)) + f === :HostIndentX && return unsafe_load(_getptr(x, f)) + f === :MinColumnWidth && return unsafe_load(_getptr(x, f)) + f === :OuterPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX1 && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX2 && return unsafe_load(_getptr(x, f)) + f === :InnerWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsGivenWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsAutoFitWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsStretchSumWeights && return unsafe_load(_getptr(x, f)) + f === :ResizedColumnNextWidth && return unsafe_load(_getptr(x, f)) + f === :ResizeLockMinContentsX2 && return unsafe_load(_getptr(x, f)) + f === :RefScale && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersHeight && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersSlope && return unsafe_load(_getptr(x, f)) + f === :OuterRect && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :BgClipRect && return _getptr(x, f) + f === :Bg0ClipRectForDrawCmd && return _getptr(x, f) + f === :Bg2ClipRectForDrawCmd && return _getptr(x, f) + f === :HostClipRect && return _getptr(x, f) + f === :HostBackupInnerClipRect && return _getptr(x, f) + f === :OuterWindow && return unsafe_load(_getptr(x, f)) + f === :InnerWindow && return unsafe_load(_getptr(x, f)) + f === :ColumnsNames && return _getptr(x, f) + f === :DrawSplitter && return unsafe_load(_getptr(x, f)) + f === :InstanceDataFirst && return _getptr(x, f) + f === :InstanceDataExtra && return _getptr(x, f) + f === :SortSpecsSingle && return _getptr(x, f) + f === :SortSpecsMulti && return _getptr(x, f) + f === :SortSpecs && return _getptr(x, f) + f === :SortSpecsCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledFixedCount && return unsafe_load(_getptr(x, f)) + f === :DeclColumnsCount && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersCount && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBody && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBorder && return unsafe_load(_getptr(x, f)) + f === :HighlightColumnHeader && return unsafe_load(_getptr(x, f)) + f === :AutoFitSingleColumn && return unsafe_load(_getptr(x, f)) + f === :ResizedColumn && return unsafe_load(_getptr(x, f)) + f === :LastResizedColumn && return unsafe_load(_getptr(x, f)) + f === :HeldHeaderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumnDir && return unsafe_load(_getptr(x, f)) + f === :LeftMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :LeftMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :ContextPopupColumn && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsCount && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsCount && return unsafe_load(_getptr(x, f)) + f === :RowCellDataCurrent && return unsafe_load(_getptr(x, f)) + f === :DummyDrawChannel && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsLayoutLocked && return unsafe_load(_getptr(x, f)) + f === :IsInsideRow && return unsafe_load(_getptr(x, f)) + f === :IsInitializing && return unsafe_load(_getptr(x, f)) + f === :IsSortSpecsDirty && return unsafe_load(_getptr(x, f)) + f === :IsUsingHeaders && return unsafe_load(_getptr(x, f)) + f === :IsContextPopupOpen && return unsafe_load(_getptr(x, f)) + f === :DisableDefaultContextMenu && return unsafe_load(_getptr(x, f)) + f === :IsSettingsRequestLoad && return unsafe_load(_getptr(x, f)) + f === :IsSettingsDirty && return unsafe_load(_getptr(x, f)) + f === :IsDefaultDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IsResetAllRequest && return unsafe_load(_getptr(x, f)) + f === :IsResetDisplayOrderRequest && return unsafe_load(_getptr(x, f)) + f === :IsUnfrozenRows && return unsafe_load(_getptr(x, f)) + f === :IsDefaultSizingPolicy && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdAliveBeforeTable && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdInTable && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYCurr && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYPrev && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :HostSkipItems && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2527,7 +3274,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTable}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2832,12 +3579,21 @@ struct ImGuiStackLevelInfo data::NTuple{64, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) +function _getptr(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :QueryFrameCount && return Ptr{ImS8}(x + 4) f === :QuerySuccess && return Ptr{Bool}(x + 5) f === :DataType && return (Ptr{ImGuiDataType}(x + 4), 16, 8) f === :Desc && return Ptr{NTuple{57, Cchar}}(x + 7) + error("Unrecognized field of type `ImGuiStackLevelInfo`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :QueryFrameCount && return unsafe_load(_getptr(x, f)) + f === :QuerySuccess && return unsafe_load(_getptr(x, f)) + f === :DataType && return unsafe_load(_getptr(x, f)) + f === :Desc && return _getptr(x, f) return getfield(x, f) end @@ -2865,7 +3621,7 @@ end function Base.setproperty!(x::Ptr{ImGuiStackLevelInfo}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2916,7 +3672,7 @@ struct ImGuiContext data::NTuple{14184, UInt8} end -function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) +function _getptr(x::Ptr{ImGuiContext}, f::Symbol) f === :Initialized && return Ptr{Bool}(x + 0) f === :FontAtlasOwnedByContext && return Ptr{Bool}(x + 1) f === :IO && return Ptr{ImGuiIO}(x + 8) @@ -3207,6 +3963,300 @@ function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) f === :WantTextInputNextFrame && return Ptr{Cint}(x + 14100) f === :TempBuffer && return Ptr{ImVector_char}(x + 14104) f === :TempKeychordName && return Ptr{NTuple{64, Cchar}}(x + 14120) + error("Unrecognized field of type `ImGuiContext`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) + f === :Initialized && return unsafe_load(_getptr(x, f)) + f === :FontAtlasOwnedByContext && return unsafe_load(_getptr(x, f)) + f === :IO && return _getptr(x, f) + f === :PlatformIO && return _getptr(x, f) + f === :Style && return _getptr(x, f) + f === :ConfigFlagsCurrFrame && return unsafe_load(_getptr(x, f)) + f === :ConfigFlagsLastFrame && return unsafe_load(_getptr(x, f)) + f === :Font && return unsafe_load(_getptr(x, f)) + f === :FontSize && return unsafe_load(_getptr(x, f)) + f === :FontBaseSize && return unsafe_load(_getptr(x, f)) + f === :CurrentDpiScale && return unsafe_load(_getptr(x, f)) + f === :DrawListSharedData && return _getptr(x, f) + f === :Time && return unsafe_load(_getptr(x, f)) + f === :FrameCount && return unsafe_load(_getptr(x, f)) + f === :FrameCountEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountPlatformEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountRendered && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScope && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScopeWithImplicitWindow && return unsafe_load(_getptr(x, f)) + f === :WithinEndChild && return unsafe_load(_getptr(x, f)) + f === :GcCompactAll && return unsafe_load(_getptr(x, f)) + f === :TestEngineHookItems && return unsafe_load(_getptr(x, f)) + f === :TestEngine && return unsafe_load(_getptr(x, f)) + f === :InputEventsQueue && return _getptr(x, f) + f === :InputEventsTrail && return _getptr(x, f) + f === :InputEventsNextMouseSource && return unsafe_load(_getptr(x, f)) + f === :InputEventsNextEventId && return unsafe_load(_getptr(x, f)) + f === :Windows && return _getptr(x, f) + f === :WindowsFocusOrder && return _getptr(x, f) + f === :WindowsTempSortBuffer && return _getptr(x, f) + f === :CurrentWindowStack && return _getptr(x, f) + f === :WindowsById && return _getptr(x, f) + f === :WindowsActiveCount && return unsafe_load(_getptr(x, f)) + f === :WindowsHoverPadding && return _getptr(x, f) + f === :DebugBreakInWindow && return unsafe_load(_getptr(x, f)) + f === :CurrentWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindowUnderMovingWindow && return unsafe_load(_getptr(x, f)) + f === :MovingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowRefMousePos && return _getptr(x, f) + f === :WheelingWindowStartFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowScrolledFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowReleaseTimer && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowWheelRemainder && return _getptr(x, f) + f === :WheelingAxisAvg && return _getptr(x, f) + f === :DebugHookIdInfo && return unsafe_load(_getptr(x, f)) + f === :HoveredId && return unsafe_load(_getptr(x, f)) + f === :HoveredIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoveredIdTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdNotActiveTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :HoveredIdDisabled && return unsafe_load(_getptr(x, f)) + f === :ItemUnclipByLog && return unsafe_load(_getptr(x, f)) + f === :ActiveId && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsJustActivated && return unsafe_load(_getptr(x, f)) + f === :ActiveIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :ActiveIdNoClearOnFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenPressedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedThisFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdFromShortcut && return unsafe_load(_getptr(x, f)) + f === :ActiveIdMouseButton && return unsafe_load(_getptr(x, f)) + f === :ActiveIdClickOffset && return _getptr(x, f) + f === :ActiveIdWindow && return unsafe_load(_getptr(x, f)) + f === :ActiveIdSource && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameWindow && return unsafe_load(_getptr(x, f)) + f === :LastActiveId && return unsafe_load(_getptr(x, f)) + f === :LastActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeFromNoneTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyboardKeyPressTime && return unsafe_load(_getptr(x, f)) + f === :KeysMayBeCharInput && return _getptr(x, f) + f === :KeysOwnerData && return _getptr(x, f) + f === :KeysRoutingTable && return _getptr(x, f) + f === :ActiveIdUsingNavDirMask && return unsafe_load(_getptr(x, f)) + f === :ActiveIdUsingAllKeyboardKeys && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInShortcutRouting && return unsafe_load(_getptr(x, f)) + f === :CurrentFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :CurrentItemFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLocateId && return unsafe_load(_getptr(x, f)) + f === :NextItemData && return _getptr(x, f) + f === :LastItemData && return _getptr(x, f) + f === :NextWindowData && return _getptr(x, f) + f === :DebugShowGroupRects && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorIdx && return unsafe_load(_getptr(x, f)) + f === :ColorStack && return _getptr(x, f) + f === :StyleVarStack && return _getptr(x, f) + f === :FontStack && return _getptr(x, f) + f === :FocusScopeStack && return _getptr(x, f) + f === :ItemFlagsStack && return _getptr(x, f) + f === :GroupStack && return _getptr(x, f) + f === :OpenPopupStack && return _getptr(x, f) + f === :BeginPopupStack && return _getptr(x, f) + f === :NavTreeNodeStack && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) + f === :CurrentViewport && return unsafe_load(_getptr(x, f)) + f === :MouseViewport && return unsafe_load(_getptr(x, f)) + f === :MouseLastHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :PlatformLastFocusedViewportId && return unsafe_load(_getptr(x, f)) + f === :FallbackMonitor && return _getptr(x, f) + f === :PlatformMonitorsFullWorkRect && return _getptr(x, f) + f === :ViewportCreatedCount && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowsCreatedCount && return unsafe_load(_getptr(x, f)) + f === :ViewportFocusedStampCount && return unsafe_load(_getptr(x, f)) + f === :NavWindow && return unsafe_load(_getptr(x, f)) + f === :NavId && return unsafe_load(_getptr(x, f)) + f === :NavFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavActivateId && return unsafe_load(_getptr(x, f)) + f === :NavActivateDownId && return unsafe_load(_getptr(x, f)) + f === :NavActivatePressedId && return unsafe_load(_getptr(x, f)) + f === :NavActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavFocusRoute && return _getptr(x, f) + f === :NavHighlightActivatedId && return unsafe_load(_getptr(x, f)) + f === :NavHighlightActivatedTimer && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateId && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavInputSource && return unsafe_load(_getptr(x, f)) + f === :NavLayer && return unsafe_load(_getptr(x, f)) + f === :NavLastValidSelectionUserData && return unsafe_load(_getptr(x, f)) + f === :NavIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :NavMousePosDirty && return unsafe_load(_getptr(x, f)) + f === :NavDisableHighlight && return unsafe_load(_getptr(x, f)) + f === :NavDisableMouseHover && return unsafe_load(_getptr(x, f)) + f === :NavAnyRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequestFromMove && return unsafe_load(_getptr(x, f)) + f === :NavInitResult && return _getptr(x, f) + f === :NavMoveSubmitted && return unsafe_load(_getptr(x, f)) + f === :NavMoveScoringItems && return unsafe_load(_getptr(x, f)) + f === :NavMoveForwardToNextFrame && return unsafe_load(_getptr(x, f)) + f === :NavMoveFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveScrollFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavMoveDir && return unsafe_load(_getptr(x, f)) + f === :NavMoveDirForDebug && return unsafe_load(_getptr(x, f)) + f === :NavMoveClipDir && return unsafe_load(_getptr(x, f)) + f === :NavScoringRect && return _getptr(x, f) + f === :NavScoringNoClipRect && return _getptr(x, f) + f === :NavScoringDebugCount && return unsafe_load(_getptr(x, f)) + f === :NavTabbingDir && return unsafe_load(_getptr(x, f)) + f === :NavTabbingCounter && return unsafe_load(_getptr(x, f)) + f === :NavMoveResultLocal && return _getptr(x, f) + f === :NavMoveResultLocalVisible && return _getptr(x, f) + f === :NavMoveResultOther && return _getptr(x, f) + f === :NavTabbingResultFirst && return _getptr(x, f) + f === :ConfigNavWindowingKeyNext && return unsafe_load(_getptr(x, f)) + f === :ConfigNavWindowingKeyPrev && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTarget && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTargetAnim && return unsafe_load(_getptr(x, f)) + f === :NavWindowingListWindow && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTimer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingHighlightAlpha && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleLayer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleKey && return unsafe_load(_getptr(x, f)) + f === :NavWindowingAccumDeltaPos && return _getptr(x, f) + f === :NavWindowingAccumDeltaSize && return _getptr(x, f) + f === :DimBgRatio && return unsafe_load(_getptr(x, f)) + f === :DragDropActive && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinSource && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinTarget && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropMouseButton && return unsafe_load(_getptr(x, f)) + f === :DragDropPayload && return _getptr(x, f) + f === :DragDropTargetRect && return _getptr(x, f) + f === :DragDropTargetClipRect && return _getptr(x, f) + f === :DragDropTargetId && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurrRectSurface && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurr && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdPrev && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropHoldJustPressedId && return unsafe_load(_getptr(x, f)) + f === :DragDropPayloadBufHeap && return _getptr(x, f) + f === :DragDropPayloadBufLocal && return _getptr(x, f) + f === :ClipperTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :ClipperTempData && return _getptr(x, f) + f === :CurrentTable && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInTable && return unsafe_load(_getptr(x, f)) + f === :TablesTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :TablesTempData && return _getptr(x, f) + f === :Tables && return _getptr(x, f) + f === :TablesLastTimeActive && return _getptr(x, f) + f === :DrawChannelsTempMergeBuffer && return _getptr(x, f) + f === :CurrentTabBar && return unsafe_load(_getptr(x, f)) + f === :TabBars && return _getptr(x, f) + f === :CurrentTabBarStack && return _getptr(x, f) + f === :ShrinkWidthBuffer && return _getptr(x, f) + f === :HoverItemDelayId && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayClearTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :HoverWindowUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :MouseCursor && return unsafe_load(_getptr(x, f)) + f === :MouseStationaryTimer && return unsafe_load(_getptr(x, f)) + f === :MouseLastValidPos && return _getptr(x, f) + f === :InputTextState && return _getptr(x, f) + f === :InputTextDeactivatedState && return _getptr(x, f) + f === :InputTextPasswordFont && return _getptr(x, f) + f === :TempInputId && return unsafe_load(_getptr(x, f)) + f === :DataTypeZeroValue && return _getptr(x, f) + f === :BeginMenuDepth && return unsafe_load(_getptr(x, f)) + f === :BeginComboDepth && return unsafe_load(_getptr(x, f)) + f === :ColorEditOptions && return unsafe_load(_getptr(x, f)) + f === :ColorEditCurrentID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedHue && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedSat && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedColor && return unsafe_load(_getptr(x, f)) + f === :ColorPickerRef && return _getptr(x, f) + f === :ComboPreviewData && return _getptr(x, f) + f === :WindowResizeBorderExpectedRect && return _getptr(x, f) + f === :WindowResizeRelativeMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSeekMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarClickDeltaToGrabCenter && return unsafe_load(_getptr(x, f)) + f === :SliderGrabClickOffset && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :DragSpeedDefaultRatio && return unsafe_load(_getptr(x, f)) + f === :DisabledAlphaBackup && return unsafe_load(_getptr(x, f)) + f === :DisabledStackSize && return unsafe_load(_getptr(x, f)) + f === :LockMarkEdited && return unsafe_load(_getptr(x, f)) + f === :TooltipOverrideCount && return unsafe_load(_getptr(x, f)) + f === :ClipboardHandlerData && return _getptr(x, f) + f === :MenusIdSubmittedThisFrame && return _getptr(x, f) + f === :TypingSelectState && return _getptr(x, f) + f === :PlatformImeData && return _getptr(x, f) + f === :PlatformImeDataPrev && return _getptr(x, f) + f === :PlatformImeViewport && return unsafe_load(_getptr(x, f)) + f === :DockContext && return _getptr(x, f) + f === :DockNodeWindowMenuHandler && return unsafe_load(_getptr(x, f)) + f === :SettingsLoaded && return unsafe_load(_getptr(x, f)) + f === :SettingsDirtyTimer && return unsafe_load(_getptr(x, f)) + f === :SettingsIniData && return _getptr(x, f) + f === :SettingsHandlers && return _getptr(x, f) + f === :SettingsWindows && return _getptr(x, f) + f === :SettingsTables && return _getptr(x, f) + f === :Hooks && return _getptr(x, f) + f === :HookIdNext && return unsafe_load(_getptr(x, f)) + f === :LocalizationTable && return _getptr(x, f) + f === :LogEnabled && return unsafe_load(_getptr(x, f)) + f === :LogType && return unsafe_load(_getptr(x, f)) + f === :LogFile && return unsafe_load(_getptr(x, f)) + f === :LogBuffer && return _getptr(x, f) + f === :LogNextPrefix && return unsafe_load(_getptr(x, f)) + f === :LogNextSuffix && return unsafe_load(_getptr(x, f)) + f === :LogLinePosY && return unsafe_load(_getptr(x, f)) + f === :LogLineFirstItem && return unsafe_load(_getptr(x, f)) + f === :LogDepthRef && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpand && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpandDefault && return unsafe_load(_getptr(x, f)) + f === :DebugLogFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogBuf && return _getptr(x, f) + f === :DebugLogIndex && return _getptr(x, f) + f === :DebugLogAutoDisableFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogAutoDisableFrames && return unsafe_load(_getptr(x, f)) + f === :DebugLocateFrames && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInLocateId && return unsafe_load(_getptr(x, f)) + f === :DebugBreakKeyChord && return unsafe_load(_getptr(x, f)) + f === :DebugBeginReturnValueCullDepth && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerActive && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerMouseButton && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerBreakId && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorTime && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorBackup && return _getptr(x, f) + f === :DebugMetricsConfig && return _getptr(x, f) + f === :DebugIDStackTool && return _getptr(x, f) + f === :DebugAllocInfo && return _getptr(x, f) + f === :DebugHoveredDockNode && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrame && return _getptr(x, f) + f === :FramerateSecPerFrameIdx && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameCount && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameAccum && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouseNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboardNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantTextInputNextFrame && return unsafe_load(_getptr(x, f)) + f === :TempBuffer && return _getptr(x, f) + f === :TempKeychordName && return _getptr(x, f) return getfield(x, f) end @@ -3234,7 +4284,7 @@ end function Base.setproperty!(x::Ptr{ImGuiContext}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -3279,16 +4329,24 @@ struct ImGuiSizeCallbackData CurrentSize::ImVec2 DesiredSize::ImVec2 end -function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) +function _getptr(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) f === :UserData && return Ptr{Ptr{Cvoid}}(x + 0) f === :Pos && return Ptr{ImVec2}(x + 8) f === :CurrentSize && return Ptr{ImVec2}(x + 16) f === :DesiredSize && return Ptr{ImVec2}(x + 24) + error("Unrecognized field of type `ImGuiSizeCallbackData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :CurrentSize && return _getptr(x, f) + f === :DesiredSize && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiSizeCallbackData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -4381,7 +5439,7 @@ struct ImGuiTableColumnSettings data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :WidthOrWeight && return Ptr{Cfloat}(x + 0) f === :UserID && return Ptr{ImGuiID}(x + 4) f === :Index && return Ptr{ImGuiTableColumnIdx}(x + 8) @@ -4390,6 +5448,18 @@ function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :SortDirection && return (Ptr{ImU8}(x + 12), 16, 2) f === :IsEnabled && return (Ptr{ImU8}(x + 12), 18, 1) f === :IsStretch && return (Ptr{ImU8}(x + 12), 19, 1) + error("Unrecognized field of type `ImGuiTableColumnSettings`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) + f === :WidthOrWeight && return unsafe_load(_getptr(x, f)) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :Index && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsStretch && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -4417,7 +5487,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumnSettings}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) diff --git a/lib/x86_64-apple-darwin14.jl b/lib/x86_64-apple-darwin14.jl index 960145e..ebd0836 100644 --- a/lib/x86_64-apple-darwin14.jl +++ b/lib/x86_64-apple-darwin14.jl @@ -1,4 +1,4 @@ -using CEnum +using CEnum: CEnum, @cenum to_c_type(t::Type) = t to_c_type_pairs(va_list) = map(enumerate(to_c_type.(va_list))) do (ind, type) @@ -32,16 +32,24 @@ struct ImVec4 z::Cfloat w::Cfloat end -function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) +function _getptr(x::Ptr{ImVec4}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) f === :z && return Ptr{Cfloat}(x + 8) f === :w && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImVec4`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) + f === :z && return unsafe_load(_getptr(x, f)) + f === :w && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec4}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -56,7 +64,7 @@ struct ImDrawCmd UserCallback::ImDrawCallback UserCallbackData::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) +function _getptr(x::Ptr{ImDrawCmd}, f::Symbol) f === :ClipRect && return Ptr{ImVec4}(x + 0) f === :TextureId && return Ptr{ImTextureID}(x + 16) f === :VtxOffset && return Ptr{Cuint}(x + 24) @@ -64,11 +72,22 @@ function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) f === :ElemCount && return Ptr{Cuint}(x + 32) f === :UserCallback && return Ptr{ImDrawCallback}(x + 40) f === :UserCallbackData && return Ptr{Ptr{Cvoid}}(x + 48) + error("Unrecognized field of type `ImDrawCmd`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) + f === :ClipRect && return _getptr(x, f) + f === :TextureId && return unsafe_load(_getptr(x, f)) + f === :VtxOffset && return unsafe_load(_getptr(x, f)) + f === :IdxOffset && return unsafe_load(_getptr(x, f)) + f === :ElemCount && return unsafe_load(_getptr(x, f)) + f === :UserCallback && return unsafe_load(_getptr(x, f)) + f === :UserCallbackData && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawCmd}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -95,14 +114,20 @@ struct ImVec2 x::Cfloat y::Cfloat end -function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) +function _getptr(x::Ptr{ImVec2}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) + error("Unrecognized field of type `ImVec2`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec2}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -119,6 +144,24 @@ struct ImVector_ImDrawVert Capacity::Cint Data::Ptr{ImDrawVert} end +function _getptr(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return Ptr{Cint}(x + 0) + f === :Capacity && return Ptr{Cint}(x + 4) + f === :Data && return Ptr{Ptr{ImDrawVert}}(x + 8) + error("Unrecognized field of type `ImVector_ImDrawVert`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return unsafe_load(_getptr(x, f)) + f === :Capacity && return unsafe_load(_getptr(x, f)) + f === :Data && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImVector_ImDrawVert}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImDrawListFlags = Cint @@ -142,7 +185,7 @@ struct ImFontGlyph data::NTuple{40, UInt8} end -function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) +function _getptr(x::Ptr{ImFontGlyph}, f::Symbol) f === :Colored && return (Ptr{Cuint}(x + 0), 0, 1) f === :Visible && return (Ptr{Cuint}(x + 0), 1, 1) f === :Codepoint && return (Ptr{Cuint}(x + 0), 2, 30) @@ -155,6 +198,22 @@ function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) f === :V0 && return Ptr{Cfloat}(x + 28) f === :U1 && return Ptr{Cfloat}(x + 32) f === :V1 && return Ptr{Cfloat}(x + 36) + error("Unrecognized field of type `ImFontGlyph`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) + f === :Colored && return unsafe_load(_getptr(x, f)) + f === :Visible && return unsafe_load(_getptr(x, f)) + f === :Codepoint && return unsafe_load(_getptr(x, f)) + f === :AdvanceX && return unsafe_load(_getptr(x, f)) + f === :X0 && return unsafe_load(_getptr(x, f)) + f === :Y0 && return unsafe_load(_getptr(x, f)) + f === :X1 && return unsafe_load(_getptr(x, f)) + f === :Y1 && return unsafe_load(_getptr(x, f)) + f === :U0 && return unsafe_load(_getptr(x, f)) + f === :V0 && return unsafe_load(_getptr(x, f)) + f === :U1 && return unsafe_load(_getptr(x, f)) + f === :V1 && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -182,7 +241,7 @@ end function Base.setproperty!(x::Ptr{ImFontGlyph}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -270,7 +329,7 @@ function Base.getproperty(x::ImFontConfig, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) +function _getptr(x::Ptr{ImFontConfig}, f::Symbol) f === :FontData && return Ptr{Ptr{Cvoid}}(x + 0) f === :FontDataSize && return Ptr{Cint}(x + 8) f === :FontDataOwnedByAtlas && return Ptr{Bool}(x + 12) @@ -291,11 +350,35 @@ function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) f === :EllipsisChar && return Ptr{ImWchar}(x + 88) f === :Name && return Ptr{NTuple{40, Cchar}}(x + 90) f === :DstFont && return Ptr{Ptr{ImFont}}(x + 136) + error("Unrecognized field of type `ImFontConfig`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) + f === :FontData && return unsafe_load(_getptr(x, f)) + f === :FontDataSize && return unsafe_load(_getptr(x, f)) + f === :FontDataOwnedByAtlas && return unsafe_load(_getptr(x, f)) + f === :FontNo && return unsafe_load(_getptr(x, f)) + f === :SizePixels && return unsafe_load(_getptr(x, f)) + f === :OversampleH && return unsafe_load(_getptr(x, f)) + f === :OversampleV && return unsafe_load(_getptr(x, f)) + f === :PixelSnapH && return unsafe_load(_getptr(x, f)) + f === :GlyphExtraSpacing && return _getptr(x, f) + f === :GlyphOffset && return _getptr(x, f) + f === :GlyphRanges && return unsafe_load(_getptr(x, f)) + f === :GlyphMinAdvanceX && return unsafe_load(_getptr(x, f)) + f === :GlyphMaxAdvanceX && return unsafe_load(_getptr(x, f)) + f === :MergeMode && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :RasterizerMultiply && return unsafe_load(_getptr(x, f)) + f === :RasterizerDensity && return unsafe_load(_getptr(x, f)) + f === :EllipsisChar && return unsafe_load(_getptr(x, f)) + f === :Name && return _getptr(x, f) + f === :DstFont && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontConfig}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImFontConfig @@ -332,7 +415,7 @@ struct ImFontAtlas PackIdMouseCursors::Cint PackIdLines::Cint end -function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) +function _getptr(x::Ptr{ImFontAtlas}, f::Symbol) f === :Flags && return Ptr{ImFontAtlasFlags}(x + 0) f === :TexID && return Ptr{ImTextureID}(x + 8) f === :TexDesiredWidth && return Ptr{Cint}(x + 16) @@ -355,11 +438,37 @@ function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) f === :FontBuilderFlags && return Ptr{Cuint}(x + 1168) f === :PackIdMouseCursors && return Ptr{Cint}(x + 1172) f === :PackIdLines && return Ptr{Cint}(x + 1176) + error("Unrecognized field of type `ImFontAtlas`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :TexID && return unsafe_load(_getptr(x, f)) + f === :TexDesiredWidth && return unsafe_load(_getptr(x, f)) + f === :TexGlyphPadding && return unsafe_load(_getptr(x, f)) + f === :Locked && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :TexReady && return unsafe_load(_getptr(x, f)) + f === :TexPixelsUseColors && return unsafe_load(_getptr(x, f)) + f === :TexPixelsAlpha8 && return unsafe_load(_getptr(x, f)) + f === :TexPixelsRGBA32 && return unsafe_load(_getptr(x, f)) + f === :TexWidth && return unsafe_load(_getptr(x, f)) + f === :TexHeight && return unsafe_load(_getptr(x, f)) + f === :TexUvScale && return _getptr(x, f) + f === :TexUvWhitePixel && return _getptr(x, f) + f === :Fonts && return _getptr(x, f) + f === :CustomRects && return _getptr(x, f) + f === :ConfigData && return _getptr(x, f) + f === :TexUvLines && return _getptr(x, f) + f === :FontBuilderIO && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :PackIdMouseCursors && return unsafe_load(_getptr(x, f)) + f === :PackIdLines && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontAtlas}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -456,7 +565,7 @@ struct ImDrawList _FringeScale::Cfloat _OwnerName::Ptr{Cchar} end -function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) +function _getptr(x::Ptr{ImDrawList}, f::Symbol) f === :CmdBuffer && return Ptr{ImVector_ImDrawCmd}(x + 0) f === :IdxBuffer && return Ptr{ImVector_ImDrawIdx}(x + 16) f === :VtxBuffer && return Ptr{ImVector_ImDrawVert}(x + 32) @@ -472,11 +581,30 @@ function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) f === :_TextureIdStack && return Ptr{ImVector_ImTextureID}(x + 168) f === :_FringeScale && return Ptr{Cfloat}(x + 184) f === :_OwnerName && return Ptr{Ptr{Cchar}}(x + 192) + error("Unrecognized field of type `ImDrawList`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) + f === :CmdBuffer && return _getptr(x, f) + f === :IdxBuffer && return _getptr(x, f) + f === :VtxBuffer && return _getptr(x, f) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :_VtxCurrentIdx && return unsafe_load(_getptr(x, f)) + f === :_Data && return unsafe_load(_getptr(x, f)) + f === :_VtxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_IdxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_Path && return _getptr(x, f) + f === :_CmdHeader && return _getptr(x, f) + f === :_Splitter && return _getptr(x, f) + f === :_ClipRectStack && return _getptr(x, f) + f === :_TextureIdStack && return _getptr(x, f) + f === :_FringeScale && return unsafe_load(_getptr(x, f)) + f === :_OwnerName && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawList}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -515,7 +643,7 @@ function Base.getproperty(x::ImGuiViewport, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) +function _getptr(x::Ptr{ImGuiViewport}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiViewportFlags}(x + 4) f === :Pos && return Ptr{ImVec2}(x + 8) @@ -533,11 +661,32 @@ function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) f === :PlatformRequestMove && return Ptr{Bool}(x + 89) f === :PlatformRequestResize && return Ptr{Bool}(x + 90) f === :PlatformRequestClose && return Ptr{Bool}(x + 91) + error("Unrecognized field of type `ImGuiViewport`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :ParentViewportId && return unsafe_load(_getptr(x, f)) + f === :DrawData && return unsafe_load(_getptr(x, f)) + f === :RendererUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) + f === :PlatformHandleRaw && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowCreated && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestMove && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestResize && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestClose && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiViewport}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImDrawData @@ -551,7 +700,7 @@ struct ImDrawData FramebufferScale::ImVec2 OwnerViewport::Ptr{ImGuiViewport} end -function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) +function _getptr(x::Ptr{ImDrawData}, f::Symbol) f === :Valid && return Ptr{Bool}(x + 0) f === :CmdListsCount && return Ptr{Cint}(x + 4) f === :TotalIdxCount && return Ptr{Cint}(x + 8) @@ -561,11 +710,24 @@ function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) f === :DisplaySize && return Ptr{ImVec2}(x + 40) f === :FramebufferScale && return Ptr{ImVec2}(x + 48) f === :OwnerViewport && return Ptr{Ptr{ImGuiViewport}}(x + 56) + error("Unrecognized field of type `ImDrawData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) + f === :Valid && return unsafe_load(_getptr(x, f)) + f === :CmdListsCount && return unsafe_load(_getptr(x, f)) + f === :TotalIdxCount && return unsafe_load(_getptr(x, f)) + f === :TotalVtxCount && return unsafe_load(_getptr(x, f)) + f === :CmdLists && return _getptr(x, f) + f === :DisplayPos && return _getptr(x, f) + f === :DisplaySize && return _getptr(x, f) + f === :FramebufferScale && return _getptr(x, f) + f === :OwnerViewport && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -602,6 +764,26 @@ struct ImGuiKeyData DownDurationPrev::Cfloat AnalogValue::Cfloat end +function _getptr(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return Ptr{Bool}(x + 0) + f === :DownDuration && return Ptr{Cfloat}(x + 4) + f === :DownDurationPrev && return Ptr{Cfloat}(x + 8) + f === :AnalogValue && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImGuiKeyData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return unsafe_load(_getptr(x, f)) + f === :DownDuration && return unsafe_load(_getptr(x, f)) + f === :DownDurationPrev && return unsafe_load(_getptr(x, f)) + f === :AnalogValue && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImGuiKeyData}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImU16 = Cushort @@ -715,7 +897,7 @@ function Base.getproperty(x::ImGuiIO, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiIO}, f::Symbol) f === :ConfigFlags && return Ptr{ImGuiConfigFlags}(x + 0) f === :BackendFlags && return Ptr{ImGuiBackendFlags}(x + 4) f === :DisplaySize && return Ptr{ImVec2}(x + 8) @@ -816,11 +998,115 @@ function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) f === :BackendUsingLegacyNavInputArray && return Ptr{Bool}(x + 3003) f === :InputQueueSurrogate && return Ptr{ImWchar16}(x + 3004) f === :InputQueueCharacters && return Ptr{ImVector_ImWchar}(x + 3008) + error("Unrecognized field of type `ImGuiIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) + f === :ConfigFlags && return unsafe_load(_getptr(x, f)) + f === :BackendFlags && return unsafe_load(_getptr(x, f)) + f === :DisplaySize && return _getptr(x, f) + f === :DeltaTime && return unsafe_load(_getptr(x, f)) + f === :IniSavingRate && return unsafe_load(_getptr(x, f)) + f === :IniFilename && return unsafe_load(_getptr(x, f)) + f === :LogFilename && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Fonts && return unsafe_load(_getptr(x, f)) + f === :FontGlobalScale && return unsafe_load(_getptr(x, f)) + f === :FontAllowUserScaling && return unsafe_load(_getptr(x, f)) + f === :FontDefault && return unsafe_load(_getptr(x, f)) + f === :DisplayFramebufferScale && return _getptr(x, f) + f === :ConfigDockingNoSplit && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingWithShift && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingAlwaysTabBar && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingTransparentPayload && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoAutoMerge && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoTaskBarIcon && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDecoration && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDefaultParent && return unsafe_load(_getptr(x, f)) + f === :MouseDrawCursor && return unsafe_load(_getptr(x, f)) + f === :ConfigMacOSXBehaviors && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTrickleEventQueue && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextCursorBlink && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextEnterKeepActive && return unsafe_load(_getptr(x, f)) + f === :ConfigDragClickToInputText && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsResizeFromEdges && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsMoveFromTitleBarOnly && return unsafe_load(_getptr(x, f)) + f === :ConfigMemoryCompactTimer && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickTime && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickMaxDist && return unsafe_load(_getptr(x, f)) + f === :MouseDragThreshold && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatDelay && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatRate && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIsDebuggerPresent && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueOnce && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueLoop && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIgnoreFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIniSettings && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformName && return unsafe_load(_getptr(x, f)) + f === :BackendRendererName && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformUserData && return unsafe_load(_getptr(x, f)) + f === :BackendRendererUserData && return unsafe_load(_getptr(x, f)) + f === :BackendLanguageUserData && return unsafe_load(_getptr(x, f)) + f === :GetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :SetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :ClipboardUserData && return unsafe_load(_getptr(x, f)) + f === :SetPlatformImeDataFn && return unsafe_load(_getptr(x, f)) + f === :PlatformLocaleDecimalPoint && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouse && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboard && return unsafe_load(_getptr(x, f)) + f === :WantTextInput && return unsafe_load(_getptr(x, f)) + f === :WantSetMousePos && return unsafe_load(_getptr(x, f)) + f === :WantSaveIniSettings && return unsafe_load(_getptr(x, f)) + f === :NavActive && return unsafe_load(_getptr(x, f)) + f === :NavVisible && return unsafe_load(_getptr(x, f)) + f === :Framerate && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderVertices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderIndices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderWindows && return unsafe_load(_getptr(x, f)) + f === :MetricsActiveWindows && return unsafe_load(_getptr(x, f)) + f === :MouseDelta && return _getptr(x, f) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseDown && return _getptr(x, f) + f === :MouseWheel && return unsafe_load(_getptr(x, f)) + f === :MouseWheelH && return unsafe_load(_getptr(x, f)) + f === :MouseSource && return unsafe_load(_getptr(x, f)) + f === :MouseHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :KeyCtrl && return unsafe_load(_getptr(x, f)) + f === :KeyShift && return unsafe_load(_getptr(x, f)) + f === :KeyAlt && return unsafe_load(_getptr(x, f)) + f === :KeySuper && return unsafe_load(_getptr(x, f)) + f === :KeyMods && return unsafe_load(_getptr(x, f)) + f === :KeysData && return _getptr(x, f) + f === :WantCaptureMouseUnlessPopupClose && return unsafe_load(_getptr(x, f)) + f === :MousePosPrev && return _getptr(x, f) + f === :MouseClickedPos && return _getptr(x, f) + f === :MouseClickedTime && return _getptr(x, f) + f === :MouseClicked && return _getptr(x, f) + f === :MouseDoubleClicked && return _getptr(x, f) + f === :MouseClickedCount && return _getptr(x, f) + f === :MouseClickedLastCount && return _getptr(x, f) + f === :MouseReleased && return _getptr(x, f) + f === :MouseDownOwned && return _getptr(x, f) + f === :MouseDownOwnedUnlessPopupClose && return _getptr(x, f) + f === :MouseWheelRequestAxisSwap && return unsafe_load(_getptr(x, f)) + f === :MouseCtrlLeftAsRightClick && return unsafe_load(_getptr(x, f)) + f === :MouseDownDuration && return _getptr(x, f) + f === :MouseDownDurationPrev && return _getptr(x, f) + f === :MouseDragMaxDistanceAbs && return _getptr(x, f) + f === :MouseDragMaxDistanceSqr && return _getptr(x, f) + f === :PenPressure && return unsafe_load(_getptr(x, f)) + f === :AppFocusLost && return unsafe_load(_getptr(x, f)) + f === :AppAcceptingEvents && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyKeyArrays && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyNavInputArray && return unsafe_load(_getptr(x, f)) + f === :InputQueueSurrogate && return unsafe_load(_getptr(x, f)) + f === :InputQueueCharacters && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImGuiPlatformMonitor @@ -831,18 +1117,28 @@ struct ImGuiPlatformMonitor DpiScale::Cfloat PlatformHandle::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) f === :MainPos && return Ptr{ImVec2}(x + 0) f === :MainSize && return Ptr{ImVec2}(x + 8) f === :WorkPos && return Ptr{ImVec2}(x + 16) f === :WorkSize && return Ptr{ImVec2}(x + 24) f === :DpiScale && return Ptr{Cfloat}(x + 32) f === :PlatformHandle && return Ptr{Ptr{Cvoid}}(x + 40) + error("Unrecognized field of type `ImGuiPlatformMonitor`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) + f === :MainPos && return _getptr(x, f) + f === :MainSize && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformMonitor}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -885,7 +1181,7 @@ struct ImGuiPlatformIO Monitors::ImVector_ImGuiPlatformMonitor Viewports::ImVector_ImGuiViewportPtr end -function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Platform_CreateWindow && return Ptr{Ptr{Cvoid}}(x + 0) f === :Platform_DestroyWindow && return Ptr{Ptr{Cvoid}}(x + 8) f === :Platform_ShowWindow && return Ptr{Ptr{Cvoid}}(x + 16) @@ -911,11 +1207,40 @@ function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Renderer_SwapBuffers && return Ptr{Ptr{Cvoid}}(x + 176) f === :Monitors && return Ptr{ImVector_ImGuiPlatformMonitor}(x + 184) f === :Viewports && return Ptr{ImVector_ImGuiViewportPtr}(x + 200) + error("Unrecognized field of type `ImGuiPlatformIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) + f === :Platform_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_ShowWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowMinimized && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowTitle && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowAlpha && return unsafe_load(_getptr(x, f)) + f === :Platform_UpdateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowDpiScale && return unsafe_load(_getptr(x, f)) + f === :Platform_OnChangedViewport && return unsafe_load(_getptr(x, f)) + f === :Platform_CreateVkSurface && return unsafe_load(_getptr(x, f)) + f === :Renderer_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Renderer_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Monitors && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -985,7 +1310,7 @@ struct ImGuiStyle HoverFlagsForTooltipMouse::ImGuiHoveredFlags HoverFlagsForTooltipNav::ImGuiHoveredFlags end -function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyle}, f::Symbol) f === :Alpha && return Ptr{Cfloat}(x + 0) f === :DisabledAlpha && return Ptr{Cfloat}(x + 4) f === :WindowPadding && return Ptr{ImVec2}(x + 8) @@ -1039,11 +1364,68 @@ function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) f === :HoverDelayNormal && return Ptr{Cfloat}(x + 1128) f === :HoverFlagsForTooltipMouse && return Ptr{ImGuiHoveredFlags}(x + 1132) f === :HoverFlagsForTooltipNav && return Ptr{ImGuiHoveredFlags}(x + 1136) + error("Unrecognized field of type `ImGuiStyle`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) + f === :Alpha && return unsafe_load(_getptr(x, f)) + f === :DisabledAlpha && return unsafe_load(_getptr(x, f)) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :WindowMinSize && return _getptr(x, f) + f === :WindowTitleAlign && return _getptr(x, f) + f === :WindowMenuButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ChildRounding && return unsafe_load(_getptr(x, f)) + f === :ChildBorderSize && return unsafe_load(_getptr(x, f)) + f === :PopupRounding && return unsafe_load(_getptr(x, f)) + f === :PopupBorderSize && return unsafe_load(_getptr(x, f)) + f === :FramePadding && return _getptr(x, f) + f === :FrameRounding && return unsafe_load(_getptr(x, f)) + f === :FrameBorderSize && return unsafe_load(_getptr(x, f)) + f === :ItemSpacing && return _getptr(x, f) + f === :ItemInnerSpacing && return _getptr(x, f) + f === :CellPadding && return _getptr(x, f) + f === :TouchExtraPadding && return _getptr(x, f) + f === :IndentSpacing && return unsafe_load(_getptr(x, f)) + f === :ColumnsMinSpacing && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSize && return unsafe_load(_getptr(x, f)) + f === :ScrollbarRounding && return unsafe_load(_getptr(x, f)) + f === :GrabMinSize && return unsafe_load(_getptr(x, f)) + f === :GrabRounding && return unsafe_load(_getptr(x, f)) + f === :LogSliderDeadzone && return unsafe_load(_getptr(x, f)) + f === :TabRounding && return unsafe_load(_getptr(x, f)) + f === :TabBorderSize && return unsafe_load(_getptr(x, f)) + f === :TabMinWidthForCloseButton && return unsafe_load(_getptr(x, f)) + f === :TabBarBorderSize && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersAngle && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersTextAlign && return _getptr(x, f) + f === :ColorButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ButtonTextAlign && return _getptr(x, f) + f === :SelectableTextAlign && return _getptr(x, f) + f === :SeparatorTextBorderSize && return unsafe_load(_getptr(x, f)) + f === :SeparatorTextAlign && return _getptr(x, f) + f === :SeparatorTextPadding && return _getptr(x, f) + f === :DisplayWindowPadding && return _getptr(x, f) + f === :DisplaySafeAreaPadding && return _getptr(x, f) + f === :DockingSeparatorSize && return unsafe_load(_getptr(x, f)) + f === :MouseCursorScale && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLines && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLinesUseTex && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedFill && return unsafe_load(_getptr(x, f)) + f === :CurveTessellationTol && return unsafe_load(_getptr(x, f)) + f === :CircleTessellationMaxError && return unsafe_load(_getptr(x, f)) + f === :Colors && return _getptr(x, f) + f === :HoverStationaryDelay && return unsafe_load(_getptr(x, f)) + f === :HoverDelayShort && return unsafe_load(_getptr(x, f)) + f === :HoverDelayNormal && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipMouse && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipNav && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiStyle}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -1071,7 +1453,7 @@ struct ImGuiInputEvent data::NTuple{28, UInt8} end -function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) +function _getptr(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Type && return Ptr{ImGuiInputEventType}(x + 0) f === :Source && return Ptr{ImGuiInputSource}(x + 4) f === :EventId && return Ptr{ImU32}(x + 8) @@ -1083,6 +1465,21 @@ function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Text && return Ptr{ImGuiInputEventText}(x + 12) f === :AppFocused && return Ptr{ImGuiInputEventAppFocused}(x + 12) f === :AddedByTestEngine && return Ptr{Bool}(x + 24) + error("Unrecognized field of type `ImGuiInputEvent`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) + f === :Type && return unsafe_load(_getptr(x, f)) + f === :Source && return unsafe_load(_getptr(x, f)) + f === :EventId && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseWheel && return _getptr(x, f) + f === :MouseButton && return _getptr(x, f) + f === :MouseViewport && return _getptr(x, f) + f === :Key && return _getptr(x, f) + f === :Text && return _getptr(x, f) + f === :AppFocused && return _getptr(x, f) + f === :AddedByTestEngine && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1094,7 +1491,7 @@ function Base.getproperty(x::ImGuiInputEvent, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiInputEvent}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiInputEvent @@ -1202,11 +1599,19 @@ struct ImGuiStoragePair data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) +function _getptr(x::Ptr{ImGuiStoragePair}, f::Symbol) f === :key && return Ptr{ImGuiID}(x + 0) f === :val_i && return Ptr{Cint}(x + 8) f === :val_f && return Ptr{Cfloat}(x + 8) f === :val_p && return Ptr{Ptr{Cvoid}}(x + 8) + error("Unrecognized field of type `ImGuiStoragePair`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) + f === :key && return unsafe_load(_getptr(x, f)) + f === :val_i && return unsafe_load(_getptr(x, f)) + f === :val_f && return unsafe_load(_getptr(x, f)) + f === :val_p && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1218,7 +1623,7 @@ function Base.getproperty(x::ImGuiStoragePair, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStoragePair}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStoragePair @@ -1426,7 +1831,7 @@ struct ImGuiDockNode data::NTuple{208, UInt8} end -function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) +function _getptr(x::Ptr{ImGuiDockNode}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :SharedFlags && return Ptr{ImGuiDockNodeFlags}(x + 4) f === :LocalFlags && return Ptr{ImGuiDockNodeFlags}(x + 8) @@ -1469,6 +1874,52 @@ function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) f === :WantMouseMove && return (Ptr{Bool}(x + 200), 17, 1) f === :WantHiddenTabBarUpdate && return (Ptr{Bool}(x + 200), 18, 1) f === :WantHiddenTabBarToggle && return (Ptr{Bool}(x + 200), 19, 1) + error("Unrecognized field of type `ImGuiDockNode`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :SharedFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlagsInWindows && return unsafe_load(_getptr(x, f)) + f === :MergedFlags && return unsafe_load(_getptr(x, f)) + f === :State && return unsafe_load(_getptr(x, f)) + f === :ParentNode && return unsafe_load(_getptr(x, f)) + f === :ChildNodes && return _getptr(x, f) + f === :Windows && return _getptr(x, f) + f === :TabBar && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeRef && return _getptr(x, f) + f === :SplitAxis && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :LastBgColor && return unsafe_load(_getptr(x, f)) + f === :HostWindow && return unsafe_load(_getptr(x, f)) + f === :VisibleWindow && return unsafe_load(_getptr(x, f)) + f === :CentralNode && return unsafe_load(_getptr(x, f)) + f === :OnlyNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :CountNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :LastFrameAlive && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameFocused && return unsafe_load(_getptr(x, f)) + f === :LastFocusedNodeId && return unsafe_load(_getptr(x, f)) + f === :SelectedTabId && return unsafe_load(_getptr(x, f)) + f === :WantCloseTabId && return unsafe_load(_getptr(x, f)) + f === :RefViewportId && return unsafe_load(_getptr(x, f)) + f === :AuthorityForPos && return unsafe_load(_getptr(x, f)) + f === :AuthorityForSize && return unsafe_load(_getptr(x, f)) + f === :AuthorityForViewport && return unsafe_load(_getptr(x, f)) + f === :IsVisible && return unsafe_load(_getptr(x, f)) + f === :IsFocused && return unsafe_load(_getptr(x, f)) + f === :IsBgDrawnThisFrame && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :HasWindowMenuButton && return unsafe_load(_getptr(x, f)) + f === :HasCentralNodeChild && return unsafe_load(_getptr(x, f)) + f === :WantCloseAll && return unsafe_load(_getptr(x, f)) + f === :WantLockSizeOnce && return unsafe_load(_getptr(x, f)) + f === :WantMouseMove && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarUpdate && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarToggle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1496,7 +1947,7 @@ end function Base.setproperty!(x::Ptr{ImGuiDockNode}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1521,7 +1972,7 @@ struct ImGuiWindow data::NTuple{1160, UInt8} end -function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) +function _getptr(x::Ptr{ImGuiWindow}, f::Symbol) f === :Ctx && return Ptr{Ptr{ImGuiContext}}(x + 0) f === :Name && return Ptr{Ptr{Cchar}}(x + 8) f === :ID && return Ptr{ImGuiID}(x + 16) @@ -1646,6 +2097,134 @@ function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) f === :DockId && return Ptr{ImGuiID}(x + 1136) f === :DockTabItemStatusFlags && return Ptr{ImGuiItemStatusFlags}(x + 1140) f === :DockTabItemRect && return Ptr{ImRect}(x + 1144) + error("Unrecognized field of type `ImGuiWindow`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :Name && return unsafe_load(_getptr(x, f)) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :FlagsPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ChildFlags && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :Viewport && return unsafe_load(_getptr(x, f)) + f === :ViewportId && return unsafe_load(_getptr(x, f)) + f === :ViewportPos && return _getptr(x, f) + f === :ViewportAllowPlatformMonitorExtend && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeFull && return _getptr(x, f) + f === :ContentSize && return _getptr(x, f) + f === :ContentSizeIdeal && return _getptr(x, f) + f === :ContentSizeExplicit && return _getptr(x, f) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :TitleBarHeight && return unsafe_load(_getptr(x, f)) + f === :MenuBarHeight && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX2 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY2 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeY1 && return unsafe_load(_getptr(x, f)) + f === :NameBufLen && return unsafe_load(_getptr(x, f)) + f === :MoveId && return unsafe_load(_getptr(x, f)) + f === :TabId && return unsafe_load(_getptr(x, f)) + f === :ChildId && return unsafe_load(_getptr(x, f)) + f === :PopupId && return unsafe_load(_getptr(x, f)) + f === :Scroll && return _getptr(x, f) + f === :ScrollMax && return _getptr(x, f) + f === :ScrollTarget && return _getptr(x, f) + f === :ScrollTargetCenterRatio && return _getptr(x, f) + f === :ScrollTargetEdgeSnapDist && return _getptr(x, f) + f === :ScrollbarSizes && return _getptr(x, f) + f === :ScrollbarX && return unsafe_load(_getptr(x, f)) + f === :ScrollbarY && return unsafe_load(_getptr(x, f)) + f === :ViewportOwned && return unsafe_load(_getptr(x, f)) + f === :Active && return unsafe_load(_getptr(x, f)) + f === :WasActive && return unsafe_load(_getptr(x, f)) + f === :WriteAccessed && return unsafe_load(_getptr(x, f)) + f === :Collapsed && return unsafe_load(_getptr(x, f)) + f === :WantCollapseToggle && return unsafe_load(_getptr(x, f)) + f === :SkipItems && return unsafe_load(_getptr(x, f)) + f === :SkipRefresh && return unsafe_load(_getptr(x, f)) + f === :Appearing && return unsafe_load(_getptr(x, f)) + f === :Hidden && return unsafe_load(_getptr(x, f)) + f === :IsFallbackWindow && return unsafe_load(_getptr(x, f)) + f === :IsExplicitChild && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHovered && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHeld && return unsafe_load(_getptr(x, f)) + f === :BeginCount && return unsafe_load(_getptr(x, f)) + f === :BeginCountPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinParent && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinContext && return unsafe_load(_getptr(x, f)) + f === :FocusOrder && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesX && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesY && return unsafe_load(_getptr(x, f)) + f === :AutoFitOnlyGrows && return unsafe_load(_getptr(x, f)) + f === :AutoPosLastDirection && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCanSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCannotSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesForRenderOnly && return unsafe_load(_getptr(x, f)) + f === :DisableInputsFrames && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowSizeAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowCollapsedAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowDockAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosVal && return _getptr(x, f) + f === :SetWindowPosPivot && return _getptr(x, f) + f === :IDStack && return _getptr(x, f) + f === :DC && return _getptr(x, f) + f === :OuterRectClipped && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :ParentWorkRect && return _getptr(x, f) + f === :ClipRect && return _getptr(x, f) + f === :ContentRegionRect && return _getptr(x, f) + f === :HitTestHoleSize && return _getptr(x, f) + f === :HitTestHoleOffset && return _getptr(x, f) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameJustFocused && return unsafe_load(_getptr(x, f)) + f === :LastTimeActive && return unsafe_load(_getptr(x, f)) + f === :ItemWidthDefault && return unsafe_load(_getptr(x, f)) + f === :StateStorage && return _getptr(x, f) + f === :ColumnsStorage && return _getptr(x, f) + f === :FontWindowScale && return unsafe_load(_getptr(x, f)) + f === :FontDpiScale && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :DrawList && return unsafe_load(_getptr(x, f)) + f === :DrawListInst && return _getptr(x, f) + f === :ParentWindow && return unsafe_load(_getptr(x, f)) + f === :ParentWindowInBeginStack && return unsafe_load(_getptr(x, f)) + f === :RootWindow && return unsafe_load(_getptr(x, f)) + f === :RootWindowPopupTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowDockTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowForTitleBarHighlight && return unsafe_load(_getptr(x, f)) + f === :RootWindowForNav && return unsafe_load(_getptr(x, f)) + f === :ParentWindowForFocusRoute && return unsafe_load(_getptr(x, f)) + f === :NavLastChildNavWindow && return unsafe_load(_getptr(x, f)) + f === :NavLastIds && return _getptr(x, f) + f === :NavRectRel && return _getptr(x, f) + f === :NavPreferredScoringPosRel && return _getptr(x, f) + f === :NavRootFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListIdxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListVtxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :DockIsActive && return unsafe_load(_getptr(x, f)) + f === :DockNodeIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabWantClose && return unsafe_load(_getptr(x, f)) + f === :DockOrder && return unsafe_load(_getptr(x, f)) + f === :DockStyle && return _getptr(x, f) + f === :DockNode && return unsafe_load(_getptr(x, f)) + f === :DockNodeAsHost && return unsafe_load(_getptr(x, f)) + f === :DockId && return unsafe_load(_getptr(x, f)) + f === :DockTabItemStatusFlags && return unsafe_load(_getptr(x, f)) + f === :DockTabItemRect && return _getptr(x, f) return getfield(x, f) end @@ -1673,7 +2252,7 @@ end function Base.setproperty!(x::Ptr{ImGuiWindow}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1841,10 +2420,17 @@ struct ImGuiStyleMod data::NTuple{12, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyleMod}, f::Symbol) f === :VarIdx && return Ptr{ImGuiStyleVar}(x + 0) f === :BackupInt && return Ptr{NTuple{2, Cint}}(x + 4) f === :BackupFloat && return Ptr{NTuple{2, Cfloat}}(x + 4) + error("Unrecognized field of type `ImGuiStyleMod`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) + f === :VarIdx && return unsafe_load(_getptr(x, f)) + f === :BackupInt && return _getptr(x, f) + f === :BackupFloat && return _getptr(x, f) return getfield(x, f) end @@ -1856,7 +2442,7 @@ function Base.getproperty(x::ImGuiStyleMod, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStyleMod}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStyleMod @@ -2231,7 +2817,7 @@ struct ImGuiTableColumn data::NTuple{112, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :Flags && return Ptr{ImGuiTableColumnFlags}(x + 0) f === :WidthGiven && return Ptr{Cfloat}(x + 4) f === :MinX && return Ptr{Cfloat}(x + 8) @@ -2273,6 +2859,51 @@ function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :SortDirectionsAvailCount && return (Ptr{ImU8}(x + 108), 10, 2) f === :SortDirectionsAvailMask && return (Ptr{ImU8}(x + 108), 12, 4) f === :SortDirectionsAvailList && return Ptr{ImU8}(x + 110) + error("Unrecognized field of type `ImGuiTableColumn`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :WidthGiven && return unsafe_load(_getptr(x, f)) + f === :MinX && return unsafe_load(_getptr(x, f)) + f === :MaxX && return unsafe_load(_getptr(x, f)) + f === :WidthRequest && return unsafe_load(_getptr(x, f)) + f === :WidthAuto && return unsafe_load(_getptr(x, f)) + f === :StretchWeight && return unsafe_load(_getptr(x, f)) + f === :InitStretchWeightOrWidth && return unsafe_load(_getptr(x, f)) + f === :ClipRect && return _getptr(x, f) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :WorkMinX && return unsafe_load(_getptr(x, f)) + f === :WorkMaxX && return unsafe_load(_getptr(x, f)) + f === :ItemWidth && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXFrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXUnfrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersUsed && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersIdeal && return unsafe_load(_getptr(x, f)) + f === :NameOffset && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IndexWithinEnabledSet && return unsafe_load(_getptr(x, f)) + f === :PrevEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :NextEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :DrawChannelFrozen && return unsafe_load(_getptr(x, f)) + f === :DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabledNextFrame && return unsafe_load(_getptr(x, f)) + f === :IsVisibleX && return unsafe_load(_getptr(x, f)) + f === :IsVisibleY && return unsafe_load(_getptr(x, f)) + f === :IsRequestOutput && return unsafe_load(_getptr(x, f)) + f === :IsSkipItems && return unsafe_load(_getptr(x, f)) + f === :IsPreserveWidthAuto && return unsafe_load(_getptr(x, f)) + f === :NavLayerCurrent && return unsafe_load(_getptr(x, f)) + f === :AutoFitQueue && return unsafe_load(_getptr(x, f)) + f === :CannotSkipItemsQueue && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailCount && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailMask && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailList && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2300,7 +2931,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumn}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2387,7 +3018,7 @@ struct ImGuiTable data::NTuple{592, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) +function _getptr(x::Ptr{ImGuiTable}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiTableFlags}(x + 4) f === :RawData && return Ptr{Ptr{Cvoid}}(x + 8) @@ -2500,6 +3131,122 @@ function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) f === :HasScrollbarYPrev && return Ptr{Bool}(x + 583) f === :MemoryCompacted && return Ptr{Bool}(x + 584) f === :HostSkipItems && return Ptr{Bool}(x + 585) + error("Unrecognized field of type `ImGuiTable`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :RawData && return unsafe_load(_getptr(x, f)) + f === :TempData && return unsafe_load(_getptr(x, f)) + f === :Columns && return _getptr(x, f) + f === :DisplayOrderToIndex && return _getptr(x, f) + f === :RowCellData && return _getptr(x, f) + f === :EnabledMaskByDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :EnabledMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :VisibleMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :SettingsLoadedFlags && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :ColumnsCount && return unsafe_load(_getptr(x, f)) + f === :CurrentRow && return unsafe_load(_getptr(x, f)) + f === :CurrentColumn && return unsafe_load(_getptr(x, f)) + f === :InstanceCurrent && return unsafe_load(_getptr(x, f)) + f === :InstanceInteracted && return unsafe_load(_getptr(x, f)) + f === :RowPosY1 && return unsafe_load(_getptr(x, f)) + f === :RowPosY2 && return unsafe_load(_getptr(x, f)) + f === :RowMinHeight && return unsafe_load(_getptr(x, f)) + f === :RowCellPaddingY && return unsafe_load(_getptr(x, f)) + f === :RowTextBaseline && return unsafe_load(_getptr(x, f)) + f === :RowIndentOffsetX && return unsafe_load(_getptr(x, f)) + f === :RowFlags && return unsafe_load(_getptr(x, f)) + f === :LastRowFlags && return unsafe_load(_getptr(x, f)) + f === :RowBgColorCounter && return unsafe_load(_getptr(x, f)) + f === :RowBgColor && return _getptr(x, f) + f === :BorderColorStrong && return unsafe_load(_getptr(x, f)) + f === :BorderColorLight && return unsafe_load(_getptr(x, f)) + f === :BorderX1 && return unsafe_load(_getptr(x, f)) + f === :BorderX2 && return unsafe_load(_getptr(x, f)) + f === :HostIndentX && return unsafe_load(_getptr(x, f)) + f === :MinColumnWidth && return unsafe_load(_getptr(x, f)) + f === :OuterPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX1 && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX2 && return unsafe_load(_getptr(x, f)) + f === :InnerWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsGivenWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsAutoFitWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsStretchSumWeights && return unsafe_load(_getptr(x, f)) + f === :ResizedColumnNextWidth && return unsafe_load(_getptr(x, f)) + f === :ResizeLockMinContentsX2 && return unsafe_load(_getptr(x, f)) + f === :RefScale && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersHeight && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersSlope && return unsafe_load(_getptr(x, f)) + f === :OuterRect && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :BgClipRect && return _getptr(x, f) + f === :Bg0ClipRectForDrawCmd && return _getptr(x, f) + f === :Bg2ClipRectForDrawCmd && return _getptr(x, f) + f === :HostClipRect && return _getptr(x, f) + f === :HostBackupInnerClipRect && return _getptr(x, f) + f === :OuterWindow && return unsafe_load(_getptr(x, f)) + f === :InnerWindow && return unsafe_load(_getptr(x, f)) + f === :ColumnsNames && return _getptr(x, f) + f === :DrawSplitter && return unsafe_load(_getptr(x, f)) + f === :InstanceDataFirst && return _getptr(x, f) + f === :InstanceDataExtra && return _getptr(x, f) + f === :SortSpecsSingle && return _getptr(x, f) + f === :SortSpecsMulti && return _getptr(x, f) + f === :SortSpecs && return _getptr(x, f) + f === :SortSpecsCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledFixedCount && return unsafe_load(_getptr(x, f)) + f === :DeclColumnsCount && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersCount && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBody && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBorder && return unsafe_load(_getptr(x, f)) + f === :HighlightColumnHeader && return unsafe_load(_getptr(x, f)) + f === :AutoFitSingleColumn && return unsafe_load(_getptr(x, f)) + f === :ResizedColumn && return unsafe_load(_getptr(x, f)) + f === :LastResizedColumn && return unsafe_load(_getptr(x, f)) + f === :HeldHeaderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumnDir && return unsafe_load(_getptr(x, f)) + f === :LeftMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :LeftMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :ContextPopupColumn && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsCount && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsCount && return unsafe_load(_getptr(x, f)) + f === :RowCellDataCurrent && return unsafe_load(_getptr(x, f)) + f === :DummyDrawChannel && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsLayoutLocked && return unsafe_load(_getptr(x, f)) + f === :IsInsideRow && return unsafe_load(_getptr(x, f)) + f === :IsInitializing && return unsafe_load(_getptr(x, f)) + f === :IsSortSpecsDirty && return unsafe_load(_getptr(x, f)) + f === :IsUsingHeaders && return unsafe_load(_getptr(x, f)) + f === :IsContextPopupOpen && return unsafe_load(_getptr(x, f)) + f === :DisableDefaultContextMenu && return unsafe_load(_getptr(x, f)) + f === :IsSettingsRequestLoad && return unsafe_load(_getptr(x, f)) + f === :IsSettingsDirty && return unsafe_load(_getptr(x, f)) + f === :IsDefaultDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IsResetAllRequest && return unsafe_load(_getptr(x, f)) + f === :IsResetDisplayOrderRequest && return unsafe_load(_getptr(x, f)) + f === :IsUnfrozenRows && return unsafe_load(_getptr(x, f)) + f === :IsDefaultSizingPolicy && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdAliveBeforeTable && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdInTable && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYCurr && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYPrev && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :HostSkipItems && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2527,7 +3274,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTable}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2832,12 +3579,21 @@ struct ImGuiStackLevelInfo data::NTuple{64, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) +function _getptr(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :QueryFrameCount && return Ptr{ImS8}(x + 4) f === :QuerySuccess && return Ptr{Bool}(x + 5) f === :DataType && return (Ptr{ImGuiDataType}(x + 4), 16, 8) f === :Desc && return Ptr{NTuple{57, Cchar}}(x + 7) + error("Unrecognized field of type `ImGuiStackLevelInfo`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :QueryFrameCount && return unsafe_load(_getptr(x, f)) + f === :QuerySuccess && return unsafe_load(_getptr(x, f)) + f === :DataType && return unsafe_load(_getptr(x, f)) + f === :Desc && return _getptr(x, f) return getfield(x, f) end @@ -2865,7 +3621,7 @@ end function Base.setproperty!(x::Ptr{ImGuiStackLevelInfo}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2916,7 +3672,7 @@ struct ImGuiContext data::NTuple{14184, UInt8} end -function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) +function _getptr(x::Ptr{ImGuiContext}, f::Symbol) f === :Initialized && return Ptr{Bool}(x + 0) f === :FontAtlasOwnedByContext && return Ptr{Bool}(x + 1) f === :IO && return Ptr{ImGuiIO}(x + 8) @@ -3207,6 +3963,300 @@ function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) f === :WantTextInputNextFrame && return Ptr{Cint}(x + 14100) f === :TempBuffer && return Ptr{ImVector_char}(x + 14104) f === :TempKeychordName && return Ptr{NTuple{64, Cchar}}(x + 14120) + error("Unrecognized field of type `ImGuiContext`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) + f === :Initialized && return unsafe_load(_getptr(x, f)) + f === :FontAtlasOwnedByContext && return unsafe_load(_getptr(x, f)) + f === :IO && return _getptr(x, f) + f === :PlatformIO && return _getptr(x, f) + f === :Style && return _getptr(x, f) + f === :ConfigFlagsCurrFrame && return unsafe_load(_getptr(x, f)) + f === :ConfigFlagsLastFrame && return unsafe_load(_getptr(x, f)) + f === :Font && return unsafe_load(_getptr(x, f)) + f === :FontSize && return unsafe_load(_getptr(x, f)) + f === :FontBaseSize && return unsafe_load(_getptr(x, f)) + f === :CurrentDpiScale && return unsafe_load(_getptr(x, f)) + f === :DrawListSharedData && return _getptr(x, f) + f === :Time && return unsafe_load(_getptr(x, f)) + f === :FrameCount && return unsafe_load(_getptr(x, f)) + f === :FrameCountEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountPlatformEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountRendered && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScope && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScopeWithImplicitWindow && return unsafe_load(_getptr(x, f)) + f === :WithinEndChild && return unsafe_load(_getptr(x, f)) + f === :GcCompactAll && return unsafe_load(_getptr(x, f)) + f === :TestEngineHookItems && return unsafe_load(_getptr(x, f)) + f === :TestEngine && return unsafe_load(_getptr(x, f)) + f === :InputEventsQueue && return _getptr(x, f) + f === :InputEventsTrail && return _getptr(x, f) + f === :InputEventsNextMouseSource && return unsafe_load(_getptr(x, f)) + f === :InputEventsNextEventId && return unsafe_load(_getptr(x, f)) + f === :Windows && return _getptr(x, f) + f === :WindowsFocusOrder && return _getptr(x, f) + f === :WindowsTempSortBuffer && return _getptr(x, f) + f === :CurrentWindowStack && return _getptr(x, f) + f === :WindowsById && return _getptr(x, f) + f === :WindowsActiveCount && return unsafe_load(_getptr(x, f)) + f === :WindowsHoverPadding && return _getptr(x, f) + f === :DebugBreakInWindow && return unsafe_load(_getptr(x, f)) + f === :CurrentWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindowUnderMovingWindow && return unsafe_load(_getptr(x, f)) + f === :MovingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowRefMousePos && return _getptr(x, f) + f === :WheelingWindowStartFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowScrolledFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowReleaseTimer && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowWheelRemainder && return _getptr(x, f) + f === :WheelingAxisAvg && return _getptr(x, f) + f === :DebugHookIdInfo && return unsafe_load(_getptr(x, f)) + f === :HoveredId && return unsafe_load(_getptr(x, f)) + f === :HoveredIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoveredIdTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdNotActiveTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :HoveredIdDisabled && return unsafe_load(_getptr(x, f)) + f === :ItemUnclipByLog && return unsafe_load(_getptr(x, f)) + f === :ActiveId && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsJustActivated && return unsafe_load(_getptr(x, f)) + f === :ActiveIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :ActiveIdNoClearOnFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenPressedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedThisFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdFromShortcut && return unsafe_load(_getptr(x, f)) + f === :ActiveIdMouseButton && return unsafe_load(_getptr(x, f)) + f === :ActiveIdClickOffset && return _getptr(x, f) + f === :ActiveIdWindow && return unsafe_load(_getptr(x, f)) + f === :ActiveIdSource && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameWindow && return unsafe_load(_getptr(x, f)) + f === :LastActiveId && return unsafe_load(_getptr(x, f)) + f === :LastActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeFromNoneTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyboardKeyPressTime && return unsafe_load(_getptr(x, f)) + f === :KeysMayBeCharInput && return _getptr(x, f) + f === :KeysOwnerData && return _getptr(x, f) + f === :KeysRoutingTable && return _getptr(x, f) + f === :ActiveIdUsingNavDirMask && return unsafe_load(_getptr(x, f)) + f === :ActiveIdUsingAllKeyboardKeys && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInShortcutRouting && return unsafe_load(_getptr(x, f)) + f === :CurrentFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :CurrentItemFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLocateId && return unsafe_load(_getptr(x, f)) + f === :NextItemData && return _getptr(x, f) + f === :LastItemData && return _getptr(x, f) + f === :NextWindowData && return _getptr(x, f) + f === :DebugShowGroupRects && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorIdx && return unsafe_load(_getptr(x, f)) + f === :ColorStack && return _getptr(x, f) + f === :StyleVarStack && return _getptr(x, f) + f === :FontStack && return _getptr(x, f) + f === :FocusScopeStack && return _getptr(x, f) + f === :ItemFlagsStack && return _getptr(x, f) + f === :GroupStack && return _getptr(x, f) + f === :OpenPopupStack && return _getptr(x, f) + f === :BeginPopupStack && return _getptr(x, f) + f === :NavTreeNodeStack && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) + f === :CurrentViewport && return unsafe_load(_getptr(x, f)) + f === :MouseViewport && return unsafe_load(_getptr(x, f)) + f === :MouseLastHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :PlatformLastFocusedViewportId && return unsafe_load(_getptr(x, f)) + f === :FallbackMonitor && return _getptr(x, f) + f === :PlatformMonitorsFullWorkRect && return _getptr(x, f) + f === :ViewportCreatedCount && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowsCreatedCount && return unsafe_load(_getptr(x, f)) + f === :ViewportFocusedStampCount && return unsafe_load(_getptr(x, f)) + f === :NavWindow && return unsafe_load(_getptr(x, f)) + f === :NavId && return unsafe_load(_getptr(x, f)) + f === :NavFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavActivateId && return unsafe_load(_getptr(x, f)) + f === :NavActivateDownId && return unsafe_load(_getptr(x, f)) + f === :NavActivatePressedId && return unsafe_load(_getptr(x, f)) + f === :NavActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavFocusRoute && return _getptr(x, f) + f === :NavHighlightActivatedId && return unsafe_load(_getptr(x, f)) + f === :NavHighlightActivatedTimer && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateId && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavInputSource && return unsafe_load(_getptr(x, f)) + f === :NavLayer && return unsafe_load(_getptr(x, f)) + f === :NavLastValidSelectionUserData && return unsafe_load(_getptr(x, f)) + f === :NavIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :NavMousePosDirty && return unsafe_load(_getptr(x, f)) + f === :NavDisableHighlight && return unsafe_load(_getptr(x, f)) + f === :NavDisableMouseHover && return unsafe_load(_getptr(x, f)) + f === :NavAnyRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequestFromMove && return unsafe_load(_getptr(x, f)) + f === :NavInitResult && return _getptr(x, f) + f === :NavMoveSubmitted && return unsafe_load(_getptr(x, f)) + f === :NavMoveScoringItems && return unsafe_load(_getptr(x, f)) + f === :NavMoveForwardToNextFrame && return unsafe_load(_getptr(x, f)) + f === :NavMoveFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveScrollFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavMoveDir && return unsafe_load(_getptr(x, f)) + f === :NavMoveDirForDebug && return unsafe_load(_getptr(x, f)) + f === :NavMoveClipDir && return unsafe_load(_getptr(x, f)) + f === :NavScoringRect && return _getptr(x, f) + f === :NavScoringNoClipRect && return _getptr(x, f) + f === :NavScoringDebugCount && return unsafe_load(_getptr(x, f)) + f === :NavTabbingDir && return unsafe_load(_getptr(x, f)) + f === :NavTabbingCounter && return unsafe_load(_getptr(x, f)) + f === :NavMoveResultLocal && return _getptr(x, f) + f === :NavMoveResultLocalVisible && return _getptr(x, f) + f === :NavMoveResultOther && return _getptr(x, f) + f === :NavTabbingResultFirst && return _getptr(x, f) + f === :ConfigNavWindowingKeyNext && return unsafe_load(_getptr(x, f)) + f === :ConfigNavWindowingKeyPrev && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTarget && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTargetAnim && return unsafe_load(_getptr(x, f)) + f === :NavWindowingListWindow && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTimer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingHighlightAlpha && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleLayer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleKey && return unsafe_load(_getptr(x, f)) + f === :NavWindowingAccumDeltaPos && return _getptr(x, f) + f === :NavWindowingAccumDeltaSize && return _getptr(x, f) + f === :DimBgRatio && return unsafe_load(_getptr(x, f)) + f === :DragDropActive && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinSource && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinTarget && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropMouseButton && return unsafe_load(_getptr(x, f)) + f === :DragDropPayload && return _getptr(x, f) + f === :DragDropTargetRect && return _getptr(x, f) + f === :DragDropTargetClipRect && return _getptr(x, f) + f === :DragDropTargetId && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurrRectSurface && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurr && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdPrev && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropHoldJustPressedId && return unsafe_load(_getptr(x, f)) + f === :DragDropPayloadBufHeap && return _getptr(x, f) + f === :DragDropPayloadBufLocal && return _getptr(x, f) + f === :ClipperTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :ClipperTempData && return _getptr(x, f) + f === :CurrentTable && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInTable && return unsafe_load(_getptr(x, f)) + f === :TablesTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :TablesTempData && return _getptr(x, f) + f === :Tables && return _getptr(x, f) + f === :TablesLastTimeActive && return _getptr(x, f) + f === :DrawChannelsTempMergeBuffer && return _getptr(x, f) + f === :CurrentTabBar && return unsafe_load(_getptr(x, f)) + f === :TabBars && return _getptr(x, f) + f === :CurrentTabBarStack && return _getptr(x, f) + f === :ShrinkWidthBuffer && return _getptr(x, f) + f === :HoverItemDelayId && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayClearTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :HoverWindowUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :MouseCursor && return unsafe_load(_getptr(x, f)) + f === :MouseStationaryTimer && return unsafe_load(_getptr(x, f)) + f === :MouseLastValidPos && return _getptr(x, f) + f === :InputTextState && return _getptr(x, f) + f === :InputTextDeactivatedState && return _getptr(x, f) + f === :InputTextPasswordFont && return _getptr(x, f) + f === :TempInputId && return unsafe_load(_getptr(x, f)) + f === :DataTypeZeroValue && return _getptr(x, f) + f === :BeginMenuDepth && return unsafe_load(_getptr(x, f)) + f === :BeginComboDepth && return unsafe_load(_getptr(x, f)) + f === :ColorEditOptions && return unsafe_load(_getptr(x, f)) + f === :ColorEditCurrentID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedHue && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedSat && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedColor && return unsafe_load(_getptr(x, f)) + f === :ColorPickerRef && return _getptr(x, f) + f === :ComboPreviewData && return _getptr(x, f) + f === :WindowResizeBorderExpectedRect && return _getptr(x, f) + f === :WindowResizeRelativeMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSeekMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarClickDeltaToGrabCenter && return unsafe_load(_getptr(x, f)) + f === :SliderGrabClickOffset && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :DragSpeedDefaultRatio && return unsafe_load(_getptr(x, f)) + f === :DisabledAlphaBackup && return unsafe_load(_getptr(x, f)) + f === :DisabledStackSize && return unsafe_load(_getptr(x, f)) + f === :LockMarkEdited && return unsafe_load(_getptr(x, f)) + f === :TooltipOverrideCount && return unsafe_load(_getptr(x, f)) + f === :ClipboardHandlerData && return _getptr(x, f) + f === :MenusIdSubmittedThisFrame && return _getptr(x, f) + f === :TypingSelectState && return _getptr(x, f) + f === :PlatformImeData && return _getptr(x, f) + f === :PlatformImeDataPrev && return _getptr(x, f) + f === :PlatformImeViewport && return unsafe_load(_getptr(x, f)) + f === :DockContext && return _getptr(x, f) + f === :DockNodeWindowMenuHandler && return unsafe_load(_getptr(x, f)) + f === :SettingsLoaded && return unsafe_load(_getptr(x, f)) + f === :SettingsDirtyTimer && return unsafe_load(_getptr(x, f)) + f === :SettingsIniData && return _getptr(x, f) + f === :SettingsHandlers && return _getptr(x, f) + f === :SettingsWindows && return _getptr(x, f) + f === :SettingsTables && return _getptr(x, f) + f === :Hooks && return _getptr(x, f) + f === :HookIdNext && return unsafe_load(_getptr(x, f)) + f === :LocalizationTable && return _getptr(x, f) + f === :LogEnabled && return unsafe_load(_getptr(x, f)) + f === :LogType && return unsafe_load(_getptr(x, f)) + f === :LogFile && return unsafe_load(_getptr(x, f)) + f === :LogBuffer && return _getptr(x, f) + f === :LogNextPrefix && return unsafe_load(_getptr(x, f)) + f === :LogNextSuffix && return unsafe_load(_getptr(x, f)) + f === :LogLinePosY && return unsafe_load(_getptr(x, f)) + f === :LogLineFirstItem && return unsafe_load(_getptr(x, f)) + f === :LogDepthRef && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpand && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpandDefault && return unsafe_load(_getptr(x, f)) + f === :DebugLogFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogBuf && return _getptr(x, f) + f === :DebugLogIndex && return _getptr(x, f) + f === :DebugLogAutoDisableFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogAutoDisableFrames && return unsafe_load(_getptr(x, f)) + f === :DebugLocateFrames && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInLocateId && return unsafe_load(_getptr(x, f)) + f === :DebugBreakKeyChord && return unsafe_load(_getptr(x, f)) + f === :DebugBeginReturnValueCullDepth && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerActive && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerMouseButton && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerBreakId && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorTime && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorBackup && return _getptr(x, f) + f === :DebugMetricsConfig && return _getptr(x, f) + f === :DebugIDStackTool && return _getptr(x, f) + f === :DebugAllocInfo && return _getptr(x, f) + f === :DebugHoveredDockNode && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrame && return _getptr(x, f) + f === :FramerateSecPerFrameIdx && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameCount && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameAccum && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouseNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboardNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantTextInputNextFrame && return unsafe_load(_getptr(x, f)) + f === :TempBuffer && return _getptr(x, f) + f === :TempKeychordName && return _getptr(x, f) return getfield(x, f) end @@ -3234,7 +4284,7 @@ end function Base.setproperty!(x::Ptr{ImGuiContext}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -3279,16 +4329,24 @@ struct ImGuiSizeCallbackData CurrentSize::ImVec2 DesiredSize::ImVec2 end -function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) +function _getptr(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) f === :UserData && return Ptr{Ptr{Cvoid}}(x + 0) f === :Pos && return Ptr{ImVec2}(x + 8) f === :CurrentSize && return Ptr{ImVec2}(x + 16) f === :DesiredSize && return Ptr{ImVec2}(x + 24) + error("Unrecognized field of type `ImGuiSizeCallbackData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :CurrentSize && return _getptr(x, f) + f === :DesiredSize && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiSizeCallbackData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -4381,7 +5439,7 @@ struct ImGuiTableColumnSettings data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :WidthOrWeight && return Ptr{Cfloat}(x + 0) f === :UserID && return Ptr{ImGuiID}(x + 4) f === :Index && return Ptr{ImGuiTableColumnIdx}(x + 8) @@ -4390,6 +5448,18 @@ function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :SortDirection && return (Ptr{ImU8}(x + 12), 16, 2) f === :IsEnabled && return (Ptr{ImU8}(x + 12), 18, 1) f === :IsStretch && return (Ptr{ImU8}(x + 12), 19, 1) + error("Unrecognized field of type `ImGuiTableColumnSettings`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) + f === :WidthOrWeight && return unsafe_load(_getptr(x, f)) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :Index && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsStretch && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -4417,7 +5487,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumnSettings}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) diff --git a/lib/x86_64-linux-gnu.jl b/lib/x86_64-linux-gnu.jl index 34deedc..45789fc 100644 --- a/lib/x86_64-linux-gnu.jl +++ b/lib/x86_64-linux-gnu.jl @@ -1,4 +1,4 @@ -using CEnum +using CEnum: CEnum, @cenum to_c_type(t::Type) = t to_c_type_pairs(va_list) = map(enumerate(to_c_type.(va_list))) do (ind, type) @@ -32,16 +32,24 @@ struct ImVec4 z::Cfloat w::Cfloat end -function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) +function _getptr(x::Ptr{ImVec4}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) f === :z && return Ptr{Cfloat}(x + 8) f === :w && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImVec4`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) + f === :z && return unsafe_load(_getptr(x, f)) + f === :w && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec4}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -56,7 +64,7 @@ struct ImDrawCmd UserCallback::ImDrawCallback UserCallbackData::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) +function _getptr(x::Ptr{ImDrawCmd}, f::Symbol) f === :ClipRect && return Ptr{ImVec4}(x + 0) f === :TextureId && return Ptr{ImTextureID}(x + 16) f === :VtxOffset && return Ptr{Cuint}(x + 24) @@ -64,11 +72,22 @@ function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) f === :ElemCount && return Ptr{Cuint}(x + 32) f === :UserCallback && return Ptr{ImDrawCallback}(x + 40) f === :UserCallbackData && return Ptr{Ptr{Cvoid}}(x + 48) + error("Unrecognized field of type `ImDrawCmd`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) + f === :ClipRect && return _getptr(x, f) + f === :TextureId && return unsafe_load(_getptr(x, f)) + f === :VtxOffset && return unsafe_load(_getptr(x, f)) + f === :IdxOffset && return unsafe_load(_getptr(x, f)) + f === :ElemCount && return unsafe_load(_getptr(x, f)) + f === :UserCallback && return unsafe_load(_getptr(x, f)) + f === :UserCallbackData && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawCmd}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -95,14 +114,20 @@ struct ImVec2 x::Cfloat y::Cfloat end -function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) +function _getptr(x::Ptr{ImVec2}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) + error("Unrecognized field of type `ImVec2`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec2}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -119,6 +144,24 @@ struct ImVector_ImDrawVert Capacity::Cint Data::Ptr{ImDrawVert} end +function _getptr(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return Ptr{Cint}(x + 0) + f === :Capacity && return Ptr{Cint}(x + 4) + f === :Data && return Ptr{Ptr{ImDrawVert}}(x + 8) + error("Unrecognized field of type `ImVector_ImDrawVert`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return unsafe_load(_getptr(x, f)) + f === :Capacity && return unsafe_load(_getptr(x, f)) + f === :Data && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImVector_ImDrawVert}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImDrawListFlags = Cint @@ -142,7 +185,7 @@ struct ImFontGlyph data::NTuple{40, UInt8} end -function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) +function _getptr(x::Ptr{ImFontGlyph}, f::Symbol) f === :Colored && return (Ptr{Cuint}(x + 0), 0, 1) f === :Visible && return (Ptr{Cuint}(x + 0), 1, 1) f === :Codepoint && return (Ptr{Cuint}(x + 0), 2, 30) @@ -155,6 +198,22 @@ function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) f === :V0 && return Ptr{Cfloat}(x + 28) f === :U1 && return Ptr{Cfloat}(x + 32) f === :V1 && return Ptr{Cfloat}(x + 36) + error("Unrecognized field of type `ImFontGlyph`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) + f === :Colored && return unsafe_load(_getptr(x, f)) + f === :Visible && return unsafe_load(_getptr(x, f)) + f === :Codepoint && return unsafe_load(_getptr(x, f)) + f === :AdvanceX && return unsafe_load(_getptr(x, f)) + f === :X0 && return unsafe_load(_getptr(x, f)) + f === :Y0 && return unsafe_load(_getptr(x, f)) + f === :X1 && return unsafe_load(_getptr(x, f)) + f === :Y1 && return unsafe_load(_getptr(x, f)) + f === :U0 && return unsafe_load(_getptr(x, f)) + f === :V0 && return unsafe_load(_getptr(x, f)) + f === :U1 && return unsafe_load(_getptr(x, f)) + f === :V1 && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -182,7 +241,7 @@ end function Base.setproperty!(x::Ptr{ImFontGlyph}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -270,7 +329,7 @@ function Base.getproperty(x::ImFontConfig, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) +function _getptr(x::Ptr{ImFontConfig}, f::Symbol) f === :FontData && return Ptr{Ptr{Cvoid}}(x + 0) f === :FontDataSize && return Ptr{Cint}(x + 8) f === :FontDataOwnedByAtlas && return Ptr{Bool}(x + 12) @@ -291,11 +350,35 @@ function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) f === :EllipsisChar && return Ptr{ImWchar}(x + 88) f === :Name && return Ptr{NTuple{40, Cchar}}(x + 90) f === :DstFont && return Ptr{Ptr{ImFont}}(x + 136) + error("Unrecognized field of type `ImFontConfig`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) + f === :FontData && return unsafe_load(_getptr(x, f)) + f === :FontDataSize && return unsafe_load(_getptr(x, f)) + f === :FontDataOwnedByAtlas && return unsafe_load(_getptr(x, f)) + f === :FontNo && return unsafe_load(_getptr(x, f)) + f === :SizePixels && return unsafe_load(_getptr(x, f)) + f === :OversampleH && return unsafe_load(_getptr(x, f)) + f === :OversampleV && return unsafe_load(_getptr(x, f)) + f === :PixelSnapH && return unsafe_load(_getptr(x, f)) + f === :GlyphExtraSpacing && return _getptr(x, f) + f === :GlyphOffset && return _getptr(x, f) + f === :GlyphRanges && return unsafe_load(_getptr(x, f)) + f === :GlyphMinAdvanceX && return unsafe_load(_getptr(x, f)) + f === :GlyphMaxAdvanceX && return unsafe_load(_getptr(x, f)) + f === :MergeMode && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :RasterizerMultiply && return unsafe_load(_getptr(x, f)) + f === :RasterizerDensity && return unsafe_load(_getptr(x, f)) + f === :EllipsisChar && return unsafe_load(_getptr(x, f)) + f === :Name && return _getptr(x, f) + f === :DstFont && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontConfig}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImFontConfig @@ -332,7 +415,7 @@ struct ImFontAtlas PackIdMouseCursors::Cint PackIdLines::Cint end -function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) +function _getptr(x::Ptr{ImFontAtlas}, f::Symbol) f === :Flags && return Ptr{ImFontAtlasFlags}(x + 0) f === :TexID && return Ptr{ImTextureID}(x + 8) f === :TexDesiredWidth && return Ptr{Cint}(x + 16) @@ -355,11 +438,37 @@ function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) f === :FontBuilderFlags && return Ptr{Cuint}(x + 1168) f === :PackIdMouseCursors && return Ptr{Cint}(x + 1172) f === :PackIdLines && return Ptr{Cint}(x + 1176) + error("Unrecognized field of type `ImFontAtlas`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :TexID && return unsafe_load(_getptr(x, f)) + f === :TexDesiredWidth && return unsafe_load(_getptr(x, f)) + f === :TexGlyphPadding && return unsafe_load(_getptr(x, f)) + f === :Locked && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :TexReady && return unsafe_load(_getptr(x, f)) + f === :TexPixelsUseColors && return unsafe_load(_getptr(x, f)) + f === :TexPixelsAlpha8 && return unsafe_load(_getptr(x, f)) + f === :TexPixelsRGBA32 && return unsafe_load(_getptr(x, f)) + f === :TexWidth && return unsafe_load(_getptr(x, f)) + f === :TexHeight && return unsafe_load(_getptr(x, f)) + f === :TexUvScale && return _getptr(x, f) + f === :TexUvWhitePixel && return _getptr(x, f) + f === :Fonts && return _getptr(x, f) + f === :CustomRects && return _getptr(x, f) + f === :ConfigData && return _getptr(x, f) + f === :TexUvLines && return _getptr(x, f) + f === :FontBuilderIO && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :PackIdMouseCursors && return unsafe_load(_getptr(x, f)) + f === :PackIdLines && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontAtlas}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -456,7 +565,7 @@ struct ImDrawList _FringeScale::Cfloat _OwnerName::Ptr{Cchar} end -function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) +function _getptr(x::Ptr{ImDrawList}, f::Symbol) f === :CmdBuffer && return Ptr{ImVector_ImDrawCmd}(x + 0) f === :IdxBuffer && return Ptr{ImVector_ImDrawIdx}(x + 16) f === :VtxBuffer && return Ptr{ImVector_ImDrawVert}(x + 32) @@ -472,11 +581,30 @@ function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) f === :_TextureIdStack && return Ptr{ImVector_ImTextureID}(x + 168) f === :_FringeScale && return Ptr{Cfloat}(x + 184) f === :_OwnerName && return Ptr{Ptr{Cchar}}(x + 192) + error("Unrecognized field of type `ImDrawList`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) + f === :CmdBuffer && return _getptr(x, f) + f === :IdxBuffer && return _getptr(x, f) + f === :VtxBuffer && return _getptr(x, f) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :_VtxCurrentIdx && return unsafe_load(_getptr(x, f)) + f === :_Data && return unsafe_load(_getptr(x, f)) + f === :_VtxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_IdxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_Path && return _getptr(x, f) + f === :_CmdHeader && return _getptr(x, f) + f === :_Splitter && return _getptr(x, f) + f === :_ClipRectStack && return _getptr(x, f) + f === :_TextureIdStack && return _getptr(x, f) + f === :_FringeScale && return unsafe_load(_getptr(x, f)) + f === :_OwnerName && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawList}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -515,7 +643,7 @@ function Base.getproperty(x::ImGuiViewport, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) +function _getptr(x::Ptr{ImGuiViewport}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiViewportFlags}(x + 4) f === :Pos && return Ptr{ImVec2}(x + 8) @@ -533,11 +661,32 @@ function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) f === :PlatformRequestMove && return Ptr{Bool}(x + 89) f === :PlatformRequestResize && return Ptr{Bool}(x + 90) f === :PlatformRequestClose && return Ptr{Bool}(x + 91) + error("Unrecognized field of type `ImGuiViewport`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :ParentViewportId && return unsafe_load(_getptr(x, f)) + f === :DrawData && return unsafe_load(_getptr(x, f)) + f === :RendererUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) + f === :PlatformHandleRaw && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowCreated && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestMove && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestResize && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestClose && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiViewport}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImDrawData @@ -551,7 +700,7 @@ struct ImDrawData FramebufferScale::ImVec2 OwnerViewport::Ptr{ImGuiViewport} end -function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) +function _getptr(x::Ptr{ImDrawData}, f::Symbol) f === :Valid && return Ptr{Bool}(x + 0) f === :CmdListsCount && return Ptr{Cint}(x + 4) f === :TotalIdxCount && return Ptr{Cint}(x + 8) @@ -561,11 +710,24 @@ function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) f === :DisplaySize && return Ptr{ImVec2}(x + 40) f === :FramebufferScale && return Ptr{ImVec2}(x + 48) f === :OwnerViewport && return Ptr{Ptr{ImGuiViewport}}(x + 56) + error("Unrecognized field of type `ImDrawData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) + f === :Valid && return unsafe_load(_getptr(x, f)) + f === :CmdListsCount && return unsafe_load(_getptr(x, f)) + f === :TotalIdxCount && return unsafe_load(_getptr(x, f)) + f === :TotalVtxCount && return unsafe_load(_getptr(x, f)) + f === :CmdLists && return _getptr(x, f) + f === :DisplayPos && return _getptr(x, f) + f === :DisplaySize && return _getptr(x, f) + f === :FramebufferScale && return _getptr(x, f) + f === :OwnerViewport && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -602,6 +764,26 @@ struct ImGuiKeyData DownDurationPrev::Cfloat AnalogValue::Cfloat end +function _getptr(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return Ptr{Bool}(x + 0) + f === :DownDuration && return Ptr{Cfloat}(x + 4) + f === :DownDurationPrev && return Ptr{Cfloat}(x + 8) + f === :AnalogValue && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImGuiKeyData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return unsafe_load(_getptr(x, f)) + f === :DownDuration && return unsafe_load(_getptr(x, f)) + f === :DownDurationPrev && return unsafe_load(_getptr(x, f)) + f === :AnalogValue && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImGuiKeyData}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImU16 = Cushort @@ -715,7 +897,7 @@ function Base.getproperty(x::ImGuiIO, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiIO}, f::Symbol) f === :ConfigFlags && return Ptr{ImGuiConfigFlags}(x + 0) f === :BackendFlags && return Ptr{ImGuiBackendFlags}(x + 4) f === :DisplaySize && return Ptr{ImVec2}(x + 8) @@ -816,11 +998,115 @@ function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) f === :BackendUsingLegacyNavInputArray && return Ptr{Bool}(x + 3003) f === :InputQueueSurrogate && return Ptr{ImWchar16}(x + 3004) f === :InputQueueCharacters && return Ptr{ImVector_ImWchar}(x + 3008) + error("Unrecognized field of type `ImGuiIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) + f === :ConfigFlags && return unsafe_load(_getptr(x, f)) + f === :BackendFlags && return unsafe_load(_getptr(x, f)) + f === :DisplaySize && return _getptr(x, f) + f === :DeltaTime && return unsafe_load(_getptr(x, f)) + f === :IniSavingRate && return unsafe_load(_getptr(x, f)) + f === :IniFilename && return unsafe_load(_getptr(x, f)) + f === :LogFilename && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Fonts && return unsafe_load(_getptr(x, f)) + f === :FontGlobalScale && return unsafe_load(_getptr(x, f)) + f === :FontAllowUserScaling && return unsafe_load(_getptr(x, f)) + f === :FontDefault && return unsafe_load(_getptr(x, f)) + f === :DisplayFramebufferScale && return _getptr(x, f) + f === :ConfigDockingNoSplit && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingWithShift && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingAlwaysTabBar && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingTransparentPayload && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoAutoMerge && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoTaskBarIcon && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDecoration && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDefaultParent && return unsafe_load(_getptr(x, f)) + f === :MouseDrawCursor && return unsafe_load(_getptr(x, f)) + f === :ConfigMacOSXBehaviors && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTrickleEventQueue && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextCursorBlink && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextEnterKeepActive && return unsafe_load(_getptr(x, f)) + f === :ConfigDragClickToInputText && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsResizeFromEdges && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsMoveFromTitleBarOnly && return unsafe_load(_getptr(x, f)) + f === :ConfigMemoryCompactTimer && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickTime && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickMaxDist && return unsafe_load(_getptr(x, f)) + f === :MouseDragThreshold && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatDelay && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatRate && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIsDebuggerPresent && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueOnce && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueLoop && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIgnoreFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIniSettings && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformName && return unsafe_load(_getptr(x, f)) + f === :BackendRendererName && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformUserData && return unsafe_load(_getptr(x, f)) + f === :BackendRendererUserData && return unsafe_load(_getptr(x, f)) + f === :BackendLanguageUserData && return unsafe_load(_getptr(x, f)) + f === :GetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :SetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :ClipboardUserData && return unsafe_load(_getptr(x, f)) + f === :SetPlatformImeDataFn && return unsafe_load(_getptr(x, f)) + f === :PlatformLocaleDecimalPoint && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouse && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboard && return unsafe_load(_getptr(x, f)) + f === :WantTextInput && return unsafe_load(_getptr(x, f)) + f === :WantSetMousePos && return unsafe_load(_getptr(x, f)) + f === :WantSaveIniSettings && return unsafe_load(_getptr(x, f)) + f === :NavActive && return unsafe_load(_getptr(x, f)) + f === :NavVisible && return unsafe_load(_getptr(x, f)) + f === :Framerate && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderVertices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderIndices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderWindows && return unsafe_load(_getptr(x, f)) + f === :MetricsActiveWindows && return unsafe_load(_getptr(x, f)) + f === :MouseDelta && return _getptr(x, f) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseDown && return _getptr(x, f) + f === :MouseWheel && return unsafe_load(_getptr(x, f)) + f === :MouseWheelH && return unsafe_load(_getptr(x, f)) + f === :MouseSource && return unsafe_load(_getptr(x, f)) + f === :MouseHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :KeyCtrl && return unsafe_load(_getptr(x, f)) + f === :KeyShift && return unsafe_load(_getptr(x, f)) + f === :KeyAlt && return unsafe_load(_getptr(x, f)) + f === :KeySuper && return unsafe_load(_getptr(x, f)) + f === :KeyMods && return unsafe_load(_getptr(x, f)) + f === :KeysData && return _getptr(x, f) + f === :WantCaptureMouseUnlessPopupClose && return unsafe_load(_getptr(x, f)) + f === :MousePosPrev && return _getptr(x, f) + f === :MouseClickedPos && return _getptr(x, f) + f === :MouseClickedTime && return _getptr(x, f) + f === :MouseClicked && return _getptr(x, f) + f === :MouseDoubleClicked && return _getptr(x, f) + f === :MouseClickedCount && return _getptr(x, f) + f === :MouseClickedLastCount && return _getptr(x, f) + f === :MouseReleased && return _getptr(x, f) + f === :MouseDownOwned && return _getptr(x, f) + f === :MouseDownOwnedUnlessPopupClose && return _getptr(x, f) + f === :MouseWheelRequestAxisSwap && return unsafe_load(_getptr(x, f)) + f === :MouseCtrlLeftAsRightClick && return unsafe_load(_getptr(x, f)) + f === :MouseDownDuration && return _getptr(x, f) + f === :MouseDownDurationPrev && return _getptr(x, f) + f === :MouseDragMaxDistanceAbs && return _getptr(x, f) + f === :MouseDragMaxDistanceSqr && return _getptr(x, f) + f === :PenPressure && return unsafe_load(_getptr(x, f)) + f === :AppFocusLost && return unsafe_load(_getptr(x, f)) + f === :AppAcceptingEvents && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyKeyArrays && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyNavInputArray && return unsafe_load(_getptr(x, f)) + f === :InputQueueSurrogate && return unsafe_load(_getptr(x, f)) + f === :InputQueueCharacters && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImGuiPlatformMonitor @@ -831,18 +1117,28 @@ struct ImGuiPlatformMonitor DpiScale::Cfloat PlatformHandle::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) f === :MainPos && return Ptr{ImVec2}(x + 0) f === :MainSize && return Ptr{ImVec2}(x + 8) f === :WorkPos && return Ptr{ImVec2}(x + 16) f === :WorkSize && return Ptr{ImVec2}(x + 24) f === :DpiScale && return Ptr{Cfloat}(x + 32) f === :PlatformHandle && return Ptr{Ptr{Cvoid}}(x + 40) + error("Unrecognized field of type `ImGuiPlatformMonitor`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) + f === :MainPos && return _getptr(x, f) + f === :MainSize && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformMonitor}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -885,7 +1181,7 @@ struct ImGuiPlatformIO Monitors::ImVector_ImGuiPlatformMonitor Viewports::ImVector_ImGuiViewportPtr end -function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Platform_CreateWindow && return Ptr{Ptr{Cvoid}}(x + 0) f === :Platform_DestroyWindow && return Ptr{Ptr{Cvoid}}(x + 8) f === :Platform_ShowWindow && return Ptr{Ptr{Cvoid}}(x + 16) @@ -911,11 +1207,40 @@ function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Renderer_SwapBuffers && return Ptr{Ptr{Cvoid}}(x + 176) f === :Monitors && return Ptr{ImVector_ImGuiPlatformMonitor}(x + 184) f === :Viewports && return Ptr{ImVector_ImGuiViewportPtr}(x + 200) + error("Unrecognized field of type `ImGuiPlatformIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) + f === :Platform_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_ShowWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowMinimized && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowTitle && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowAlpha && return unsafe_load(_getptr(x, f)) + f === :Platform_UpdateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowDpiScale && return unsafe_load(_getptr(x, f)) + f === :Platform_OnChangedViewport && return unsafe_load(_getptr(x, f)) + f === :Platform_CreateVkSurface && return unsafe_load(_getptr(x, f)) + f === :Renderer_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Renderer_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Monitors && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -985,7 +1310,7 @@ struct ImGuiStyle HoverFlagsForTooltipMouse::ImGuiHoveredFlags HoverFlagsForTooltipNav::ImGuiHoveredFlags end -function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyle}, f::Symbol) f === :Alpha && return Ptr{Cfloat}(x + 0) f === :DisabledAlpha && return Ptr{Cfloat}(x + 4) f === :WindowPadding && return Ptr{ImVec2}(x + 8) @@ -1039,11 +1364,68 @@ function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) f === :HoverDelayNormal && return Ptr{Cfloat}(x + 1128) f === :HoverFlagsForTooltipMouse && return Ptr{ImGuiHoveredFlags}(x + 1132) f === :HoverFlagsForTooltipNav && return Ptr{ImGuiHoveredFlags}(x + 1136) + error("Unrecognized field of type `ImGuiStyle`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) + f === :Alpha && return unsafe_load(_getptr(x, f)) + f === :DisabledAlpha && return unsafe_load(_getptr(x, f)) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :WindowMinSize && return _getptr(x, f) + f === :WindowTitleAlign && return _getptr(x, f) + f === :WindowMenuButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ChildRounding && return unsafe_load(_getptr(x, f)) + f === :ChildBorderSize && return unsafe_load(_getptr(x, f)) + f === :PopupRounding && return unsafe_load(_getptr(x, f)) + f === :PopupBorderSize && return unsafe_load(_getptr(x, f)) + f === :FramePadding && return _getptr(x, f) + f === :FrameRounding && return unsafe_load(_getptr(x, f)) + f === :FrameBorderSize && return unsafe_load(_getptr(x, f)) + f === :ItemSpacing && return _getptr(x, f) + f === :ItemInnerSpacing && return _getptr(x, f) + f === :CellPadding && return _getptr(x, f) + f === :TouchExtraPadding && return _getptr(x, f) + f === :IndentSpacing && return unsafe_load(_getptr(x, f)) + f === :ColumnsMinSpacing && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSize && return unsafe_load(_getptr(x, f)) + f === :ScrollbarRounding && return unsafe_load(_getptr(x, f)) + f === :GrabMinSize && return unsafe_load(_getptr(x, f)) + f === :GrabRounding && return unsafe_load(_getptr(x, f)) + f === :LogSliderDeadzone && return unsafe_load(_getptr(x, f)) + f === :TabRounding && return unsafe_load(_getptr(x, f)) + f === :TabBorderSize && return unsafe_load(_getptr(x, f)) + f === :TabMinWidthForCloseButton && return unsafe_load(_getptr(x, f)) + f === :TabBarBorderSize && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersAngle && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersTextAlign && return _getptr(x, f) + f === :ColorButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ButtonTextAlign && return _getptr(x, f) + f === :SelectableTextAlign && return _getptr(x, f) + f === :SeparatorTextBorderSize && return unsafe_load(_getptr(x, f)) + f === :SeparatorTextAlign && return _getptr(x, f) + f === :SeparatorTextPadding && return _getptr(x, f) + f === :DisplayWindowPadding && return _getptr(x, f) + f === :DisplaySafeAreaPadding && return _getptr(x, f) + f === :DockingSeparatorSize && return unsafe_load(_getptr(x, f)) + f === :MouseCursorScale && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLines && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLinesUseTex && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedFill && return unsafe_load(_getptr(x, f)) + f === :CurveTessellationTol && return unsafe_load(_getptr(x, f)) + f === :CircleTessellationMaxError && return unsafe_load(_getptr(x, f)) + f === :Colors && return _getptr(x, f) + f === :HoverStationaryDelay && return unsafe_load(_getptr(x, f)) + f === :HoverDelayShort && return unsafe_load(_getptr(x, f)) + f === :HoverDelayNormal && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipMouse && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipNav && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiStyle}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -1071,7 +1453,7 @@ struct ImGuiInputEvent data::NTuple{28, UInt8} end -function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) +function _getptr(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Type && return Ptr{ImGuiInputEventType}(x + 0) f === :Source && return Ptr{ImGuiInputSource}(x + 4) f === :EventId && return Ptr{ImU32}(x + 8) @@ -1083,6 +1465,21 @@ function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Text && return Ptr{ImGuiInputEventText}(x + 12) f === :AppFocused && return Ptr{ImGuiInputEventAppFocused}(x + 12) f === :AddedByTestEngine && return Ptr{Bool}(x + 24) + error("Unrecognized field of type `ImGuiInputEvent`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) + f === :Type && return unsafe_load(_getptr(x, f)) + f === :Source && return unsafe_load(_getptr(x, f)) + f === :EventId && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseWheel && return _getptr(x, f) + f === :MouseButton && return _getptr(x, f) + f === :MouseViewport && return _getptr(x, f) + f === :Key && return _getptr(x, f) + f === :Text && return _getptr(x, f) + f === :AppFocused && return _getptr(x, f) + f === :AddedByTestEngine && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1094,7 +1491,7 @@ function Base.getproperty(x::ImGuiInputEvent, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiInputEvent}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiInputEvent @@ -1202,11 +1599,19 @@ struct ImGuiStoragePair data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) +function _getptr(x::Ptr{ImGuiStoragePair}, f::Symbol) f === :key && return Ptr{ImGuiID}(x + 0) f === :val_i && return Ptr{Cint}(x + 8) f === :val_f && return Ptr{Cfloat}(x + 8) f === :val_p && return Ptr{Ptr{Cvoid}}(x + 8) + error("Unrecognized field of type `ImGuiStoragePair`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) + f === :key && return unsafe_load(_getptr(x, f)) + f === :val_i && return unsafe_load(_getptr(x, f)) + f === :val_f && return unsafe_load(_getptr(x, f)) + f === :val_p && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1218,7 +1623,7 @@ function Base.getproperty(x::ImGuiStoragePair, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStoragePair}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStoragePair @@ -1426,7 +1831,7 @@ struct ImGuiDockNode data::NTuple{208, UInt8} end -function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) +function _getptr(x::Ptr{ImGuiDockNode}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :SharedFlags && return Ptr{ImGuiDockNodeFlags}(x + 4) f === :LocalFlags && return Ptr{ImGuiDockNodeFlags}(x + 8) @@ -1469,6 +1874,52 @@ function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) f === :WantMouseMove && return (Ptr{Bool}(x + 200), 17, 1) f === :WantHiddenTabBarUpdate && return (Ptr{Bool}(x + 200), 18, 1) f === :WantHiddenTabBarToggle && return (Ptr{Bool}(x + 200), 19, 1) + error("Unrecognized field of type `ImGuiDockNode`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :SharedFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlagsInWindows && return unsafe_load(_getptr(x, f)) + f === :MergedFlags && return unsafe_load(_getptr(x, f)) + f === :State && return unsafe_load(_getptr(x, f)) + f === :ParentNode && return unsafe_load(_getptr(x, f)) + f === :ChildNodes && return _getptr(x, f) + f === :Windows && return _getptr(x, f) + f === :TabBar && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeRef && return _getptr(x, f) + f === :SplitAxis && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :LastBgColor && return unsafe_load(_getptr(x, f)) + f === :HostWindow && return unsafe_load(_getptr(x, f)) + f === :VisibleWindow && return unsafe_load(_getptr(x, f)) + f === :CentralNode && return unsafe_load(_getptr(x, f)) + f === :OnlyNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :CountNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :LastFrameAlive && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameFocused && return unsafe_load(_getptr(x, f)) + f === :LastFocusedNodeId && return unsafe_load(_getptr(x, f)) + f === :SelectedTabId && return unsafe_load(_getptr(x, f)) + f === :WantCloseTabId && return unsafe_load(_getptr(x, f)) + f === :RefViewportId && return unsafe_load(_getptr(x, f)) + f === :AuthorityForPos && return unsafe_load(_getptr(x, f)) + f === :AuthorityForSize && return unsafe_load(_getptr(x, f)) + f === :AuthorityForViewport && return unsafe_load(_getptr(x, f)) + f === :IsVisible && return unsafe_load(_getptr(x, f)) + f === :IsFocused && return unsafe_load(_getptr(x, f)) + f === :IsBgDrawnThisFrame && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :HasWindowMenuButton && return unsafe_load(_getptr(x, f)) + f === :HasCentralNodeChild && return unsafe_load(_getptr(x, f)) + f === :WantCloseAll && return unsafe_load(_getptr(x, f)) + f === :WantLockSizeOnce && return unsafe_load(_getptr(x, f)) + f === :WantMouseMove && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarUpdate && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarToggle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1496,7 +1947,7 @@ end function Base.setproperty!(x::Ptr{ImGuiDockNode}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1521,7 +1972,7 @@ struct ImGuiWindow data::NTuple{1160, UInt8} end -function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) +function _getptr(x::Ptr{ImGuiWindow}, f::Symbol) f === :Ctx && return Ptr{Ptr{ImGuiContext}}(x + 0) f === :Name && return Ptr{Ptr{Cchar}}(x + 8) f === :ID && return Ptr{ImGuiID}(x + 16) @@ -1646,6 +2097,134 @@ function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) f === :DockId && return Ptr{ImGuiID}(x + 1136) f === :DockTabItemStatusFlags && return Ptr{ImGuiItemStatusFlags}(x + 1140) f === :DockTabItemRect && return Ptr{ImRect}(x + 1144) + error("Unrecognized field of type `ImGuiWindow`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :Name && return unsafe_load(_getptr(x, f)) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :FlagsPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ChildFlags && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :Viewport && return unsafe_load(_getptr(x, f)) + f === :ViewportId && return unsafe_load(_getptr(x, f)) + f === :ViewportPos && return _getptr(x, f) + f === :ViewportAllowPlatformMonitorExtend && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeFull && return _getptr(x, f) + f === :ContentSize && return _getptr(x, f) + f === :ContentSizeIdeal && return _getptr(x, f) + f === :ContentSizeExplicit && return _getptr(x, f) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :TitleBarHeight && return unsafe_load(_getptr(x, f)) + f === :MenuBarHeight && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX2 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY2 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeY1 && return unsafe_load(_getptr(x, f)) + f === :NameBufLen && return unsafe_load(_getptr(x, f)) + f === :MoveId && return unsafe_load(_getptr(x, f)) + f === :TabId && return unsafe_load(_getptr(x, f)) + f === :ChildId && return unsafe_load(_getptr(x, f)) + f === :PopupId && return unsafe_load(_getptr(x, f)) + f === :Scroll && return _getptr(x, f) + f === :ScrollMax && return _getptr(x, f) + f === :ScrollTarget && return _getptr(x, f) + f === :ScrollTargetCenterRatio && return _getptr(x, f) + f === :ScrollTargetEdgeSnapDist && return _getptr(x, f) + f === :ScrollbarSizes && return _getptr(x, f) + f === :ScrollbarX && return unsafe_load(_getptr(x, f)) + f === :ScrollbarY && return unsafe_load(_getptr(x, f)) + f === :ViewportOwned && return unsafe_load(_getptr(x, f)) + f === :Active && return unsafe_load(_getptr(x, f)) + f === :WasActive && return unsafe_load(_getptr(x, f)) + f === :WriteAccessed && return unsafe_load(_getptr(x, f)) + f === :Collapsed && return unsafe_load(_getptr(x, f)) + f === :WantCollapseToggle && return unsafe_load(_getptr(x, f)) + f === :SkipItems && return unsafe_load(_getptr(x, f)) + f === :SkipRefresh && return unsafe_load(_getptr(x, f)) + f === :Appearing && return unsafe_load(_getptr(x, f)) + f === :Hidden && return unsafe_load(_getptr(x, f)) + f === :IsFallbackWindow && return unsafe_load(_getptr(x, f)) + f === :IsExplicitChild && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHovered && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHeld && return unsafe_load(_getptr(x, f)) + f === :BeginCount && return unsafe_load(_getptr(x, f)) + f === :BeginCountPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinParent && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinContext && return unsafe_load(_getptr(x, f)) + f === :FocusOrder && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesX && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesY && return unsafe_load(_getptr(x, f)) + f === :AutoFitOnlyGrows && return unsafe_load(_getptr(x, f)) + f === :AutoPosLastDirection && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCanSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCannotSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesForRenderOnly && return unsafe_load(_getptr(x, f)) + f === :DisableInputsFrames && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowSizeAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowCollapsedAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowDockAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosVal && return _getptr(x, f) + f === :SetWindowPosPivot && return _getptr(x, f) + f === :IDStack && return _getptr(x, f) + f === :DC && return _getptr(x, f) + f === :OuterRectClipped && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :ParentWorkRect && return _getptr(x, f) + f === :ClipRect && return _getptr(x, f) + f === :ContentRegionRect && return _getptr(x, f) + f === :HitTestHoleSize && return _getptr(x, f) + f === :HitTestHoleOffset && return _getptr(x, f) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameJustFocused && return unsafe_load(_getptr(x, f)) + f === :LastTimeActive && return unsafe_load(_getptr(x, f)) + f === :ItemWidthDefault && return unsafe_load(_getptr(x, f)) + f === :StateStorage && return _getptr(x, f) + f === :ColumnsStorage && return _getptr(x, f) + f === :FontWindowScale && return unsafe_load(_getptr(x, f)) + f === :FontDpiScale && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :DrawList && return unsafe_load(_getptr(x, f)) + f === :DrawListInst && return _getptr(x, f) + f === :ParentWindow && return unsafe_load(_getptr(x, f)) + f === :ParentWindowInBeginStack && return unsafe_load(_getptr(x, f)) + f === :RootWindow && return unsafe_load(_getptr(x, f)) + f === :RootWindowPopupTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowDockTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowForTitleBarHighlight && return unsafe_load(_getptr(x, f)) + f === :RootWindowForNav && return unsafe_load(_getptr(x, f)) + f === :ParentWindowForFocusRoute && return unsafe_load(_getptr(x, f)) + f === :NavLastChildNavWindow && return unsafe_load(_getptr(x, f)) + f === :NavLastIds && return _getptr(x, f) + f === :NavRectRel && return _getptr(x, f) + f === :NavPreferredScoringPosRel && return _getptr(x, f) + f === :NavRootFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListIdxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListVtxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :DockIsActive && return unsafe_load(_getptr(x, f)) + f === :DockNodeIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabWantClose && return unsafe_load(_getptr(x, f)) + f === :DockOrder && return unsafe_load(_getptr(x, f)) + f === :DockStyle && return _getptr(x, f) + f === :DockNode && return unsafe_load(_getptr(x, f)) + f === :DockNodeAsHost && return unsafe_load(_getptr(x, f)) + f === :DockId && return unsafe_load(_getptr(x, f)) + f === :DockTabItemStatusFlags && return unsafe_load(_getptr(x, f)) + f === :DockTabItemRect && return _getptr(x, f) return getfield(x, f) end @@ -1673,7 +2252,7 @@ end function Base.setproperty!(x::Ptr{ImGuiWindow}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1841,10 +2420,17 @@ struct ImGuiStyleMod data::NTuple{12, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyleMod}, f::Symbol) f === :VarIdx && return Ptr{ImGuiStyleVar}(x + 0) f === :BackupInt && return Ptr{NTuple{2, Cint}}(x + 4) f === :BackupFloat && return Ptr{NTuple{2, Cfloat}}(x + 4) + error("Unrecognized field of type `ImGuiStyleMod`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) + f === :VarIdx && return unsafe_load(_getptr(x, f)) + f === :BackupInt && return _getptr(x, f) + f === :BackupFloat && return _getptr(x, f) return getfield(x, f) end @@ -1856,7 +2442,7 @@ function Base.getproperty(x::ImGuiStyleMod, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStyleMod}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStyleMod @@ -2231,7 +2817,7 @@ struct ImGuiTableColumn data::NTuple{112, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :Flags && return Ptr{ImGuiTableColumnFlags}(x + 0) f === :WidthGiven && return Ptr{Cfloat}(x + 4) f === :MinX && return Ptr{Cfloat}(x + 8) @@ -2273,6 +2859,51 @@ function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :SortDirectionsAvailCount && return (Ptr{ImU8}(x + 108), 10, 2) f === :SortDirectionsAvailMask && return (Ptr{ImU8}(x + 108), 12, 4) f === :SortDirectionsAvailList && return Ptr{ImU8}(x + 110) + error("Unrecognized field of type `ImGuiTableColumn`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :WidthGiven && return unsafe_load(_getptr(x, f)) + f === :MinX && return unsafe_load(_getptr(x, f)) + f === :MaxX && return unsafe_load(_getptr(x, f)) + f === :WidthRequest && return unsafe_load(_getptr(x, f)) + f === :WidthAuto && return unsafe_load(_getptr(x, f)) + f === :StretchWeight && return unsafe_load(_getptr(x, f)) + f === :InitStretchWeightOrWidth && return unsafe_load(_getptr(x, f)) + f === :ClipRect && return _getptr(x, f) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :WorkMinX && return unsafe_load(_getptr(x, f)) + f === :WorkMaxX && return unsafe_load(_getptr(x, f)) + f === :ItemWidth && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXFrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXUnfrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersUsed && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersIdeal && return unsafe_load(_getptr(x, f)) + f === :NameOffset && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IndexWithinEnabledSet && return unsafe_load(_getptr(x, f)) + f === :PrevEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :NextEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :DrawChannelFrozen && return unsafe_load(_getptr(x, f)) + f === :DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabledNextFrame && return unsafe_load(_getptr(x, f)) + f === :IsVisibleX && return unsafe_load(_getptr(x, f)) + f === :IsVisibleY && return unsafe_load(_getptr(x, f)) + f === :IsRequestOutput && return unsafe_load(_getptr(x, f)) + f === :IsSkipItems && return unsafe_load(_getptr(x, f)) + f === :IsPreserveWidthAuto && return unsafe_load(_getptr(x, f)) + f === :NavLayerCurrent && return unsafe_load(_getptr(x, f)) + f === :AutoFitQueue && return unsafe_load(_getptr(x, f)) + f === :CannotSkipItemsQueue && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailCount && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailMask && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailList && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2300,7 +2931,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumn}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2387,7 +3018,7 @@ struct ImGuiTable data::NTuple{592, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) +function _getptr(x::Ptr{ImGuiTable}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiTableFlags}(x + 4) f === :RawData && return Ptr{Ptr{Cvoid}}(x + 8) @@ -2500,6 +3131,122 @@ function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) f === :HasScrollbarYPrev && return Ptr{Bool}(x + 583) f === :MemoryCompacted && return Ptr{Bool}(x + 584) f === :HostSkipItems && return Ptr{Bool}(x + 585) + error("Unrecognized field of type `ImGuiTable`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :RawData && return unsafe_load(_getptr(x, f)) + f === :TempData && return unsafe_load(_getptr(x, f)) + f === :Columns && return _getptr(x, f) + f === :DisplayOrderToIndex && return _getptr(x, f) + f === :RowCellData && return _getptr(x, f) + f === :EnabledMaskByDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :EnabledMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :VisibleMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :SettingsLoadedFlags && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :ColumnsCount && return unsafe_load(_getptr(x, f)) + f === :CurrentRow && return unsafe_load(_getptr(x, f)) + f === :CurrentColumn && return unsafe_load(_getptr(x, f)) + f === :InstanceCurrent && return unsafe_load(_getptr(x, f)) + f === :InstanceInteracted && return unsafe_load(_getptr(x, f)) + f === :RowPosY1 && return unsafe_load(_getptr(x, f)) + f === :RowPosY2 && return unsafe_load(_getptr(x, f)) + f === :RowMinHeight && return unsafe_load(_getptr(x, f)) + f === :RowCellPaddingY && return unsafe_load(_getptr(x, f)) + f === :RowTextBaseline && return unsafe_load(_getptr(x, f)) + f === :RowIndentOffsetX && return unsafe_load(_getptr(x, f)) + f === :RowFlags && return unsafe_load(_getptr(x, f)) + f === :LastRowFlags && return unsafe_load(_getptr(x, f)) + f === :RowBgColorCounter && return unsafe_load(_getptr(x, f)) + f === :RowBgColor && return _getptr(x, f) + f === :BorderColorStrong && return unsafe_load(_getptr(x, f)) + f === :BorderColorLight && return unsafe_load(_getptr(x, f)) + f === :BorderX1 && return unsafe_load(_getptr(x, f)) + f === :BorderX2 && return unsafe_load(_getptr(x, f)) + f === :HostIndentX && return unsafe_load(_getptr(x, f)) + f === :MinColumnWidth && return unsafe_load(_getptr(x, f)) + f === :OuterPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX1 && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX2 && return unsafe_load(_getptr(x, f)) + f === :InnerWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsGivenWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsAutoFitWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsStretchSumWeights && return unsafe_load(_getptr(x, f)) + f === :ResizedColumnNextWidth && return unsafe_load(_getptr(x, f)) + f === :ResizeLockMinContentsX2 && return unsafe_load(_getptr(x, f)) + f === :RefScale && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersHeight && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersSlope && return unsafe_load(_getptr(x, f)) + f === :OuterRect && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :BgClipRect && return _getptr(x, f) + f === :Bg0ClipRectForDrawCmd && return _getptr(x, f) + f === :Bg2ClipRectForDrawCmd && return _getptr(x, f) + f === :HostClipRect && return _getptr(x, f) + f === :HostBackupInnerClipRect && return _getptr(x, f) + f === :OuterWindow && return unsafe_load(_getptr(x, f)) + f === :InnerWindow && return unsafe_load(_getptr(x, f)) + f === :ColumnsNames && return _getptr(x, f) + f === :DrawSplitter && return unsafe_load(_getptr(x, f)) + f === :InstanceDataFirst && return _getptr(x, f) + f === :InstanceDataExtra && return _getptr(x, f) + f === :SortSpecsSingle && return _getptr(x, f) + f === :SortSpecsMulti && return _getptr(x, f) + f === :SortSpecs && return _getptr(x, f) + f === :SortSpecsCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledFixedCount && return unsafe_load(_getptr(x, f)) + f === :DeclColumnsCount && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersCount && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBody && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBorder && return unsafe_load(_getptr(x, f)) + f === :HighlightColumnHeader && return unsafe_load(_getptr(x, f)) + f === :AutoFitSingleColumn && return unsafe_load(_getptr(x, f)) + f === :ResizedColumn && return unsafe_load(_getptr(x, f)) + f === :LastResizedColumn && return unsafe_load(_getptr(x, f)) + f === :HeldHeaderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumnDir && return unsafe_load(_getptr(x, f)) + f === :LeftMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :LeftMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :ContextPopupColumn && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsCount && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsCount && return unsafe_load(_getptr(x, f)) + f === :RowCellDataCurrent && return unsafe_load(_getptr(x, f)) + f === :DummyDrawChannel && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsLayoutLocked && return unsafe_load(_getptr(x, f)) + f === :IsInsideRow && return unsafe_load(_getptr(x, f)) + f === :IsInitializing && return unsafe_load(_getptr(x, f)) + f === :IsSortSpecsDirty && return unsafe_load(_getptr(x, f)) + f === :IsUsingHeaders && return unsafe_load(_getptr(x, f)) + f === :IsContextPopupOpen && return unsafe_load(_getptr(x, f)) + f === :DisableDefaultContextMenu && return unsafe_load(_getptr(x, f)) + f === :IsSettingsRequestLoad && return unsafe_load(_getptr(x, f)) + f === :IsSettingsDirty && return unsafe_load(_getptr(x, f)) + f === :IsDefaultDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IsResetAllRequest && return unsafe_load(_getptr(x, f)) + f === :IsResetDisplayOrderRequest && return unsafe_load(_getptr(x, f)) + f === :IsUnfrozenRows && return unsafe_load(_getptr(x, f)) + f === :IsDefaultSizingPolicy && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdAliveBeforeTable && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdInTable && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYCurr && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYPrev && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :HostSkipItems && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2527,7 +3274,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTable}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2832,12 +3579,21 @@ struct ImGuiStackLevelInfo data::NTuple{64, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) +function _getptr(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :QueryFrameCount && return Ptr{ImS8}(x + 4) f === :QuerySuccess && return Ptr{Bool}(x + 5) f === :DataType && return (Ptr{ImGuiDataType}(x + 4), 16, 8) f === :Desc && return Ptr{NTuple{57, Cchar}}(x + 7) + error("Unrecognized field of type `ImGuiStackLevelInfo`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :QueryFrameCount && return unsafe_load(_getptr(x, f)) + f === :QuerySuccess && return unsafe_load(_getptr(x, f)) + f === :DataType && return unsafe_load(_getptr(x, f)) + f === :Desc && return _getptr(x, f) return getfield(x, f) end @@ -2865,7 +3621,7 @@ end function Base.setproperty!(x::Ptr{ImGuiStackLevelInfo}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2916,7 +3672,7 @@ struct ImGuiContext data::NTuple{14184, UInt8} end -function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) +function _getptr(x::Ptr{ImGuiContext}, f::Symbol) f === :Initialized && return Ptr{Bool}(x + 0) f === :FontAtlasOwnedByContext && return Ptr{Bool}(x + 1) f === :IO && return Ptr{ImGuiIO}(x + 8) @@ -3207,6 +3963,300 @@ function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) f === :WantTextInputNextFrame && return Ptr{Cint}(x + 14100) f === :TempBuffer && return Ptr{ImVector_char}(x + 14104) f === :TempKeychordName && return Ptr{NTuple{64, Cchar}}(x + 14120) + error("Unrecognized field of type `ImGuiContext`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) + f === :Initialized && return unsafe_load(_getptr(x, f)) + f === :FontAtlasOwnedByContext && return unsafe_load(_getptr(x, f)) + f === :IO && return _getptr(x, f) + f === :PlatformIO && return _getptr(x, f) + f === :Style && return _getptr(x, f) + f === :ConfigFlagsCurrFrame && return unsafe_load(_getptr(x, f)) + f === :ConfigFlagsLastFrame && return unsafe_load(_getptr(x, f)) + f === :Font && return unsafe_load(_getptr(x, f)) + f === :FontSize && return unsafe_load(_getptr(x, f)) + f === :FontBaseSize && return unsafe_load(_getptr(x, f)) + f === :CurrentDpiScale && return unsafe_load(_getptr(x, f)) + f === :DrawListSharedData && return _getptr(x, f) + f === :Time && return unsafe_load(_getptr(x, f)) + f === :FrameCount && return unsafe_load(_getptr(x, f)) + f === :FrameCountEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountPlatformEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountRendered && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScope && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScopeWithImplicitWindow && return unsafe_load(_getptr(x, f)) + f === :WithinEndChild && return unsafe_load(_getptr(x, f)) + f === :GcCompactAll && return unsafe_load(_getptr(x, f)) + f === :TestEngineHookItems && return unsafe_load(_getptr(x, f)) + f === :TestEngine && return unsafe_load(_getptr(x, f)) + f === :InputEventsQueue && return _getptr(x, f) + f === :InputEventsTrail && return _getptr(x, f) + f === :InputEventsNextMouseSource && return unsafe_load(_getptr(x, f)) + f === :InputEventsNextEventId && return unsafe_load(_getptr(x, f)) + f === :Windows && return _getptr(x, f) + f === :WindowsFocusOrder && return _getptr(x, f) + f === :WindowsTempSortBuffer && return _getptr(x, f) + f === :CurrentWindowStack && return _getptr(x, f) + f === :WindowsById && return _getptr(x, f) + f === :WindowsActiveCount && return unsafe_load(_getptr(x, f)) + f === :WindowsHoverPadding && return _getptr(x, f) + f === :DebugBreakInWindow && return unsafe_load(_getptr(x, f)) + f === :CurrentWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindowUnderMovingWindow && return unsafe_load(_getptr(x, f)) + f === :MovingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowRefMousePos && return _getptr(x, f) + f === :WheelingWindowStartFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowScrolledFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowReleaseTimer && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowWheelRemainder && return _getptr(x, f) + f === :WheelingAxisAvg && return _getptr(x, f) + f === :DebugHookIdInfo && return unsafe_load(_getptr(x, f)) + f === :HoveredId && return unsafe_load(_getptr(x, f)) + f === :HoveredIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoveredIdTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdNotActiveTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :HoveredIdDisabled && return unsafe_load(_getptr(x, f)) + f === :ItemUnclipByLog && return unsafe_load(_getptr(x, f)) + f === :ActiveId && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsJustActivated && return unsafe_load(_getptr(x, f)) + f === :ActiveIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :ActiveIdNoClearOnFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenPressedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedThisFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdFromShortcut && return unsafe_load(_getptr(x, f)) + f === :ActiveIdMouseButton && return unsafe_load(_getptr(x, f)) + f === :ActiveIdClickOffset && return _getptr(x, f) + f === :ActiveIdWindow && return unsafe_load(_getptr(x, f)) + f === :ActiveIdSource && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameWindow && return unsafe_load(_getptr(x, f)) + f === :LastActiveId && return unsafe_load(_getptr(x, f)) + f === :LastActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeFromNoneTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyboardKeyPressTime && return unsafe_load(_getptr(x, f)) + f === :KeysMayBeCharInput && return _getptr(x, f) + f === :KeysOwnerData && return _getptr(x, f) + f === :KeysRoutingTable && return _getptr(x, f) + f === :ActiveIdUsingNavDirMask && return unsafe_load(_getptr(x, f)) + f === :ActiveIdUsingAllKeyboardKeys && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInShortcutRouting && return unsafe_load(_getptr(x, f)) + f === :CurrentFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :CurrentItemFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLocateId && return unsafe_load(_getptr(x, f)) + f === :NextItemData && return _getptr(x, f) + f === :LastItemData && return _getptr(x, f) + f === :NextWindowData && return _getptr(x, f) + f === :DebugShowGroupRects && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorIdx && return unsafe_load(_getptr(x, f)) + f === :ColorStack && return _getptr(x, f) + f === :StyleVarStack && return _getptr(x, f) + f === :FontStack && return _getptr(x, f) + f === :FocusScopeStack && return _getptr(x, f) + f === :ItemFlagsStack && return _getptr(x, f) + f === :GroupStack && return _getptr(x, f) + f === :OpenPopupStack && return _getptr(x, f) + f === :BeginPopupStack && return _getptr(x, f) + f === :NavTreeNodeStack && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) + f === :CurrentViewport && return unsafe_load(_getptr(x, f)) + f === :MouseViewport && return unsafe_load(_getptr(x, f)) + f === :MouseLastHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :PlatformLastFocusedViewportId && return unsafe_load(_getptr(x, f)) + f === :FallbackMonitor && return _getptr(x, f) + f === :PlatformMonitorsFullWorkRect && return _getptr(x, f) + f === :ViewportCreatedCount && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowsCreatedCount && return unsafe_load(_getptr(x, f)) + f === :ViewportFocusedStampCount && return unsafe_load(_getptr(x, f)) + f === :NavWindow && return unsafe_load(_getptr(x, f)) + f === :NavId && return unsafe_load(_getptr(x, f)) + f === :NavFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavActivateId && return unsafe_load(_getptr(x, f)) + f === :NavActivateDownId && return unsafe_load(_getptr(x, f)) + f === :NavActivatePressedId && return unsafe_load(_getptr(x, f)) + f === :NavActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavFocusRoute && return _getptr(x, f) + f === :NavHighlightActivatedId && return unsafe_load(_getptr(x, f)) + f === :NavHighlightActivatedTimer && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateId && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavInputSource && return unsafe_load(_getptr(x, f)) + f === :NavLayer && return unsafe_load(_getptr(x, f)) + f === :NavLastValidSelectionUserData && return unsafe_load(_getptr(x, f)) + f === :NavIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :NavMousePosDirty && return unsafe_load(_getptr(x, f)) + f === :NavDisableHighlight && return unsafe_load(_getptr(x, f)) + f === :NavDisableMouseHover && return unsafe_load(_getptr(x, f)) + f === :NavAnyRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequestFromMove && return unsafe_load(_getptr(x, f)) + f === :NavInitResult && return _getptr(x, f) + f === :NavMoveSubmitted && return unsafe_load(_getptr(x, f)) + f === :NavMoveScoringItems && return unsafe_load(_getptr(x, f)) + f === :NavMoveForwardToNextFrame && return unsafe_load(_getptr(x, f)) + f === :NavMoveFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveScrollFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavMoveDir && return unsafe_load(_getptr(x, f)) + f === :NavMoveDirForDebug && return unsafe_load(_getptr(x, f)) + f === :NavMoveClipDir && return unsafe_load(_getptr(x, f)) + f === :NavScoringRect && return _getptr(x, f) + f === :NavScoringNoClipRect && return _getptr(x, f) + f === :NavScoringDebugCount && return unsafe_load(_getptr(x, f)) + f === :NavTabbingDir && return unsafe_load(_getptr(x, f)) + f === :NavTabbingCounter && return unsafe_load(_getptr(x, f)) + f === :NavMoveResultLocal && return _getptr(x, f) + f === :NavMoveResultLocalVisible && return _getptr(x, f) + f === :NavMoveResultOther && return _getptr(x, f) + f === :NavTabbingResultFirst && return _getptr(x, f) + f === :ConfigNavWindowingKeyNext && return unsafe_load(_getptr(x, f)) + f === :ConfigNavWindowingKeyPrev && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTarget && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTargetAnim && return unsafe_load(_getptr(x, f)) + f === :NavWindowingListWindow && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTimer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingHighlightAlpha && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleLayer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleKey && return unsafe_load(_getptr(x, f)) + f === :NavWindowingAccumDeltaPos && return _getptr(x, f) + f === :NavWindowingAccumDeltaSize && return _getptr(x, f) + f === :DimBgRatio && return unsafe_load(_getptr(x, f)) + f === :DragDropActive && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinSource && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinTarget && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropMouseButton && return unsafe_load(_getptr(x, f)) + f === :DragDropPayload && return _getptr(x, f) + f === :DragDropTargetRect && return _getptr(x, f) + f === :DragDropTargetClipRect && return _getptr(x, f) + f === :DragDropTargetId && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurrRectSurface && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurr && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdPrev && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropHoldJustPressedId && return unsafe_load(_getptr(x, f)) + f === :DragDropPayloadBufHeap && return _getptr(x, f) + f === :DragDropPayloadBufLocal && return _getptr(x, f) + f === :ClipperTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :ClipperTempData && return _getptr(x, f) + f === :CurrentTable && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInTable && return unsafe_load(_getptr(x, f)) + f === :TablesTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :TablesTempData && return _getptr(x, f) + f === :Tables && return _getptr(x, f) + f === :TablesLastTimeActive && return _getptr(x, f) + f === :DrawChannelsTempMergeBuffer && return _getptr(x, f) + f === :CurrentTabBar && return unsafe_load(_getptr(x, f)) + f === :TabBars && return _getptr(x, f) + f === :CurrentTabBarStack && return _getptr(x, f) + f === :ShrinkWidthBuffer && return _getptr(x, f) + f === :HoverItemDelayId && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayClearTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :HoverWindowUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :MouseCursor && return unsafe_load(_getptr(x, f)) + f === :MouseStationaryTimer && return unsafe_load(_getptr(x, f)) + f === :MouseLastValidPos && return _getptr(x, f) + f === :InputTextState && return _getptr(x, f) + f === :InputTextDeactivatedState && return _getptr(x, f) + f === :InputTextPasswordFont && return _getptr(x, f) + f === :TempInputId && return unsafe_load(_getptr(x, f)) + f === :DataTypeZeroValue && return _getptr(x, f) + f === :BeginMenuDepth && return unsafe_load(_getptr(x, f)) + f === :BeginComboDepth && return unsafe_load(_getptr(x, f)) + f === :ColorEditOptions && return unsafe_load(_getptr(x, f)) + f === :ColorEditCurrentID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedHue && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedSat && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedColor && return unsafe_load(_getptr(x, f)) + f === :ColorPickerRef && return _getptr(x, f) + f === :ComboPreviewData && return _getptr(x, f) + f === :WindowResizeBorderExpectedRect && return _getptr(x, f) + f === :WindowResizeRelativeMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSeekMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarClickDeltaToGrabCenter && return unsafe_load(_getptr(x, f)) + f === :SliderGrabClickOffset && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :DragSpeedDefaultRatio && return unsafe_load(_getptr(x, f)) + f === :DisabledAlphaBackup && return unsafe_load(_getptr(x, f)) + f === :DisabledStackSize && return unsafe_load(_getptr(x, f)) + f === :LockMarkEdited && return unsafe_load(_getptr(x, f)) + f === :TooltipOverrideCount && return unsafe_load(_getptr(x, f)) + f === :ClipboardHandlerData && return _getptr(x, f) + f === :MenusIdSubmittedThisFrame && return _getptr(x, f) + f === :TypingSelectState && return _getptr(x, f) + f === :PlatformImeData && return _getptr(x, f) + f === :PlatformImeDataPrev && return _getptr(x, f) + f === :PlatformImeViewport && return unsafe_load(_getptr(x, f)) + f === :DockContext && return _getptr(x, f) + f === :DockNodeWindowMenuHandler && return unsafe_load(_getptr(x, f)) + f === :SettingsLoaded && return unsafe_load(_getptr(x, f)) + f === :SettingsDirtyTimer && return unsafe_load(_getptr(x, f)) + f === :SettingsIniData && return _getptr(x, f) + f === :SettingsHandlers && return _getptr(x, f) + f === :SettingsWindows && return _getptr(x, f) + f === :SettingsTables && return _getptr(x, f) + f === :Hooks && return _getptr(x, f) + f === :HookIdNext && return unsafe_load(_getptr(x, f)) + f === :LocalizationTable && return _getptr(x, f) + f === :LogEnabled && return unsafe_load(_getptr(x, f)) + f === :LogType && return unsafe_load(_getptr(x, f)) + f === :LogFile && return unsafe_load(_getptr(x, f)) + f === :LogBuffer && return _getptr(x, f) + f === :LogNextPrefix && return unsafe_load(_getptr(x, f)) + f === :LogNextSuffix && return unsafe_load(_getptr(x, f)) + f === :LogLinePosY && return unsafe_load(_getptr(x, f)) + f === :LogLineFirstItem && return unsafe_load(_getptr(x, f)) + f === :LogDepthRef && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpand && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpandDefault && return unsafe_load(_getptr(x, f)) + f === :DebugLogFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogBuf && return _getptr(x, f) + f === :DebugLogIndex && return _getptr(x, f) + f === :DebugLogAutoDisableFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogAutoDisableFrames && return unsafe_load(_getptr(x, f)) + f === :DebugLocateFrames && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInLocateId && return unsafe_load(_getptr(x, f)) + f === :DebugBreakKeyChord && return unsafe_load(_getptr(x, f)) + f === :DebugBeginReturnValueCullDepth && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerActive && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerMouseButton && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerBreakId && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorTime && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorBackup && return _getptr(x, f) + f === :DebugMetricsConfig && return _getptr(x, f) + f === :DebugIDStackTool && return _getptr(x, f) + f === :DebugAllocInfo && return _getptr(x, f) + f === :DebugHoveredDockNode && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrame && return _getptr(x, f) + f === :FramerateSecPerFrameIdx && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameCount && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameAccum && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouseNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboardNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantTextInputNextFrame && return unsafe_load(_getptr(x, f)) + f === :TempBuffer && return _getptr(x, f) + f === :TempKeychordName && return _getptr(x, f) return getfield(x, f) end @@ -3234,7 +4284,7 @@ end function Base.setproperty!(x::Ptr{ImGuiContext}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -3279,16 +4329,24 @@ struct ImGuiSizeCallbackData CurrentSize::ImVec2 DesiredSize::ImVec2 end -function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) +function _getptr(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) f === :UserData && return Ptr{Ptr{Cvoid}}(x + 0) f === :Pos && return Ptr{ImVec2}(x + 8) f === :CurrentSize && return Ptr{ImVec2}(x + 16) f === :DesiredSize && return Ptr{ImVec2}(x + 24) + error("Unrecognized field of type `ImGuiSizeCallbackData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :CurrentSize && return _getptr(x, f) + f === :DesiredSize && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiSizeCallbackData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -4381,7 +5439,7 @@ struct ImGuiTableColumnSettings data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :WidthOrWeight && return Ptr{Cfloat}(x + 0) f === :UserID && return Ptr{ImGuiID}(x + 4) f === :Index && return Ptr{ImGuiTableColumnIdx}(x + 8) @@ -4390,6 +5448,18 @@ function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :SortDirection && return (Ptr{ImU8}(x + 12), 16, 2) f === :IsEnabled && return (Ptr{ImU8}(x + 12), 18, 1) f === :IsStretch && return (Ptr{ImU8}(x + 12), 19, 1) + error("Unrecognized field of type `ImGuiTableColumnSettings`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) + f === :WidthOrWeight && return unsafe_load(_getptr(x, f)) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :Index && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsStretch && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -4417,7 +5487,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumnSettings}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) diff --git a/lib/x86_64-linux-musl.jl b/lib/x86_64-linux-musl.jl index e03b7c5..dd5f2cb 100644 --- a/lib/x86_64-linux-musl.jl +++ b/lib/x86_64-linux-musl.jl @@ -1,4 +1,4 @@ -using CEnum +using CEnum: CEnum, @cenum to_c_type(t::Type) = t to_c_type_pairs(va_list) = map(enumerate(to_c_type.(va_list))) do (ind, type) @@ -30,16 +30,24 @@ struct ImVec4 z::Cfloat w::Cfloat end -function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) +function _getptr(x::Ptr{ImVec4}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) f === :z && return Ptr{Cfloat}(x + 8) f === :w && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImVec4`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) + f === :z && return unsafe_load(_getptr(x, f)) + f === :w && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec4}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -54,7 +62,7 @@ struct ImDrawCmd UserCallback::ImDrawCallback UserCallbackData::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) +function _getptr(x::Ptr{ImDrawCmd}, f::Symbol) f === :ClipRect && return Ptr{ImVec4}(x + 0) f === :TextureId && return Ptr{ImTextureID}(x + 16) f === :VtxOffset && return Ptr{Cuint}(x + 24) @@ -62,11 +70,22 @@ function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) f === :ElemCount && return Ptr{Cuint}(x + 32) f === :UserCallback && return Ptr{ImDrawCallback}(x + 40) f === :UserCallbackData && return Ptr{Ptr{Cvoid}}(x + 48) + error("Unrecognized field of type `ImDrawCmd`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) + f === :ClipRect && return _getptr(x, f) + f === :TextureId && return unsafe_load(_getptr(x, f)) + f === :VtxOffset && return unsafe_load(_getptr(x, f)) + f === :IdxOffset && return unsafe_load(_getptr(x, f)) + f === :ElemCount && return unsafe_load(_getptr(x, f)) + f === :UserCallback && return unsafe_load(_getptr(x, f)) + f === :UserCallbackData && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawCmd}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -93,14 +112,20 @@ struct ImVec2 x::Cfloat y::Cfloat end -function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) +function _getptr(x::Ptr{ImVec2}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) + error("Unrecognized field of type `ImVec2`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec2}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -117,6 +142,24 @@ struct ImVector_ImDrawVert Capacity::Cint Data::Ptr{ImDrawVert} end +function _getptr(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return Ptr{Cint}(x + 0) + f === :Capacity && return Ptr{Cint}(x + 4) + f === :Data && return Ptr{Ptr{ImDrawVert}}(x + 8) + error("Unrecognized field of type `ImVector_ImDrawVert`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return unsafe_load(_getptr(x, f)) + f === :Capacity && return unsafe_load(_getptr(x, f)) + f === :Data && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImVector_ImDrawVert}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImDrawListFlags = Cint @@ -140,7 +183,7 @@ struct ImFontGlyph data::NTuple{40, UInt8} end -function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) +function _getptr(x::Ptr{ImFontGlyph}, f::Symbol) f === :Colored && return (Ptr{Cuint}(x + 0), 0, 1) f === :Visible && return (Ptr{Cuint}(x + 0), 1, 1) f === :Codepoint && return (Ptr{Cuint}(x + 0), 2, 30) @@ -153,6 +196,22 @@ function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) f === :V0 && return Ptr{Cfloat}(x + 28) f === :U1 && return Ptr{Cfloat}(x + 32) f === :V1 && return Ptr{Cfloat}(x + 36) + error("Unrecognized field of type `ImFontGlyph`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) + f === :Colored && return unsafe_load(_getptr(x, f)) + f === :Visible && return unsafe_load(_getptr(x, f)) + f === :Codepoint && return unsafe_load(_getptr(x, f)) + f === :AdvanceX && return unsafe_load(_getptr(x, f)) + f === :X0 && return unsafe_load(_getptr(x, f)) + f === :Y0 && return unsafe_load(_getptr(x, f)) + f === :X1 && return unsafe_load(_getptr(x, f)) + f === :Y1 && return unsafe_load(_getptr(x, f)) + f === :U0 && return unsafe_load(_getptr(x, f)) + f === :V0 && return unsafe_load(_getptr(x, f)) + f === :U1 && return unsafe_load(_getptr(x, f)) + f === :V1 && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -180,7 +239,7 @@ end function Base.setproperty!(x::Ptr{ImFontGlyph}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -268,7 +327,7 @@ function Base.getproperty(x::ImFontConfig, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) +function _getptr(x::Ptr{ImFontConfig}, f::Symbol) f === :FontData && return Ptr{Ptr{Cvoid}}(x + 0) f === :FontDataSize && return Ptr{Cint}(x + 8) f === :FontDataOwnedByAtlas && return Ptr{Bool}(x + 12) @@ -289,11 +348,35 @@ function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) f === :EllipsisChar && return Ptr{ImWchar}(x + 88) f === :Name && return Ptr{NTuple{40, Cchar}}(x + 90) f === :DstFont && return Ptr{Ptr{ImFont}}(x + 136) + error("Unrecognized field of type `ImFontConfig`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) + f === :FontData && return unsafe_load(_getptr(x, f)) + f === :FontDataSize && return unsafe_load(_getptr(x, f)) + f === :FontDataOwnedByAtlas && return unsafe_load(_getptr(x, f)) + f === :FontNo && return unsafe_load(_getptr(x, f)) + f === :SizePixels && return unsafe_load(_getptr(x, f)) + f === :OversampleH && return unsafe_load(_getptr(x, f)) + f === :OversampleV && return unsafe_load(_getptr(x, f)) + f === :PixelSnapH && return unsafe_load(_getptr(x, f)) + f === :GlyphExtraSpacing && return _getptr(x, f) + f === :GlyphOffset && return _getptr(x, f) + f === :GlyphRanges && return unsafe_load(_getptr(x, f)) + f === :GlyphMinAdvanceX && return unsafe_load(_getptr(x, f)) + f === :GlyphMaxAdvanceX && return unsafe_load(_getptr(x, f)) + f === :MergeMode && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :RasterizerMultiply && return unsafe_load(_getptr(x, f)) + f === :RasterizerDensity && return unsafe_load(_getptr(x, f)) + f === :EllipsisChar && return unsafe_load(_getptr(x, f)) + f === :Name && return _getptr(x, f) + f === :DstFont && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontConfig}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImFontConfig @@ -330,7 +413,7 @@ struct ImFontAtlas PackIdMouseCursors::Cint PackIdLines::Cint end -function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) +function _getptr(x::Ptr{ImFontAtlas}, f::Symbol) f === :Flags && return Ptr{ImFontAtlasFlags}(x + 0) f === :TexID && return Ptr{ImTextureID}(x + 8) f === :TexDesiredWidth && return Ptr{Cint}(x + 16) @@ -353,11 +436,37 @@ function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) f === :FontBuilderFlags && return Ptr{Cuint}(x + 1168) f === :PackIdMouseCursors && return Ptr{Cint}(x + 1172) f === :PackIdLines && return Ptr{Cint}(x + 1176) + error("Unrecognized field of type `ImFontAtlas`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :TexID && return unsafe_load(_getptr(x, f)) + f === :TexDesiredWidth && return unsafe_load(_getptr(x, f)) + f === :TexGlyphPadding && return unsafe_load(_getptr(x, f)) + f === :Locked && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :TexReady && return unsafe_load(_getptr(x, f)) + f === :TexPixelsUseColors && return unsafe_load(_getptr(x, f)) + f === :TexPixelsAlpha8 && return unsafe_load(_getptr(x, f)) + f === :TexPixelsRGBA32 && return unsafe_load(_getptr(x, f)) + f === :TexWidth && return unsafe_load(_getptr(x, f)) + f === :TexHeight && return unsafe_load(_getptr(x, f)) + f === :TexUvScale && return _getptr(x, f) + f === :TexUvWhitePixel && return _getptr(x, f) + f === :Fonts && return _getptr(x, f) + f === :CustomRects && return _getptr(x, f) + f === :ConfigData && return _getptr(x, f) + f === :TexUvLines && return _getptr(x, f) + f === :FontBuilderIO && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :PackIdMouseCursors && return unsafe_load(_getptr(x, f)) + f === :PackIdLines && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontAtlas}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -454,7 +563,7 @@ struct ImDrawList _FringeScale::Cfloat _OwnerName::Ptr{Cchar} end -function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) +function _getptr(x::Ptr{ImDrawList}, f::Symbol) f === :CmdBuffer && return Ptr{ImVector_ImDrawCmd}(x + 0) f === :IdxBuffer && return Ptr{ImVector_ImDrawIdx}(x + 16) f === :VtxBuffer && return Ptr{ImVector_ImDrawVert}(x + 32) @@ -470,11 +579,30 @@ function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) f === :_TextureIdStack && return Ptr{ImVector_ImTextureID}(x + 168) f === :_FringeScale && return Ptr{Cfloat}(x + 184) f === :_OwnerName && return Ptr{Ptr{Cchar}}(x + 192) + error("Unrecognized field of type `ImDrawList`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) + f === :CmdBuffer && return _getptr(x, f) + f === :IdxBuffer && return _getptr(x, f) + f === :VtxBuffer && return _getptr(x, f) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :_VtxCurrentIdx && return unsafe_load(_getptr(x, f)) + f === :_Data && return unsafe_load(_getptr(x, f)) + f === :_VtxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_IdxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_Path && return _getptr(x, f) + f === :_CmdHeader && return _getptr(x, f) + f === :_Splitter && return _getptr(x, f) + f === :_ClipRectStack && return _getptr(x, f) + f === :_TextureIdStack && return _getptr(x, f) + f === :_FringeScale && return unsafe_load(_getptr(x, f)) + f === :_OwnerName && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawList}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -513,7 +641,7 @@ function Base.getproperty(x::ImGuiViewport, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) +function _getptr(x::Ptr{ImGuiViewport}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiViewportFlags}(x + 4) f === :Pos && return Ptr{ImVec2}(x + 8) @@ -531,11 +659,32 @@ function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) f === :PlatformRequestMove && return Ptr{Bool}(x + 89) f === :PlatformRequestResize && return Ptr{Bool}(x + 90) f === :PlatformRequestClose && return Ptr{Bool}(x + 91) + error("Unrecognized field of type `ImGuiViewport`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :ParentViewportId && return unsafe_load(_getptr(x, f)) + f === :DrawData && return unsafe_load(_getptr(x, f)) + f === :RendererUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) + f === :PlatformHandleRaw && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowCreated && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestMove && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestResize && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestClose && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiViewport}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImDrawData @@ -549,7 +698,7 @@ struct ImDrawData FramebufferScale::ImVec2 OwnerViewport::Ptr{ImGuiViewport} end -function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) +function _getptr(x::Ptr{ImDrawData}, f::Symbol) f === :Valid && return Ptr{Bool}(x + 0) f === :CmdListsCount && return Ptr{Cint}(x + 4) f === :TotalIdxCount && return Ptr{Cint}(x + 8) @@ -559,11 +708,24 @@ function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) f === :DisplaySize && return Ptr{ImVec2}(x + 40) f === :FramebufferScale && return Ptr{ImVec2}(x + 48) f === :OwnerViewport && return Ptr{Ptr{ImGuiViewport}}(x + 56) + error("Unrecognized field of type `ImDrawData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) + f === :Valid && return unsafe_load(_getptr(x, f)) + f === :CmdListsCount && return unsafe_load(_getptr(x, f)) + f === :TotalIdxCount && return unsafe_load(_getptr(x, f)) + f === :TotalVtxCount && return unsafe_load(_getptr(x, f)) + f === :CmdLists && return _getptr(x, f) + f === :DisplayPos && return _getptr(x, f) + f === :DisplaySize && return _getptr(x, f) + f === :FramebufferScale && return _getptr(x, f) + f === :OwnerViewport && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -600,6 +762,26 @@ struct ImGuiKeyData DownDurationPrev::Cfloat AnalogValue::Cfloat end +function _getptr(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return Ptr{Bool}(x + 0) + f === :DownDuration && return Ptr{Cfloat}(x + 4) + f === :DownDurationPrev && return Ptr{Cfloat}(x + 8) + f === :AnalogValue && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImGuiKeyData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return unsafe_load(_getptr(x, f)) + f === :DownDuration && return unsafe_load(_getptr(x, f)) + f === :DownDurationPrev && return unsafe_load(_getptr(x, f)) + f === :AnalogValue && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImGuiKeyData}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImU16 = Cushort @@ -713,7 +895,7 @@ function Base.getproperty(x::ImGuiIO, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiIO}, f::Symbol) f === :ConfigFlags && return Ptr{ImGuiConfigFlags}(x + 0) f === :BackendFlags && return Ptr{ImGuiBackendFlags}(x + 4) f === :DisplaySize && return Ptr{ImVec2}(x + 8) @@ -814,11 +996,115 @@ function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) f === :BackendUsingLegacyNavInputArray && return Ptr{Bool}(x + 3003) f === :InputQueueSurrogate && return Ptr{ImWchar16}(x + 3004) f === :InputQueueCharacters && return Ptr{ImVector_ImWchar}(x + 3008) + error("Unrecognized field of type `ImGuiIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) + f === :ConfigFlags && return unsafe_load(_getptr(x, f)) + f === :BackendFlags && return unsafe_load(_getptr(x, f)) + f === :DisplaySize && return _getptr(x, f) + f === :DeltaTime && return unsafe_load(_getptr(x, f)) + f === :IniSavingRate && return unsafe_load(_getptr(x, f)) + f === :IniFilename && return unsafe_load(_getptr(x, f)) + f === :LogFilename && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Fonts && return unsafe_load(_getptr(x, f)) + f === :FontGlobalScale && return unsafe_load(_getptr(x, f)) + f === :FontAllowUserScaling && return unsafe_load(_getptr(x, f)) + f === :FontDefault && return unsafe_load(_getptr(x, f)) + f === :DisplayFramebufferScale && return _getptr(x, f) + f === :ConfigDockingNoSplit && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingWithShift && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingAlwaysTabBar && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingTransparentPayload && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoAutoMerge && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoTaskBarIcon && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDecoration && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDefaultParent && return unsafe_load(_getptr(x, f)) + f === :MouseDrawCursor && return unsafe_load(_getptr(x, f)) + f === :ConfigMacOSXBehaviors && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTrickleEventQueue && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextCursorBlink && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextEnterKeepActive && return unsafe_load(_getptr(x, f)) + f === :ConfigDragClickToInputText && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsResizeFromEdges && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsMoveFromTitleBarOnly && return unsafe_load(_getptr(x, f)) + f === :ConfigMemoryCompactTimer && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickTime && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickMaxDist && return unsafe_load(_getptr(x, f)) + f === :MouseDragThreshold && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatDelay && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatRate && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIsDebuggerPresent && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueOnce && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueLoop && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIgnoreFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIniSettings && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformName && return unsafe_load(_getptr(x, f)) + f === :BackendRendererName && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformUserData && return unsafe_load(_getptr(x, f)) + f === :BackendRendererUserData && return unsafe_load(_getptr(x, f)) + f === :BackendLanguageUserData && return unsafe_load(_getptr(x, f)) + f === :GetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :SetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :ClipboardUserData && return unsafe_load(_getptr(x, f)) + f === :SetPlatformImeDataFn && return unsafe_load(_getptr(x, f)) + f === :PlatformLocaleDecimalPoint && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouse && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboard && return unsafe_load(_getptr(x, f)) + f === :WantTextInput && return unsafe_load(_getptr(x, f)) + f === :WantSetMousePos && return unsafe_load(_getptr(x, f)) + f === :WantSaveIniSettings && return unsafe_load(_getptr(x, f)) + f === :NavActive && return unsafe_load(_getptr(x, f)) + f === :NavVisible && return unsafe_load(_getptr(x, f)) + f === :Framerate && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderVertices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderIndices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderWindows && return unsafe_load(_getptr(x, f)) + f === :MetricsActiveWindows && return unsafe_load(_getptr(x, f)) + f === :MouseDelta && return _getptr(x, f) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseDown && return _getptr(x, f) + f === :MouseWheel && return unsafe_load(_getptr(x, f)) + f === :MouseWheelH && return unsafe_load(_getptr(x, f)) + f === :MouseSource && return unsafe_load(_getptr(x, f)) + f === :MouseHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :KeyCtrl && return unsafe_load(_getptr(x, f)) + f === :KeyShift && return unsafe_load(_getptr(x, f)) + f === :KeyAlt && return unsafe_load(_getptr(x, f)) + f === :KeySuper && return unsafe_load(_getptr(x, f)) + f === :KeyMods && return unsafe_load(_getptr(x, f)) + f === :KeysData && return _getptr(x, f) + f === :WantCaptureMouseUnlessPopupClose && return unsafe_load(_getptr(x, f)) + f === :MousePosPrev && return _getptr(x, f) + f === :MouseClickedPos && return _getptr(x, f) + f === :MouseClickedTime && return _getptr(x, f) + f === :MouseClicked && return _getptr(x, f) + f === :MouseDoubleClicked && return _getptr(x, f) + f === :MouseClickedCount && return _getptr(x, f) + f === :MouseClickedLastCount && return _getptr(x, f) + f === :MouseReleased && return _getptr(x, f) + f === :MouseDownOwned && return _getptr(x, f) + f === :MouseDownOwnedUnlessPopupClose && return _getptr(x, f) + f === :MouseWheelRequestAxisSwap && return unsafe_load(_getptr(x, f)) + f === :MouseCtrlLeftAsRightClick && return unsafe_load(_getptr(x, f)) + f === :MouseDownDuration && return _getptr(x, f) + f === :MouseDownDurationPrev && return _getptr(x, f) + f === :MouseDragMaxDistanceAbs && return _getptr(x, f) + f === :MouseDragMaxDistanceSqr && return _getptr(x, f) + f === :PenPressure && return unsafe_load(_getptr(x, f)) + f === :AppFocusLost && return unsafe_load(_getptr(x, f)) + f === :AppAcceptingEvents && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyKeyArrays && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyNavInputArray && return unsafe_load(_getptr(x, f)) + f === :InputQueueSurrogate && return unsafe_load(_getptr(x, f)) + f === :InputQueueCharacters && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImGuiPlatformMonitor @@ -829,18 +1115,28 @@ struct ImGuiPlatformMonitor DpiScale::Cfloat PlatformHandle::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) f === :MainPos && return Ptr{ImVec2}(x + 0) f === :MainSize && return Ptr{ImVec2}(x + 8) f === :WorkPos && return Ptr{ImVec2}(x + 16) f === :WorkSize && return Ptr{ImVec2}(x + 24) f === :DpiScale && return Ptr{Cfloat}(x + 32) f === :PlatformHandle && return Ptr{Ptr{Cvoid}}(x + 40) + error("Unrecognized field of type `ImGuiPlatformMonitor`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) + f === :MainPos && return _getptr(x, f) + f === :MainSize && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformMonitor}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -883,7 +1179,7 @@ struct ImGuiPlatformIO Monitors::ImVector_ImGuiPlatformMonitor Viewports::ImVector_ImGuiViewportPtr end -function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Platform_CreateWindow && return Ptr{Ptr{Cvoid}}(x + 0) f === :Platform_DestroyWindow && return Ptr{Ptr{Cvoid}}(x + 8) f === :Platform_ShowWindow && return Ptr{Ptr{Cvoid}}(x + 16) @@ -909,11 +1205,40 @@ function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Renderer_SwapBuffers && return Ptr{Ptr{Cvoid}}(x + 176) f === :Monitors && return Ptr{ImVector_ImGuiPlatformMonitor}(x + 184) f === :Viewports && return Ptr{ImVector_ImGuiViewportPtr}(x + 200) + error("Unrecognized field of type `ImGuiPlatformIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) + f === :Platform_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_ShowWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowMinimized && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowTitle && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowAlpha && return unsafe_load(_getptr(x, f)) + f === :Platform_UpdateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowDpiScale && return unsafe_load(_getptr(x, f)) + f === :Platform_OnChangedViewport && return unsafe_load(_getptr(x, f)) + f === :Platform_CreateVkSurface && return unsafe_load(_getptr(x, f)) + f === :Renderer_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Renderer_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Monitors && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -983,7 +1308,7 @@ struct ImGuiStyle HoverFlagsForTooltipMouse::ImGuiHoveredFlags HoverFlagsForTooltipNav::ImGuiHoveredFlags end -function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyle}, f::Symbol) f === :Alpha && return Ptr{Cfloat}(x + 0) f === :DisabledAlpha && return Ptr{Cfloat}(x + 4) f === :WindowPadding && return Ptr{ImVec2}(x + 8) @@ -1037,11 +1362,68 @@ function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) f === :HoverDelayNormal && return Ptr{Cfloat}(x + 1128) f === :HoverFlagsForTooltipMouse && return Ptr{ImGuiHoveredFlags}(x + 1132) f === :HoverFlagsForTooltipNav && return Ptr{ImGuiHoveredFlags}(x + 1136) + error("Unrecognized field of type `ImGuiStyle`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) + f === :Alpha && return unsafe_load(_getptr(x, f)) + f === :DisabledAlpha && return unsafe_load(_getptr(x, f)) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :WindowMinSize && return _getptr(x, f) + f === :WindowTitleAlign && return _getptr(x, f) + f === :WindowMenuButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ChildRounding && return unsafe_load(_getptr(x, f)) + f === :ChildBorderSize && return unsafe_load(_getptr(x, f)) + f === :PopupRounding && return unsafe_load(_getptr(x, f)) + f === :PopupBorderSize && return unsafe_load(_getptr(x, f)) + f === :FramePadding && return _getptr(x, f) + f === :FrameRounding && return unsafe_load(_getptr(x, f)) + f === :FrameBorderSize && return unsafe_load(_getptr(x, f)) + f === :ItemSpacing && return _getptr(x, f) + f === :ItemInnerSpacing && return _getptr(x, f) + f === :CellPadding && return _getptr(x, f) + f === :TouchExtraPadding && return _getptr(x, f) + f === :IndentSpacing && return unsafe_load(_getptr(x, f)) + f === :ColumnsMinSpacing && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSize && return unsafe_load(_getptr(x, f)) + f === :ScrollbarRounding && return unsafe_load(_getptr(x, f)) + f === :GrabMinSize && return unsafe_load(_getptr(x, f)) + f === :GrabRounding && return unsafe_load(_getptr(x, f)) + f === :LogSliderDeadzone && return unsafe_load(_getptr(x, f)) + f === :TabRounding && return unsafe_load(_getptr(x, f)) + f === :TabBorderSize && return unsafe_load(_getptr(x, f)) + f === :TabMinWidthForCloseButton && return unsafe_load(_getptr(x, f)) + f === :TabBarBorderSize && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersAngle && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersTextAlign && return _getptr(x, f) + f === :ColorButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ButtonTextAlign && return _getptr(x, f) + f === :SelectableTextAlign && return _getptr(x, f) + f === :SeparatorTextBorderSize && return unsafe_load(_getptr(x, f)) + f === :SeparatorTextAlign && return _getptr(x, f) + f === :SeparatorTextPadding && return _getptr(x, f) + f === :DisplayWindowPadding && return _getptr(x, f) + f === :DisplaySafeAreaPadding && return _getptr(x, f) + f === :DockingSeparatorSize && return unsafe_load(_getptr(x, f)) + f === :MouseCursorScale && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLines && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLinesUseTex && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedFill && return unsafe_load(_getptr(x, f)) + f === :CurveTessellationTol && return unsafe_load(_getptr(x, f)) + f === :CircleTessellationMaxError && return unsafe_load(_getptr(x, f)) + f === :Colors && return _getptr(x, f) + f === :HoverStationaryDelay && return unsafe_load(_getptr(x, f)) + f === :HoverDelayShort && return unsafe_load(_getptr(x, f)) + f === :HoverDelayNormal && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipMouse && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipNav && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiStyle}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -1069,7 +1451,7 @@ struct ImGuiInputEvent data::NTuple{28, UInt8} end -function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) +function _getptr(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Type && return Ptr{ImGuiInputEventType}(x + 0) f === :Source && return Ptr{ImGuiInputSource}(x + 4) f === :EventId && return Ptr{ImU32}(x + 8) @@ -1081,6 +1463,21 @@ function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Text && return Ptr{ImGuiInputEventText}(x + 12) f === :AppFocused && return Ptr{ImGuiInputEventAppFocused}(x + 12) f === :AddedByTestEngine && return Ptr{Bool}(x + 24) + error("Unrecognized field of type `ImGuiInputEvent`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) + f === :Type && return unsafe_load(_getptr(x, f)) + f === :Source && return unsafe_load(_getptr(x, f)) + f === :EventId && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseWheel && return _getptr(x, f) + f === :MouseButton && return _getptr(x, f) + f === :MouseViewport && return _getptr(x, f) + f === :Key && return _getptr(x, f) + f === :Text && return _getptr(x, f) + f === :AppFocused && return _getptr(x, f) + f === :AddedByTestEngine && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1092,7 +1489,7 @@ function Base.getproperty(x::ImGuiInputEvent, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiInputEvent}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiInputEvent @@ -1200,11 +1597,19 @@ struct ImGuiStoragePair data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) +function _getptr(x::Ptr{ImGuiStoragePair}, f::Symbol) f === :key && return Ptr{ImGuiID}(x + 0) f === :val_i && return Ptr{Cint}(x + 8) f === :val_f && return Ptr{Cfloat}(x + 8) f === :val_p && return Ptr{Ptr{Cvoid}}(x + 8) + error("Unrecognized field of type `ImGuiStoragePair`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) + f === :key && return unsafe_load(_getptr(x, f)) + f === :val_i && return unsafe_load(_getptr(x, f)) + f === :val_f && return unsafe_load(_getptr(x, f)) + f === :val_p && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1216,7 +1621,7 @@ function Base.getproperty(x::ImGuiStoragePair, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStoragePair}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStoragePair @@ -1424,7 +1829,7 @@ struct ImGuiDockNode data::NTuple{208, UInt8} end -function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) +function _getptr(x::Ptr{ImGuiDockNode}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :SharedFlags && return Ptr{ImGuiDockNodeFlags}(x + 4) f === :LocalFlags && return Ptr{ImGuiDockNodeFlags}(x + 8) @@ -1467,6 +1872,52 @@ function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) f === :WantMouseMove && return (Ptr{Bool}(x + 200), 17, 1) f === :WantHiddenTabBarUpdate && return (Ptr{Bool}(x + 200), 18, 1) f === :WantHiddenTabBarToggle && return (Ptr{Bool}(x + 200), 19, 1) + error("Unrecognized field of type `ImGuiDockNode`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :SharedFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlagsInWindows && return unsafe_load(_getptr(x, f)) + f === :MergedFlags && return unsafe_load(_getptr(x, f)) + f === :State && return unsafe_load(_getptr(x, f)) + f === :ParentNode && return unsafe_load(_getptr(x, f)) + f === :ChildNodes && return _getptr(x, f) + f === :Windows && return _getptr(x, f) + f === :TabBar && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeRef && return _getptr(x, f) + f === :SplitAxis && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :LastBgColor && return unsafe_load(_getptr(x, f)) + f === :HostWindow && return unsafe_load(_getptr(x, f)) + f === :VisibleWindow && return unsafe_load(_getptr(x, f)) + f === :CentralNode && return unsafe_load(_getptr(x, f)) + f === :OnlyNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :CountNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :LastFrameAlive && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameFocused && return unsafe_load(_getptr(x, f)) + f === :LastFocusedNodeId && return unsafe_load(_getptr(x, f)) + f === :SelectedTabId && return unsafe_load(_getptr(x, f)) + f === :WantCloseTabId && return unsafe_load(_getptr(x, f)) + f === :RefViewportId && return unsafe_load(_getptr(x, f)) + f === :AuthorityForPos && return unsafe_load(_getptr(x, f)) + f === :AuthorityForSize && return unsafe_load(_getptr(x, f)) + f === :AuthorityForViewport && return unsafe_load(_getptr(x, f)) + f === :IsVisible && return unsafe_load(_getptr(x, f)) + f === :IsFocused && return unsafe_load(_getptr(x, f)) + f === :IsBgDrawnThisFrame && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :HasWindowMenuButton && return unsafe_load(_getptr(x, f)) + f === :HasCentralNodeChild && return unsafe_load(_getptr(x, f)) + f === :WantCloseAll && return unsafe_load(_getptr(x, f)) + f === :WantLockSizeOnce && return unsafe_load(_getptr(x, f)) + f === :WantMouseMove && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarUpdate && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarToggle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1494,7 +1945,7 @@ end function Base.setproperty!(x::Ptr{ImGuiDockNode}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1519,7 +1970,7 @@ struct ImGuiWindow data::NTuple{1160, UInt8} end -function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) +function _getptr(x::Ptr{ImGuiWindow}, f::Symbol) f === :Ctx && return Ptr{Ptr{ImGuiContext}}(x + 0) f === :Name && return Ptr{Ptr{Cchar}}(x + 8) f === :ID && return Ptr{ImGuiID}(x + 16) @@ -1644,6 +2095,134 @@ function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) f === :DockId && return Ptr{ImGuiID}(x + 1136) f === :DockTabItemStatusFlags && return Ptr{ImGuiItemStatusFlags}(x + 1140) f === :DockTabItemRect && return Ptr{ImRect}(x + 1144) + error("Unrecognized field of type `ImGuiWindow`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :Name && return unsafe_load(_getptr(x, f)) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :FlagsPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ChildFlags && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :Viewport && return unsafe_load(_getptr(x, f)) + f === :ViewportId && return unsafe_load(_getptr(x, f)) + f === :ViewportPos && return _getptr(x, f) + f === :ViewportAllowPlatformMonitorExtend && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeFull && return _getptr(x, f) + f === :ContentSize && return _getptr(x, f) + f === :ContentSizeIdeal && return _getptr(x, f) + f === :ContentSizeExplicit && return _getptr(x, f) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :TitleBarHeight && return unsafe_load(_getptr(x, f)) + f === :MenuBarHeight && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX2 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY2 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeY1 && return unsafe_load(_getptr(x, f)) + f === :NameBufLen && return unsafe_load(_getptr(x, f)) + f === :MoveId && return unsafe_load(_getptr(x, f)) + f === :TabId && return unsafe_load(_getptr(x, f)) + f === :ChildId && return unsafe_load(_getptr(x, f)) + f === :PopupId && return unsafe_load(_getptr(x, f)) + f === :Scroll && return _getptr(x, f) + f === :ScrollMax && return _getptr(x, f) + f === :ScrollTarget && return _getptr(x, f) + f === :ScrollTargetCenterRatio && return _getptr(x, f) + f === :ScrollTargetEdgeSnapDist && return _getptr(x, f) + f === :ScrollbarSizes && return _getptr(x, f) + f === :ScrollbarX && return unsafe_load(_getptr(x, f)) + f === :ScrollbarY && return unsafe_load(_getptr(x, f)) + f === :ViewportOwned && return unsafe_load(_getptr(x, f)) + f === :Active && return unsafe_load(_getptr(x, f)) + f === :WasActive && return unsafe_load(_getptr(x, f)) + f === :WriteAccessed && return unsafe_load(_getptr(x, f)) + f === :Collapsed && return unsafe_load(_getptr(x, f)) + f === :WantCollapseToggle && return unsafe_load(_getptr(x, f)) + f === :SkipItems && return unsafe_load(_getptr(x, f)) + f === :SkipRefresh && return unsafe_load(_getptr(x, f)) + f === :Appearing && return unsafe_load(_getptr(x, f)) + f === :Hidden && return unsafe_load(_getptr(x, f)) + f === :IsFallbackWindow && return unsafe_load(_getptr(x, f)) + f === :IsExplicitChild && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHovered && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHeld && return unsafe_load(_getptr(x, f)) + f === :BeginCount && return unsafe_load(_getptr(x, f)) + f === :BeginCountPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinParent && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinContext && return unsafe_load(_getptr(x, f)) + f === :FocusOrder && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesX && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesY && return unsafe_load(_getptr(x, f)) + f === :AutoFitOnlyGrows && return unsafe_load(_getptr(x, f)) + f === :AutoPosLastDirection && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCanSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCannotSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesForRenderOnly && return unsafe_load(_getptr(x, f)) + f === :DisableInputsFrames && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowSizeAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowCollapsedAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowDockAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosVal && return _getptr(x, f) + f === :SetWindowPosPivot && return _getptr(x, f) + f === :IDStack && return _getptr(x, f) + f === :DC && return _getptr(x, f) + f === :OuterRectClipped && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :ParentWorkRect && return _getptr(x, f) + f === :ClipRect && return _getptr(x, f) + f === :ContentRegionRect && return _getptr(x, f) + f === :HitTestHoleSize && return _getptr(x, f) + f === :HitTestHoleOffset && return _getptr(x, f) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameJustFocused && return unsafe_load(_getptr(x, f)) + f === :LastTimeActive && return unsafe_load(_getptr(x, f)) + f === :ItemWidthDefault && return unsafe_load(_getptr(x, f)) + f === :StateStorage && return _getptr(x, f) + f === :ColumnsStorage && return _getptr(x, f) + f === :FontWindowScale && return unsafe_load(_getptr(x, f)) + f === :FontDpiScale && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :DrawList && return unsafe_load(_getptr(x, f)) + f === :DrawListInst && return _getptr(x, f) + f === :ParentWindow && return unsafe_load(_getptr(x, f)) + f === :ParentWindowInBeginStack && return unsafe_load(_getptr(x, f)) + f === :RootWindow && return unsafe_load(_getptr(x, f)) + f === :RootWindowPopupTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowDockTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowForTitleBarHighlight && return unsafe_load(_getptr(x, f)) + f === :RootWindowForNav && return unsafe_load(_getptr(x, f)) + f === :ParentWindowForFocusRoute && return unsafe_load(_getptr(x, f)) + f === :NavLastChildNavWindow && return unsafe_load(_getptr(x, f)) + f === :NavLastIds && return _getptr(x, f) + f === :NavRectRel && return _getptr(x, f) + f === :NavPreferredScoringPosRel && return _getptr(x, f) + f === :NavRootFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListIdxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListVtxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :DockIsActive && return unsafe_load(_getptr(x, f)) + f === :DockNodeIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabWantClose && return unsafe_load(_getptr(x, f)) + f === :DockOrder && return unsafe_load(_getptr(x, f)) + f === :DockStyle && return _getptr(x, f) + f === :DockNode && return unsafe_load(_getptr(x, f)) + f === :DockNodeAsHost && return unsafe_load(_getptr(x, f)) + f === :DockId && return unsafe_load(_getptr(x, f)) + f === :DockTabItemStatusFlags && return unsafe_load(_getptr(x, f)) + f === :DockTabItemRect && return _getptr(x, f) return getfield(x, f) end @@ -1671,7 +2250,7 @@ end function Base.setproperty!(x::Ptr{ImGuiWindow}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1839,10 +2418,17 @@ struct ImGuiStyleMod data::NTuple{12, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyleMod}, f::Symbol) f === :VarIdx && return Ptr{ImGuiStyleVar}(x + 0) f === :BackupInt && return Ptr{NTuple{2, Cint}}(x + 4) f === :BackupFloat && return Ptr{NTuple{2, Cfloat}}(x + 4) + error("Unrecognized field of type `ImGuiStyleMod`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) + f === :VarIdx && return unsafe_load(_getptr(x, f)) + f === :BackupInt && return _getptr(x, f) + f === :BackupFloat && return _getptr(x, f) return getfield(x, f) end @@ -1854,7 +2440,7 @@ function Base.getproperty(x::ImGuiStyleMod, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStyleMod}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStyleMod @@ -2229,7 +2815,7 @@ struct ImGuiTableColumn data::NTuple{112, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :Flags && return Ptr{ImGuiTableColumnFlags}(x + 0) f === :WidthGiven && return Ptr{Cfloat}(x + 4) f === :MinX && return Ptr{Cfloat}(x + 8) @@ -2271,6 +2857,51 @@ function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :SortDirectionsAvailCount && return (Ptr{ImU8}(x + 108), 10, 2) f === :SortDirectionsAvailMask && return (Ptr{ImU8}(x + 108), 12, 4) f === :SortDirectionsAvailList && return Ptr{ImU8}(x + 110) + error("Unrecognized field of type `ImGuiTableColumn`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :WidthGiven && return unsafe_load(_getptr(x, f)) + f === :MinX && return unsafe_load(_getptr(x, f)) + f === :MaxX && return unsafe_load(_getptr(x, f)) + f === :WidthRequest && return unsafe_load(_getptr(x, f)) + f === :WidthAuto && return unsafe_load(_getptr(x, f)) + f === :StretchWeight && return unsafe_load(_getptr(x, f)) + f === :InitStretchWeightOrWidth && return unsafe_load(_getptr(x, f)) + f === :ClipRect && return _getptr(x, f) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :WorkMinX && return unsafe_load(_getptr(x, f)) + f === :WorkMaxX && return unsafe_load(_getptr(x, f)) + f === :ItemWidth && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXFrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXUnfrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersUsed && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersIdeal && return unsafe_load(_getptr(x, f)) + f === :NameOffset && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IndexWithinEnabledSet && return unsafe_load(_getptr(x, f)) + f === :PrevEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :NextEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :DrawChannelFrozen && return unsafe_load(_getptr(x, f)) + f === :DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabledNextFrame && return unsafe_load(_getptr(x, f)) + f === :IsVisibleX && return unsafe_load(_getptr(x, f)) + f === :IsVisibleY && return unsafe_load(_getptr(x, f)) + f === :IsRequestOutput && return unsafe_load(_getptr(x, f)) + f === :IsSkipItems && return unsafe_load(_getptr(x, f)) + f === :IsPreserveWidthAuto && return unsafe_load(_getptr(x, f)) + f === :NavLayerCurrent && return unsafe_load(_getptr(x, f)) + f === :AutoFitQueue && return unsafe_load(_getptr(x, f)) + f === :CannotSkipItemsQueue && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailCount && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailMask && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailList && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2298,7 +2929,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumn}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2385,7 +3016,7 @@ struct ImGuiTable data::NTuple{592, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) +function _getptr(x::Ptr{ImGuiTable}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiTableFlags}(x + 4) f === :RawData && return Ptr{Ptr{Cvoid}}(x + 8) @@ -2498,6 +3129,122 @@ function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) f === :HasScrollbarYPrev && return Ptr{Bool}(x + 583) f === :MemoryCompacted && return Ptr{Bool}(x + 584) f === :HostSkipItems && return Ptr{Bool}(x + 585) + error("Unrecognized field of type `ImGuiTable`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :RawData && return unsafe_load(_getptr(x, f)) + f === :TempData && return unsafe_load(_getptr(x, f)) + f === :Columns && return _getptr(x, f) + f === :DisplayOrderToIndex && return _getptr(x, f) + f === :RowCellData && return _getptr(x, f) + f === :EnabledMaskByDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :EnabledMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :VisibleMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :SettingsLoadedFlags && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :ColumnsCount && return unsafe_load(_getptr(x, f)) + f === :CurrentRow && return unsafe_load(_getptr(x, f)) + f === :CurrentColumn && return unsafe_load(_getptr(x, f)) + f === :InstanceCurrent && return unsafe_load(_getptr(x, f)) + f === :InstanceInteracted && return unsafe_load(_getptr(x, f)) + f === :RowPosY1 && return unsafe_load(_getptr(x, f)) + f === :RowPosY2 && return unsafe_load(_getptr(x, f)) + f === :RowMinHeight && return unsafe_load(_getptr(x, f)) + f === :RowCellPaddingY && return unsafe_load(_getptr(x, f)) + f === :RowTextBaseline && return unsafe_load(_getptr(x, f)) + f === :RowIndentOffsetX && return unsafe_load(_getptr(x, f)) + f === :RowFlags && return unsafe_load(_getptr(x, f)) + f === :LastRowFlags && return unsafe_load(_getptr(x, f)) + f === :RowBgColorCounter && return unsafe_load(_getptr(x, f)) + f === :RowBgColor && return _getptr(x, f) + f === :BorderColorStrong && return unsafe_load(_getptr(x, f)) + f === :BorderColorLight && return unsafe_load(_getptr(x, f)) + f === :BorderX1 && return unsafe_load(_getptr(x, f)) + f === :BorderX2 && return unsafe_load(_getptr(x, f)) + f === :HostIndentX && return unsafe_load(_getptr(x, f)) + f === :MinColumnWidth && return unsafe_load(_getptr(x, f)) + f === :OuterPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX1 && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX2 && return unsafe_load(_getptr(x, f)) + f === :InnerWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsGivenWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsAutoFitWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsStretchSumWeights && return unsafe_load(_getptr(x, f)) + f === :ResizedColumnNextWidth && return unsafe_load(_getptr(x, f)) + f === :ResizeLockMinContentsX2 && return unsafe_load(_getptr(x, f)) + f === :RefScale && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersHeight && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersSlope && return unsafe_load(_getptr(x, f)) + f === :OuterRect && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :BgClipRect && return _getptr(x, f) + f === :Bg0ClipRectForDrawCmd && return _getptr(x, f) + f === :Bg2ClipRectForDrawCmd && return _getptr(x, f) + f === :HostClipRect && return _getptr(x, f) + f === :HostBackupInnerClipRect && return _getptr(x, f) + f === :OuterWindow && return unsafe_load(_getptr(x, f)) + f === :InnerWindow && return unsafe_load(_getptr(x, f)) + f === :ColumnsNames && return _getptr(x, f) + f === :DrawSplitter && return unsafe_load(_getptr(x, f)) + f === :InstanceDataFirst && return _getptr(x, f) + f === :InstanceDataExtra && return _getptr(x, f) + f === :SortSpecsSingle && return _getptr(x, f) + f === :SortSpecsMulti && return _getptr(x, f) + f === :SortSpecs && return _getptr(x, f) + f === :SortSpecsCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledFixedCount && return unsafe_load(_getptr(x, f)) + f === :DeclColumnsCount && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersCount && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBody && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBorder && return unsafe_load(_getptr(x, f)) + f === :HighlightColumnHeader && return unsafe_load(_getptr(x, f)) + f === :AutoFitSingleColumn && return unsafe_load(_getptr(x, f)) + f === :ResizedColumn && return unsafe_load(_getptr(x, f)) + f === :LastResizedColumn && return unsafe_load(_getptr(x, f)) + f === :HeldHeaderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumnDir && return unsafe_load(_getptr(x, f)) + f === :LeftMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :LeftMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :ContextPopupColumn && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsCount && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsCount && return unsafe_load(_getptr(x, f)) + f === :RowCellDataCurrent && return unsafe_load(_getptr(x, f)) + f === :DummyDrawChannel && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsLayoutLocked && return unsafe_load(_getptr(x, f)) + f === :IsInsideRow && return unsafe_load(_getptr(x, f)) + f === :IsInitializing && return unsafe_load(_getptr(x, f)) + f === :IsSortSpecsDirty && return unsafe_load(_getptr(x, f)) + f === :IsUsingHeaders && return unsafe_load(_getptr(x, f)) + f === :IsContextPopupOpen && return unsafe_load(_getptr(x, f)) + f === :DisableDefaultContextMenu && return unsafe_load(_getptr(x, f)) + f === :IsSettingsRequestLoad && return unsafe_load(_getptr(x, f)) + f === :IsSettingsDirty && return unsafe_load(_getptr(x, f)) + f === :IsDefaultDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IsResetAllRequest && return unsafe_load(_getptr(x, f)) + f === :IsResetDisplayOrderRequest && return unsafe_load(_getptr(x, f)) + f === :IsUnfrozenRows && return unsafe_load(_getptr(x, f)) + f === :IsDefaultSizingPolicy && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdAliveBeforeTable && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdInTable && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYCurr && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYPrev && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :HostSkipItems && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2525,7 +3272,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTable}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2830,12 +3577,21 @@ struct ImGuiStackLevelInfo data::NTuple{64, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) +function _getptr(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :QueryFrameCount && return Ptr{ImS8}(x + 4) f === :QuerySuccess && return Ptr{Bool}(x + 5) f === :DataType && return (Ptr{ImGuiDataType}(x + 4), 16, 8) f === :Desc && return Ptr{NTuple{57, Cchar}}(x + 7) + error("Unrecognized field of type `ImGuiStackLevelInfo`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :QueryFrameCount && return unsafe_load(_getptr(x, f)) + f === :QuerySuccess && return unsafe_load(_getptr(x, f)) + f === :DataType && return unsafe_load(_getptr(x, f)) + f === :Desc && return _getptr(x, f) return getfield(x, f) end @@ -2863,7 +3619,7 @@ end function Base.setproperty!(x::Ptr{ImGuiStackLevelInfo}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2914,7 +3670,7 @@ struct ImGuiContext data::NTuple{14184, UInt8} end -function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) +function _getptr(x::Ptr{ImGuiContext}, f::Symbol) f === :Initialized && return Ptr{Bool}(x + 0) f === :FontAtlasOwnedByContext && return Ptr{Bool}(x + 1) f === :IO && return Ptr{ImGuiIO}(x + 8) @@ -3205,6 +3961,300 @@ function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) f === :WantTextInputNextFrame && return Ptr{Cint}(x + 14100) f === :TempBuffer && return Ptr{ImVector_char}(x + 14104) f === :TempKeychordName && return Ptr{NTuple{64, Cchar}}(x + 14120) + error("Unrecognized field of type `ImGuiContext`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) + f === :Initialized && return unsafe_load(_getptr(x, f)) + f === :FontAtlasOwnedByContext && return unsafe_load(_getptr(x, f)) + f === :IO && return _getptr(x, f) + f === :PlatformIO && return _getptr(x, f) + f === :Style && return _getptr(x, f) + f === :ConfigFlagsCurrFrame && return unsafe_load(_getptr(x, f)) + f === :ConfigFlagsLastFrame && return unsafe_load(_getptr(x, f)) + f === :Font && return unsafe_load(_getptr(x, f)) + f === :FontSize && return unsafe_load(_getptr(x, f)) + f === :FontBaseSize && return unsafe_load(_getptr(x, f)) + f === :CurrentDpiScale && return unsafe_load(_getptr(x, f)) + f === :DrawListSharedData && return _getptr(x, f) + f === :Time && return unsafe_load(_getptr(x, f)) + f === :FrameCount && return unsafe_load(_getptr(x, f)) + f === :FrameCountEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountPlatformEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountRendered && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScope && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScopeWithImplicitWindow && return unsafe_load(_getptr(x, f)) + f === :WithinEndChild && return unsafe_load(_getptr(x, f)) + f === :GcCompactAll && return unsafe_load(_getptr(x, f)) + f === :TestEngineHookItems && return unsafe_load(_getptr(x, f)) + f === :TestEngine && return unsafe_load(_getptr(x, f)) + f === :InputEventsQueue && return _getptr(x, f) + f === :InputEventsTrail && return _getptr(x, f) + f === :InputEventsNextMouseSource && return unsafe_load(_getptr(x, f)) + f === :InputEventsNextEventId && return unsafe_load(_getptr(x, f)) + f === :Windows && return _getptr(x, f) + f === :WindowsFocusOrder && return _getptr(x, f) + f === :WindowsTempSortBuffer && return _getptr(x, f) + f === :CurrentWindowStack && return _getptr(x, f) + f === :WindowsById && return _getptr(x, f) + f === :WindowsActiveCount && return unsafe_load(_getptr(x, f)) + f === :WindowsHoverPadding && return _getptr(x, f) + f === :DebugBreakInWindow && return unsafe_load(_getptr(x, f)) + f === :CurrentWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindowUnderMovingWindow && return unsafe_load(_getptr(x, f)) + f === :MovingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowRefMousePos && return _getptr(x, f) + f === :WheelingWindowStartFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowScrolledFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowReleaseTimer && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowWheelRemainder && return _getptr(x, f) + f === :WheelingAxisAvg && return _getptr(x, f) + f === :DebugHookIdInfo && return unsafe_load(_getptr(x, f)) + f === :HoveredId && return unsafe_load(_getptr(x, f)) + f === :HoveredIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoveredIdTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdNotActiveTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :HoveredIdDisabled && return unsafe_load(_getptr(x, f)) + f === :ItemUnclipByLog && return unsafe_load(_getptr(x, f)) + f === :ActiveId && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsJustActivated && return unsafe_load(_getptr(x, f)) + f === :ActiveIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :ActiveIdNoClearOnFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenPressedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedThisFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdFromShortcut && return unsafe_load(_getptr(x, f)) + f === :ActiveIdMouseButton && return unsafe_load(_getptr(x, f)) + f === :ActiveIdClickOffset && return _getptr(x, f) + f === :ActiveIdWindow && return unsafe_load(_getptr(x, f)) + f === :ActiveIdSource && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameWindow && return unsafe_load(_getptr(x, f)) + f === :LastActiveId && return unsafe_load(_getptr(x, f)) + f === :LastActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeFromNoneTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyboardKeyPressTime && return unsafe_load(_getptr(x, f)) + f === :KeysMayBeCharInput && return _getptr(x, f) + f === :KeysOwnerData && return _getptr(x, f) + f === :KeysRoutingTable && return _getptr(x, f) + f === :ActiveIdUsingNavDirMask && return unsafe_load(_getptr(x, f)) + f === :ActiveIdUsingAllKeyboardKeys && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInShortcutRouting && return unsafe_load(_getptr(x, f)) + f === :CurrentFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :CurrentItemFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLocateId && return unsafe_load(_getptr(x, f)) + f === :NextItemData && return _getptr(x, f) + f === :LastItemData && return _getptr(x, f) + f === :NextWindowData && return _getptr(x, f) + f === :DebugShowGroupRects && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorIdx && return unsafe_load(_getptr(x, f)) + f === :ColorStack && return _getptr(x, f) + f === :StyleVarStack && return _getptr(x, f) + f === :FontStack && return _getptr(x, f) + f === :FocusScopeStack && return _getptr(x, f) + f === :ItemFlagsStack && return _getptr(x, f) + f === :GroupStack && return _getptr(x, f) + f === :OpenPopupStack && return _getptr(x, f) + f === :BeginPopupStack && return _getptr(x, f) + f === :NavTreeNodeStack && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) + f === :CurrentViewport && return unsafe_load(_getptr(x, f)) + f === :MouseViewport && return unsafe_load(_getptr(x, f)) + f === :MouseLastHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :PlatformLastFocusedViewportId && return unsafe_load(_getptr(x, f)) + f === :FallbackMonitor && return _getptr(x, f) + f === :PlatformMonitorsFullWorkRect && return _getptr(x, f) + f === :ViewportCreatedCount && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowsCreatedCount && return unsafe_load(_getptr(x, f)) + f === :ViewportFocusedStampCount && return unsafe_load(_getptr(x, f)) + f === :NavWindow && return unsafe_load(_getptr(x, f)) + f === :NavId && return unsafe_load(_getptr(x, f)) + f === :NavFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavActivateId && return unsafe_load(_getptr(x, f)) + f === :NavActivateDownId && return unsafe_load(_getptr(x, f)) + f === :NavActivatePressedId && return unsafe_load(_getptr(x, f)) + f === :NavActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavFocusRoute && return _getptr(x, f) + f === :NavHighlightActivatedId && return unsafe_load(_getptr(x, f)) + f === :NavHighlightActivatedTimer && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateId && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavInputSource && return unsafe_load(_getptr(x, f)) + f === :NavLayer && return unsafe_load(_getptr(x, f)) + f === :NavLastValidSelectionUserData && return unsafe_load(_getptr(x, f)) + f === :NavIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :NavMousePosDirty && return unsafe_load(_getptr(x, f)) + f === :NavDisableHighlight && return unsafe_load(_getptr(x, f)) + f === :NavDisableMouseHover && return unsafe_load(_getptr(x, f)) + f === :NavAnyRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequestFromMove && return unsafe_load(_getptr(x, f)) + f === :NavInitResult && return _getptr(x, f) + f === :NavMoveSubmitted && return unsafe_load(_getptr(x, f)) + f === :NavMoveScoringItems && return unsafe_load(_getptr(x, f)) + f === :NavMoveForwardToNextFrame && return unsafe_load(_getptr(x, f)) + f === :NavMoveFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveScrollFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavMoveDir && return unsafe_load(_getptr(x, f)) + f === :NavMoveDirForDebug && return unsafe_load(_getptr(x, f)) + f === :NavMoveClipDir && return unsafe_load(_getptr(x, f)) + f === :NavScoringRect && return _getptr(x, f) + f === :NavScoringNoClipRect && return _getptr(x, f) + f === :NavScoringDebugCount && return unsafe_load(_getptr(x, f)) + f === :NavTabbingDir && return unsafe_load(_getptr(x, f)) + f === :NavTabbingCounter && return unsafe_load(_getptr(x, f)) + f === :NavMoveResultLocal && return _getptr(x, f) + f === :NavMoveResultLocalVisible && return _getptr(x, f) + f === :NavMoveResultOther && return _getptr(x, f) + f === :NavTabbingResultFirst && return _getptr(x, f) + f === :ConfigNavWindowingKeyNext && return unsafe_load(_getptr(x, f)) + f === :ConfigNavWindowingKeyPrev && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTarget && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTargetAnim && return unsafe_load(_getptr(x, f)) + f === :NavWindowingListWindow && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTimer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingHighlightAlpha && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleLayer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleKey && return unsafe_load(_getptr(x, f)) + f === :NavWindowingAccumDeltaPos && return _getptr(x, f) + f === :NavWindowingAccumDeltaSize && return _getptr(x, f) + f === :DimBgRatio && return unsafe_load(_getptr(x, f)) + f === :DragDropActive && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinSource && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinTarget && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropMouseButton && return unsafe_load(_getptr(x, f)) + f === :DragDropPayload && return _getptr(x, f) + f === :DragDropTargetRect && return _getptr(x, f) + f === :DragDropTargetClipRect && return _getptr(x, f) + f === :DragDropTargetId && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurrRectSurface && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurr && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdPrev && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropHoldJustPressedId && return unsafe_load(_getptr(x, f)) + f === :DragDropPayloadBufHeap && return _getptr(x, f) + f === :DragDropPayloadBufLocal && return _getptr(x, f) + f === :ClipperTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :ClipperTempData && return _getptr(x, f) + f === :CurrentTable && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInTable && return unsafe_load(_getptr(x, f)) + f === :TablesTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :TablesTempData && return _getptr(x, f) + f === :Tables && return _getptr(x, f) + f === :TablesLastTimeActive && return _getptr(x, f) + f === :DrawChannelsTempMergeBuffer && return _getptr(x, f) + f === :CurrentTabBar && return unsafe_load(_getptr(x, f)) + f === :TabBars && return _getptr(x, f) + f === :CurrentTabBarStack && return _getptr(x, f) + f === :ShrinkWidthBuffer && return _getptr(x, f) + f === :HoverItemDelayId && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayClearTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :HoverWindowUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :MouseCursor && return unsafe_load(_getptr(x, f)) + f === :MouseStationaryTimer && return unsafe_load(_getptr(x, f)) + f === :MouseLastValidPos && return _getptr(x, f) + f === :InputTextState && return _getptr(x, f) + f === :InputTextDeactivatedState && return _getptr(x, f) + f === :InputTextPasswordFont && return _getptr(x, f) + f === :TempInputId && return unsafe_load(_getptr(x, f)) + f === :DataTypeZeroValue && return _getptr(x, f) + f === :BeginMenuDepth && return unsafe_load(_getptr(x, f)) + f === :BeginComboDepth && return unsafe_load(_getptr(x, f)) + f === :ColorEditOptions && return unsafe_load(_getptr(x, f)) + f === :ColorEditCurrentID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedHue && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedSat && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedColor && return unsafe_load(_getptr(x, f)) + f === :ColorPickerRef && return _getptr(x, f) + f === :ComboPreviewData && return _getptr(x, f) + f === :WindowResizeBorderExpectedRect && return _getptr(x, f) + f === :WindowResizeRelativeMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSeekMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarClickDeltaToGrabCenter && return unsafe_load(_getptr(x, f)) + f === :SliderGrabClickOffset && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :DragSpeedDefaultRatio && return unsafe_load(_getptr(x, f)) + f === :DisabledAlphaBackup && return unsafe_load(_getptr(x, f)) + f === :DisabledStackSize && return unsafe_load(_getptr(x, f)) + f === :LockMarkEdited && return unsafe_load(_getptr(x, f)) + f === :TooltipOverrideCount && return unsafe_load(_getptr(x, f)) + f === :ClipboardHandlerData && return _getptr(x, f) + f === :MenusIdSubmittedThisFrame && return _getptr(x, f) + f === :TypingSelectState && return _getptr(x, f) + f === :PlatformImeData && return _getptr(x, f) + f === :PlatformImeDataPrev && return _getptr(x, f) + f === :PlatformImeViewport && return unsafe_load(_getptr(x, f)) + f === :DockContext && return _getptr(x, f) + f === :DockNodeWindowMenuHandler && return unsafe_load(_getptr(x, f)) + f === :SettingsLoaded && return unsafe_load(_getptr(x, f)) + f === :SettingsDirtyTimer && return unsafe_load(_getptr(x, f)) + f === :SettingsIniData && return _getptr(x, f) + f === :SettingsHandlers && return _getptr(x, f) + f === :SettingsWindows && return _getptr(x, f) + f === :SettingsTables && return _getptr(x, f) + f === :Hooks && return _getptr(x, f) + f === :HookIdNext && return unsafe_load(_getptr(x, f)) + f === :LocalizationTable && return _getptr(x, f) + f === :LogEnabled && return unsafe_load(_getptr(x, f)) + f === :LogType && return unsafe_load(_getptr(x, f)) + f === :LogFile && return unsafe_load(_getptr(x, f)) + f === :LogBuffer && return _getptr(x, f) + f === :LogNextPrefix && return unsafe_load(_getptr(x, f)) + f === :LogNextSuffix && return unsafe_load(_getptr(x, f)) + f === :LogLinePosY && return unsafe_load(_getptr(x, f)) + f === :LogLineFirstItem && return unsafe_load(_getptr(x, f)) + f === :LogDepthRef && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpand && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpandDefault && return unsafe_load(_getptr(x, f)) + f === :DebugLogFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogBuf && return _getptr(x, f) + f === :DebugLogIndex && return _getptr(x, f) + f === :DebugLogAutoDisableFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogAutoDisableFrames && return unsafe_load(_getptr(x, f)) + f === :DebugLocateFrames && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInLocateId && return unsafe_load(_getptr(x, f)) + f === :DebugBreakKeyChord && return unsafe_load(_getptr(x, f)) + f === :DebugBeginReturnValueCullDepth && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerActive && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerMouseButton && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerBreakId && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorTime && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorBackup && return _getptr(x, f) + f === :DebugMetricsConfig && return _getptr(x, f) + f === :DebugIDStackTool && return _getptr(x, f) + f === :DebugAllocInfo && return _getptr(x, f) + f === :DebugHoveredDockNode && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrame && return _getptr(x, f) + f === :FramerateSecPerFrameIdx && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameCount && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameAccum && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouseNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboardNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantTextInputNextFrame && return unsafe_load(_getptr(x, f)) + f === :TempBuffer && return _getptr(x, f) + f === :TempKeychordName && return _getptr(x, f) return getfield(x, f) end @@ -3232,7 +4282,7 @@ end function Base.setproperty!(x::Ptr{ImGuiContext}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -3277,16 +4327,24 @@ struct ImGuiSizeCallbackData CurrentSize::ImVec2 DesiredSize::ImVec2 end -function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) +function _getptr(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) f === :UserData && return Ptr{Ptr{Cvoid}}(x + 0) f === :Pos && return Ptr{ImVec2}(x + 8) f === :CurrentSize && return Ptr{ImVec2}(x + 16) f === :DesiredSize && return Ptr{ImVec2}(x + 24) + error("Unrecognized field of type `ImGuiSizeCallbackData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :CurrentSize && return _getptr(x, f) + f === :DesiredSize && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiSizeCallbackData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -4379,7 +5437,7 @@ struct ImGuiTableColumnSettings data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :WidthOrWeight && return Ptr{Cfloat}(x + 0) f === :UserID && return Ptr{ImGuiID}(x + 4) f === :Index && return Ptr{ImGuiTableColumnIdx}(x + 8) @@ -4388,6 +5446,18 @@ function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :SortDirection && return (Ptr{ImU8}(x + 12), 16, 2) f === :IsEnabled && return (Ptr{ImU8}(x + 12), 18, 1) f === :IsStretch && return (Ptr{ImU8}(x + 12), 19, 1) + error("Unrecognized field of type `ImGuiTableColumnSettings`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) + f === :WidthOrWeight && return unsafe_load(_getptr(x, f)) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :Index && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsStretch && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -4415,7 +5485,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumnSettings}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) diff --git a/lib/x86_64-unknown-freebsd13.2.jl b/lib/x86_64-unknown-freebsd13.2.jl index a6bb103..7ccf598 100644 --- a/lib/x86_64-unknown-freebsd13.2.jl +++ b/lib/x86_64-unknown-freebsd13.2.jl @@ -1,4 +1,4 @@ -using CEnum +using CEnum: CEnum, @cenum to_c_type(t::Type) = t to_c_type_pairs(va_list) = map(enumerate(to_c_type.(va_list))) do (ind, type) @@ -32,16 +32,24 @@ struct ImVec4 z::Cfloat w::Cfloat end -function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) +function _getptr(x::Ptr{ImVec4}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) f === :z && return Ptr{Cfloat}(x + 8) f === :w && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImVec4`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) + f === :z && return unsafe_load(_getptr(x, f)) + f === :w && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec4}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -56,7 +64,7 @@ struct ImDrawCmd UserCallback::ImDrawCallback UserCallbackData::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) +function _getptr(x::Ptr{ImDrawCmd}, f::Symbol) f === :ClipRect && return Ptr{ImVec4}(x + 0) f === :TextureId && return Ptr{ImTextureID}(x + 16) f === :VtxOffset && return Ptr{Cuint}(x + 24) @@ -64,11 +72,22 @@ function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) f === :ElemCount && return Ptr{Cuint}(x + 32) f === :UserCallback && return Ptr{ImDrawCallback}(x + 40) f === :UserCallbackData && return Ptr{Ptr{Cvoid}}(x + 48) + error("Unrecognized field of type `ImDrawCmd`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) + f === :ClipRect && return _getptr(x, f) + f === :TextureId && return unsafe_load(_getptr(x, f)) + f === :VtxOffset && return unsafe_load(_getptr(x, f)) + f === :IdxOffset && return unsafe_load(_getptr(x, f)) + f === :ElemCount && return unsafe_load(_getptr(x, f)) + f === :UserCallback && return unsafe_load(_getptr(x, f)) + f === :UserCallbackData && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawCmd}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -95,14 +114,20 @@ struct ImVec2 x::Cfloat y::Cfloat end -function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) +function _getptr(x::Ptr{ImVec2}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) + error("Unrecognized field of type `ImVec2`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec2}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -119,6 +144,24 @@ struct ImVector_ImDrawVert Capacity::Cint Data::Ptr{ImDrawVert} end +function _getptr(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return Ptr{Cint}(x + 0) + f === :Capacity && return Ptr{Cint}(x + 4) + f === :Data && return Ptr{Ptr{ImDrawVert}}(x + 8) + error("Unrecognized field of type `ImVector_ImDrawVert`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return unsafe_load(_getptr(x, f)) + f === :Capacity && return unsafe_load(_getptr(x, f)) + f === :Data && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImVector_ImDrawVert}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImDrawListFlags = Cint @@ -142,7 +185,7 @@ struct ImFontGlyph data::NTuple{40, UInt8} end -function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) +function _getptr(x::Ptr{ImFontGlyph}, f::Symbol) f === :Colored && return (Ptr{Cuint}(x + 0), 0, 1) f === :Visible && return (Ptr{Cuint}(x + 0), 1, 1) f === :Codepoint && return (Ptr{Cuint}(x + 0), 2, 30) @@ -155,6 +198,22 @@ function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) f === :V0 && return Ptr{Cfloat}(x + 28) f === :U1 && return Ptr{Cfloat}(x + 32) f === :V1 && return Ptr{Cfloat}(x + 36) + error("Unrecognized field of type `ImFontGlyph`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) + f === :Colored && return unsafe_load(_getptr(x, f)) + f === :Visible && return unsafe_load(_getptr(x, f)) + f === :Codepoint && return unsafe_load(_getptr(x, f)) + f === :AdvanceX && return unsafe_load(_getptr(x, f)) + f === :X0 && return unsafe_load(_getptr(x, f)) + f === :Y0 && return unsafe_load(_getptr(x, f)) + f === :X1 && return unsafe_load(_getptr(x, f)) + f === :Y1 && return unsafe_load(_getptr(x, f)) + f === :U0 && return unsafe_load(_getptr(x, f)) + f === :V0 && return unsafe_load(_getptr(x, f)) + f === :U1 && return unsafe_load(_getptr(x, f)) + f === :V1 && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -182,7 +241,7 @@ end function Base.setproperty!(x::Ptr{ImFontGlyph}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -270,7 +329,7 @@ function Base.getproperty(x::ImFontConfig, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) +function _getptr(x::Ptr{ImFontConfig}, f::Symbol) f === :FontData && return Ptr{Ptr{Cvoid}}(x + 0) f === :FontDataSize && return Ptr{Cint}(x + 8) f === :FontDataOwnedByAtlas && return Ptr{Bool}(x + 12) @@ -291,11 +350,35 @@ function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) f === :EllipsisChar && return Ptr{ImWchar}(x + 88) f === :Name && return Ptr{NTuple{40, Cchar}}(x + 90) f === :DstFont && return Ptr{Ptr{ImFont}}(x + 136) + error("Unrecognized field of type `ImFontConfig`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) + f === :FontData && return unsafe_load(_getptr(x, f)) + f === :FontDataSize && return unsafe_load(_getptr(x, f)) + f === :FontDataOwnedByAtlas && return unsafe_load(_getptr(x, f)) + f === :FontNo && return unsafe_load(_getptr(x, f)) + f === :SizePixels && return unsafe_load(_getptr(x, f)) + f === :OversampleH && return unsafe_load(_getptr(x, f)) + f === :OversampleV && return unsafe_load(_getptr(x, f)) + f === :PixelSnapH && return unsafe_load(_getptr(x, f)) + f === :GlyphExtraSpacing && return _getptr(x, f) + f === :GlyphOffset && return _getptr(x, f) + f === :GlyphRanges && return unsafe_load(_getptr(x, f)) + f === :GlyphMinAdvanceX && return unsafe_load(_getptr(x, f)) + f === :GlyphMaxAdvanceX && return unsafe_load(_getptr(x, f)) + f === :MergeMode && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :RasterizerMultiply && return unsafe_load(_getptr(x, f)) + f === :RasterizerDensity && return unsafe_load(_getptr(x, f)) + f === :EllipsisChar && return unsafe_load(_getptr(x, f)) + f === :Name && return _getptr(x, f) + f === :DstFont && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontConfig}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImFontConfig @@ -332,7 +415,7 @@ struct ImFontAtlas PackIdMouseCursors::Cint PackIdLines::Cint end -function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) +function _getptr(x::Ptr{ImFontAtlas}, f::Symbol) f === :Flags && return Ptr{ImFontAtlasFlags}(x + 0) f === :TexID && return Ptr{ImTextureID}(x + 8) f === :TexDesiredWidth && return Ptr{Cint}(x + 16) @@ -355,11 +438,37 @@ function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) f === :FontBuilderFlags && return Ptr{Cuint}(x + 1168) f === :PackIdMouseCursors && return Ptr{Cint}(x + 1172) f === :PackIdLines && return Ptr{Cint}(x + 1176) + error("Unrecognized field of type `ImFontAtlas`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :TexID && return unsafe_load(_getptr(x, f)) + f === :TexDesiredWidth && return unsafe_load(_getptr(x, f)) + f === :TexGlyphPadding && return unsafe_load(_getptr(x, f)) + f === :Locked && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :TexReady && return unsafe_load(_getptr(x, f)) + f === :TexPixelsUseColors && return unsafe_load(_getptr(x, f)) + f === :TexPixelsAlpha8 && return unsafe_load(_getptr(x, f)) + f === :TexPixelsRGBA32 && return unsafe_load(_getptr(x, f)) + f === :TexWidth && return unsafe_load(_getptr(x, f)) + f === :TexHeight && return unsafe_load(_getptr(x, f)) + f === :TexUvScale && return _getptr(x, f) + f === :TexUvWhitePixel && return _getptr(x, f) + f === :Fonts && return _getptr(x, f) + f === :CustomRects && return _getptr(x, f) + f === :ConfigData && return _getptr(x, f) + f === :TexUvLines && return _getptr(x, f) + f === :FontBuilderIO && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :PackIdMouseCursors && return unsafe_load(_getptr(x, f)) + f === :PackIdLines && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontAtlas}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -456,7 +565,7 @@ struct ImDrawList _FringeScale::Cfloat _OwnerName::Ptr{Cchar} end -function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) +function _getptr(x::Ptr{ImDrawList}, f::Symbol) f === :CmdBuffer && return Ptr{ImVector_ImDrawCmd}(x + 0) f === :IdxBuffer && return Ptr{ImVector_ImDrawIdx}(x + 16) f === :VtxBuffer && return Ptr{ImVector_ImDrawVert}(x + 32) @@ -472,11 +581,30 @@ function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) f === :_TextureIdStack && return Ptr{ImVector_ImTextureID}(x + 168) f === :_FringeScale && return Ptr{Cfloat}(x + 184) f === :_OwnerName && return Ptr{Ptr{Cchar}}(x + 192) + error("Unrecognized field of type `ImDrawList`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) + f === :CmdBuffer && return _getptr(x, f) + f === :IdxBuffer && return _getptr(x, f) + f === :VtxBuffer && return _getptr(x, f) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :_VtxCurrentIdx && return unsafe_load(_getptr(x, f)) + f === :_Data && return unsafe_load(_getptr(x, f)) + f === :_VtxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_IdxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_Path && return _getptr(x, f) + f === :_CmdHeader && return _getptr(x, f) + f === :_Splitter && return _getptr(x, f) + f === :_ClipRectStack && return _getptr(x, f) + f === :_TextureIdStack && return _getptr(x, f) + f === :_FringeScale && return unsafe_load(_getptr(x, f)) + f === :_OwnerName && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawList}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -515,7 +643,7 @@ function Base.getproperty(x::ImGuiViewport, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) +function _getptr(x::Ptr{ImGuiViewport}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiViewportFlags}(x + 4) f === :Pos && return Ptr{ImVec2}(x + 8) @@ -533,11 +661,32 @@ function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) f === :PlatformRequestMove && return Ptr{Bool}(x + 89) f === :PlatformRequestResize && return Ptr{Bool}(x + 90) f === :PlatformRequestClose && return Ptr{Bool}(x + 91) + error("Unrecognized field of type `ImGuiViewport`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :ParentViewportId && return unsafe_load(_getptr(x, f)) + f === :DrawData && return unsafe_load(_getptr(x, f)) + f === :RendererUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) + f === :PlatformHandleRaw && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowCreated && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestMove && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestResize && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestClose && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiViewport}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImDrawData @@ -551,7 +700,7 @@ struct ImDrawData FramebufferScale::ImVec2 OwnerViewport::Ptr{ImGuiViewport} end -function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) +function _getptr(x::Ptr{ImDrawData}, f::Symbol) f === :Valid && return Ptr{Bool}(x + 0) f === :CmdListsCount && return Ptr{Cint}(x + 4) f === :TotalIdxCount && return Ptr{Cint}(x + 8) @@ -561,11 +710,24 @@ function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) f === :DisplaySize && return Ptr{ImVec2}(x + 40) f === :FramebufferScale && return Ptr{ImVec2}(x + 48) f === :OwnerViewport && return Ptr{Ptr{ImGuiViewport}}(x + 56) + error("Unrecognized field of type `ImDrawData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) + f === :Valid && return unsafe_load(_getptr(x, f)) + f === :CmdListsCount && return unsafe_load(_getptr(x, f)) + f === :TotalIdxCount && return unsafe_load(_getptr(x, f)) + f === :TotalVtxCount && return unsafe_load(_getptr(x, f)) + f === :CmdLists && return _getptr(x, f) + f === :DisplayPos && return _getptr(x, f) + f === :DisplaySize && return _getptr(x, f) + f === :FramebufferScale && return _getptr(x, f) + f === :OwnerViewport && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -602,6 +764,26 @@ struct ImGuiKeyData DownDurationPrev::Cfloat AnalogValue::Cfloat end +function _getptr(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return Ptr{Bool}(x + 0) + f === :DownDuration && return Ptr{Cfloat}(x + 4) + f === :DownDurationPrev && return Ptr{Cfloat}(x + 8) + f === :AnalogValue && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImGuiKeyData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return unsafe_load(_getptr(x, f)) + f === :DownDuration && return unsafe_load(_getptr(x, f)) + f === :DownDurationPrev && return unsafe_load(_getptr(x, f)) + f === :AnalogValue && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImGuiKeyData}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImU16 = Cushort @@ -715,7 +897,7 @@ function Base.getproperty(x::ImGuiIO, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiIO}, f::Symbol) f === :ConfigFlags && return Ptr{ImGuiConfigFlags}(x + 0) f === :BackendFlags && return Ptr{ImGuiBackendFlags}(x + 4) f === :DisplaySize && return Ptr{ImVec2}(x + 8) @@ -816,11 +998,115 @@ function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) f === :BackendUsingLegacyNavInputArray && return Ptr{Bool}(x + 3003) f === :InputQueueSurrogate && return Ptr{ImWchar16}(x + 3004) f === :InputQueueCharacters && return Ptr{ImVector_ImWchar}(x + 3008) + error("Unrecognized field of type `ImGuiIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) + f === :ConfigFlags && return unsafe_load(_getptr(x, f)) + f === :BackendFlags && return unsafe_load(_getptr(x, f)) + f === :DisplaySize && return _getptr(x, f) + f === :DeltaTime && return unsafe_load(_getptr(x, f)) + f === :IniSavingRate && return unsafe_load(_getptr(x, f)) + f === :IniFilename && return unsafe_load(_getptr(x, f)) + f === :LogFilename && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Fonts && return unsafe_load(_getptr(x, f)) + f === :FontGlobalScale && return unsafe_load(_getptr(x, f)) + f === :FontAllowUserScaling && return unsafe_load(_getptr(x, f)) + f === :FontDefault && return unsafe_load(_getptr(x, f)) + f === :DisplayFramebufferScale && return _getptr(x, f) + f === :ConfigDockingNoSplit && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingWithShift && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingAlwaysTabBar && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingTransparentPayload && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoAutoMerge && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoTaskBarIcon && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDecoration && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDefaultParent && return unsafe_load(_getptr(x, f)) + f === :MouseDrawCursor && return unsafe_load(_getptr(x, f)) + f === :ConfigMacOSXBehaviors && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTrickleEventQueue && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextCursorBlink && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextEnterKeepActive && return unsafe_load(_getptr(x, f)) + f === :ConfigDragClickToInputText && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsResizeFromEdges && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsMoveFromTitleBarOnly && return unsafe_load(_getptr(x, f)) + f === :ConfigMemoryCompactTimer && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickTime && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickMaxDist && return unsafe_load(_getptr(x, f)) + f === :MouseDragThreshold && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatDelay && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatRate && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIsDebuggerPresent && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueOnce && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueLoop && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIgnoreFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIniSettings && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformName && return unsafe_load(_getptr(x, f)) + f === :BackendRendererName && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformUserData && return unsafe_load(_getptr(x, f)) + f === :BackendRendererUserData && return unsafe_load(_getptr(x, f)) + f === :BackendLanguageUserData && return unsafe_load(_getptr(x, f)) + f === :GetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :SetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :ClipboardUserData && return unsafe_load(_getptr(x, f)) + f === :SetPlatformImeDataFn && return unsafe_load(_getptr(x, f)) + f === :PlatformLocaleDecimalPoint && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouse && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboard && return unsafe_load(_getptr(x, f)) + f === :WantTextInput && return unsafe_load(_getptr(x, f)) + f === :WantSetMousePos && return unsafe_load(_getptr(x, f)) + f === :WantSaveIniSettings && return unsafe_load(_getptr(x, f)) + f === :NavActive && return unsafe_load(_getptr(x, f)) + f === :NavVisible && return unsafe_load(_getptr(x, f)) + f === :Framerate && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderVertices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderIndices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderWindows && return unsafe_load(_getptr(x, f)) + f === :MetricsActiveWindows && return unsafe_load(_getptr(x, f)) + f === :MouseDelta && return _getptr(x, f) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseDown && return _getptr(x, f) + f === :MouseWheel && return unsafe_load(_getptr(x, f)) + f === :MouseWheelH && return unsafe_load(_getptr(x, f)) + f === :MouseSource && return unsafe_load(_getptr(x, f)) + f === :MouseHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :KeyCtrl && return unsafe_load(_getptr(x, f)) + f === :KeyShift && return unsafe_load(_getptr(x, f)) + f === :KeyAlt && return unsafe_load(_getptr(x, f)) + f === :KeySuper && return unsafe_load(_getptr(x, f)) + f === :KeyMods && return unsafe_load(_getptr(x, f)) + f === :KeysData && return _getptr(x, f) + f === :WantCaptureMouseUnlessPopupClose && return unsafe_load(_getptr(x, f)) + f === :MousePosPrev && return _getptr(x, f) + f === :MouseClickedPos && return _getptr(x, f) + f === :MouseClickedTime && return _getptr(x, f) + f === :MouseClicked && return _getptr(x, f) + f === :MouseDoubleClicked && return _getptr(x, f) + f === :MouseClickedCount && return _getptr(x, f) + f === :MouseClickedLastCount && return _getptr(x, f) + f === :MouseReleased && return _getptr(x, f) + f === :MouseDownOwned && return _getptr(x, f) + f === :MouseDownOwnedUnlessPopupClose && return _getptr(x, f) + f === :MouseWheelRequestAxisSwap && return unsafe_load(_getptr(x, f)) + f === :MouseCtrlLeftAsRightClick && return unsafe_load(_getptr(x, f)) + f === :MouseDownDuration && return _getptr(x, f) + f === :MouseDownDurationPrev && return _getptr(x, f) + f === :MouseDragMaxDistanceAbs && return _getptr(x, f) + f === :MouseDragMaxDistanceSqr && return _getptr(x, f) + f === :PenPressure && return unsafe_load(_getptr(x, f)) + f === :AppFocusLost && return unsafe_load(_getptr(x, f)) + f === :AppAcceptingEvents && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyKeyArrays && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyNavInputArray && return unsafe_load(_getptr(x, f)) + f === :InputQueueSurrogate && return unsafe_load(_getptr(x, f)) + f === :InputQueueCharacters && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImGuiPlatformMonitor @@ -831,18 +1117,28 @@ struct ImGuiPlatformMonitor DpiScale::Cfloat PlatformHandle::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) f === :MainPos && return Ptr{ImVec2}(x + 0) f === :MainSize && return Ptr{ImVec2}(x + 8) f === :WorkPos && return Ptr{ImVec2}(x + 16) f === :WorkSize && return Ptr{ImVec2}(x + 24) f === :DpiScale && return Ptr{Cfloat}(x + 32) f === :PlatformHandle && return Ptr{Ptr{Cvoid}}(x + 40) + error("Unrecognized field of type `ImGuiPlatformMonitor`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) + f === :MainPos && return _getptr(x, f) + f === :MainSize && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformMonitor}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -885,7 +1181,7 @@ struct ImGuiPlatformIO Monitors::ImVector_ImGuiPlatformMonitor Viewports::ImVector_ImGuiViewportPtr end -function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Platform_CreateWindow && return Ptr{Ptr{Cvoid}}(x + 0) f === :Platform_DestroyWindow && return Ptr{Ptr{Cvoid}}(x + 8) f === :Platform_ShowWindow && return Ptr{Ptr{Cvoid}}(x + 16) @@ -911,11 +1207,40 @@ function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Renderer_SwapBuffers && return Ptr{Ptr{Cvoid}}(x + 176) f === :Monitors && return Ptr{ImVector_ImGuiPlatformMonitor}(x + 184) f === :Viewports && return Ptr{ImVector_ImGuiViewportPtr}(x + 200) + error("Unrecognized field of type `ImGuiPlatformIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) + f === :Platform_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_ShowWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowMinimized && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowTitle && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowAlpha && return unsafe_load(_getptr(x, f)) + f === :Platform_UpdateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowDpiScale && return unsafe_load(_getptr(x, f)) + f === :Platform_OnChangedViewport && return unsafe_load(_getptr(x, f)) + f === :Platform_CreateVkSurface && return unsafe_load(_getptr(x, f)) + f === :Renderer_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Renderer_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Monitors && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -985,7 +1310,7 @@ struct ImGuiStyle HoverFlagsForTooltipMouse::ImGuiHoveredFlags HoverFlagsForTooltipNav::ImGuiHoveredFlags end -function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyle}, f::Symbol) f === :Alpha && return Ptr{Cfloat}(x + 0) f === :DisabledAlpha && return Ptr{Cfloat}(x + 4) f === :WindowPadding && return Ptr{ImVec2}(x + 8) @@ -1039,11 +1364,68 @@ function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) f === :HoverDelayNormal && return Ptr{Cfloat}(x + 1128) f === :HoverFlagsForTooltipMouse && return Ptr{ImGuiHoveredFlags}(x + 1132) f === :HoverFlagsForTooltipNav && return Ptr{ImGuiHoveredFlags}(x + 1136) + error("Unrecognized field of type `ImGuiStyle`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) + f === :Alpha && return unsafe_load(_getptr(x, f)) + f === :DisabledAlpha && return unsafe_load(_getptr(x, f)) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :WindowMinSize && return _getptr(x, f) + f === :WindowTitleAlign && return _getptr(x, f) + f === :WindowMenuButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ChildRounding && return unsafe_load(_getptr(x, f)) + f === :ChildBorderSize && return unsafe_load(_getptr(x, f)) + f === :PopupRounding && return unsafe_load(_getptr(x, f)) + f === :PopupBorderSize && return unsafe_load(_getptr(x, f)) + f === :FramePadding && return _getptr(x, f) + f === :FrameRounding && return unsafe_load(_getptr(x, f)) + f === :FrameBorderSize && return unsafe_load(_getptr(x, f)) + f === :ItemSpacing && return _getptr(x, f) + f === :ItemInnerSpacing && return _getptr(x, f) + f === :CellPadding && return _getptr(x, f) + f === :TouchExtraPadding && return _getptr(x, f) + f === :IndentSpacing && return unsafe_load(_getptr(x, f)) + f === :ColumnsMinSpacing && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSize && return unsafe_load(_getptr(x, f)) + f === :ScrollbarRounding && return unsafe_load(_getptr(x, f)) + f === :GrabMinSize && return unsafe_load(_getptr(x, f)) + f === :GrabRounding && return unsafe_load(_getptr(x, f)) + f === :LogSliderDeadzone && return unsafe_load(_getptr(x, f)) + f === :TabRounding && return unsafe_load(_getptr(x, f)) + f === :TabBorderSize && return unsafe_load(_getptr(x, f)) + f === :TabMinWidthForCloseButton && return unsafe_load(_getptr(x, f)) + f === :TabBarBorderSize && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersAngle && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersTextAlign && return _getptr(x, f) + f === :ColorButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ButtonTextAlign && return _getptr(x, f) + f === :SelectableTextAlign && return _getptr(x, f) + f === :SeparatorTextBorderSize && return unsafe_load(_getptr(x, f)) + f === :SeparatorTextAlign && return _getptr(x, f) + f === :SeparatorTextPadding && return _getptr(x, f) + f === :DisplayWindowPadding && return _getptr(x, f) + f === :DisplaySafeAreaPadding && return _getptr(x, f) + f === :DockingSeparatorSize && return unsafe_load(_getptr(x, f)) + f === :MouseCursorScale && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLines && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLinesUseTex && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedFill && return unsafe_load(_getptr(x, f)) + f === :CurveTessellationTol && return unsafe_load(_getptr(x, f)) + f === :CircleTessellationMaxError && return unsafe_load(_getptr(x, f)) + f === :Colors && return _getptr(x, f) + f === :HoverStationaryDelay && return unsafe_load(_getptr(x, f)) + f === :HoverDelayShort && return unsafe_load(_getptr(x, f)) + f === :HoverDelayNormal && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipMouse && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipNav && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiStyle}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -1071,7 +1453,7 @@ struct ImGuiInputEvent data::NTuple{28, UInt8} end -function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) +function _getptr(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Type && return Ptr{ImGuiInputEventType}(x + 0) f === :Source && return Ptr{ImGuiInputSource}(x + 4) f === :EventId && return Ptr{ImU32}(x + 8) @@ -1083,6 +1465,21 @@ function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Text && return Ptr{ImGuiInputEventText}(x + 12) f === :AppFocused && return Ptr{ImGuiInputEventAppFocused}(x + 12) f === :AddedByTestEngine && return Ptr{Bool}(x + 24) + error("Unrecognized field of type `ImGuiInputEvent`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) + f === :Type && return unsafe_load(_getptr(x, f)) + f === :Source && return unsafe_load(_getptr(x, f)) + f === :EventId && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseWheel && return _getptr(x, f) + f === :MouseButton && return _getptr(x, f) + f === :MouseViewport && return _getptr(x, f) + f === :Key && return _getptr(x, f) + f === :Text && return _getptr(x, f) + f === :AppFocused && return _getptr(x, f) + f === :AddedByTestEngine && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1094,7 +1491,7 @@ function Base.getproperty(x::ImGuiInputEvent, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiInputEvent}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiInputEvent @@ -1202,11 +1599,19 @@ struct ImGuiStoragePair data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) +function _getptr(x::Ptr{ImGuiStoragePair}, f::Symbol) f === :key && return Ptr{ImGuiID}(x + 0) f === :val_i && return Ptr{Cint}(x + 8) f === :val_f && return Ptr{Cfloat}(x + 8) f === :val_p && return Ptr{Ptr{Cvoid}}(x + 8) + error("Unrecognized field of type `ImGuiStoragePair`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) + f === :key && return unsafe_load(_getptr(x, f)) + f === :val_i && return unsafe_load(_getptr(x, f)) + f === :val_f && return unsafe_load(_getptr(x, f)) + f === :val_p && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1218,7 +1623,7 @@ function Base.getproperty(x::ImGuiStoragePair, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStoragePair}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStoragePair @@ -1426,7 +1831,7 @@ struct ImGuiDockNode data::NTuple{208, UInt8} end -function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) +function _getptr(x::Ptr{ImGuiDockNode}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :SharedFlags && return Ptr{ImGuiDockNodeFlags}(x + 4) f === :LocalFlags && return Ptr{ImGuiDockNodeFlags}(x + 8) @@ -1469,6 +1874,52 @@ function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) f === :WantMouseMove && return (Ptr{Bool}(x + 200), 17, 1) f === :WantHiddenTabBarUpdate && return (Ptr{Bool}(x + 200), 18, 1) f === :WantHiddenTabBarToggle && return (Ptr{Bool}(x + 200), 19, 1) + error("Unrecognized field of type `ImGuiDockNode`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :SharedFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlagsInWindows && return unsafe_load(_getptr(x, f)) + f === :MergedFlags && return unsafe_load(_getptr(x, f)) + f === :State && return unsafe_load(_getptr(x, f)) + f === :ParentNode && return unsafe_load(_getptr(x, f)) + f === :ChildNodes && return _getptr(x, f) + f === :Windows && return _getptr(x, f) + f === :TabBar && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeRef && return _getptr(x, f) + f === :SplitAxis && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :LastBgColor && return unsafe_load(_getptr(x, f)) + f === :HostWindow && return unsafe_load(_getptr(x, f)) + f === :VisibleWindow && return unsafe_load(_getptr(x, f)) + f === :CentralNode && return unsafe_load(_getptr(x, f)) + f === :OnlyNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :CountNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :LastFrameAlive && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameFocused && return unsafe_load(_getptr(x, f)) + f === :LastFocusedNodeId && return unsafe_load(_getptr(x, f)) + f === :SelectedTabId && return unsafe_load(_getptr(x, f)) + f === :WantCloseTabId && return unsafe_load(_getptr(x, f)) + f === :RefViewportId && return unsafe_load(_getptr(x, f)) + f === :AuthorityForPos && return unsafe_load(_getptr(x, f)) + f === :AuthorityForSize && return unsafe_load(_getptr(x, f)) + f === :AuthorityForViewport && return unsafe_load(_getptr(x, f)) + f === :IsVisible && return unsafe_load(_getptr(x, f)) + f === :IsFocused && return unsafe_load(_getptr(x, f)) + f === :IsBgDrawnThisFrame && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :HasWindowMenuButton && return unsafe_load(_getptr(x, f)) + f === :HasCentralNodeChild && return unsafe_load(_getptr(x, f)) + f === :WantCloseAll && return unsafe_load(_getptr(x, f)) + f === :WantLockSizeOnce && return unsafe_load(_getptr(x, f)) + f === :WantMouseMove && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarUpdate && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarToggle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1496,7 +1947,7 @@ end function Base.setproperty!(x::Ptr{ImGuiDockNode}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1521,7 +1972,7 @@ struct ImGuiWindow data::NTuple{1160, UInt8} end -function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) +function _getptr(x::Ptr{ImGuiWindow}, f::Symbol) f === :Ctx && return Ptr{Ptr{ImGuiContext}}(x + 0) f === :Name && return Ptr{Ptr{Cchar}}(x + 8) f === :ID && return Ptr{ImGuiID}(x + 16) @@ -1646,6 +2097,134 @@ function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) f === :DockId && return Ptr{ImGuiID}(x + 1136) f === :DockTabItemStatusFlags && return Ptr{ImGuiItemStatusFlags}(x + 1140) f === :DockTabItemRect && return Ptr{ImRect}(x + 1144) + error("Unrecognized field of type `ImGuiWindow`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :Name && return unsafe_load(_getptr(x, f)) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :FlagsPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ChildFlags && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :Viewport && return unsafe_load(_getptr(x, f)) + f === :ViewportId && return unsafe_load(_getptr(x, f)) + f === :ViewportPos && return _getptr(x, f) + f === :ViewportAllowPlatformMonitorExtend && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeFull && return _getptr(x, f) + f === :ContentSize && return _getptr(x, f) + f === :ContentSizeIdeal && return _getptr(x, f) + f === :ContentSizeExplicit && return _getptr(x, f) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :TitleBarHeight && return unsafe_load(_getptr(x, f)) + f === :MenuBarHeight && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX2 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY2 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeY1 && return unsafe_load(_getptr(x, f)) + f === :NameBufLen && return unsafe_load(_getptr(x, f)) + f === :MoveId && return unsafe_load(_getptr(x, f)) + f === :TabId && return unsafe_load(_getptr(x, f)) + f === :ChildId && return unsafe_load(_getptr(x, f)) + f === :PopupId && return unsafe_load(_getptr(x, f)) + f === :Scroll && return _getptr(x, f) + f === :ScrollMax && return _getptr(x, f) + f === :ScrollTarget && return _getptr(x, f) + f === :ScrollTargetCenterRatio && return _getptr(x, f) + f === :ScrollTargetEdgeSnapDist && return _getptr(x, f) + f === :ScrollbarSizes && return _getptr(x, f) + f === :ScrollbarX && return unsafe_load(_getptr(x, f)) + f === :ScrollbarY && return unsafe_load(_getptr(x, f)) + f === :ViewportOwned && return unsafe_load(_getptr(x, f)) + f === :Active && return unsafe_load(_getptr(x, f)) + f === :WasActive && return unsafe_load(_getptr(x, f)) + f === :WriteAccessed && return unsafe_load(_getptr(x, f)) + f === :Collapsed && return unsafe_load(_getptr(x, f)) + f === :WantCollapseToggle && return unsafe_load(_getptr(x, f)) + f === :SkipItems && return unsafe_load(_getptr(x, f)) + f === :SkipRefresh && return unsafe_load(_getptr(x, f)) + f === :Appearing && return unsafe_load(_getptr(x, f)) + f === :Hidden && return unsafe_load(_getptr(x, f)) + f === :IsFallbackWindow && return unsafe_load(_getptr(x, f)) + f === :IsExplicitChild && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHovered && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHeld && return unsafe_load(_getptr(x, f)) + f === :BeginCount && return unsafe_load(_getptr(x, f)) + f === :BeginCountPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinParent && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinContext && return unsafe_load(_getptr(x, f)) + f === :FocusOrder && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesX && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesY && return unsafe_load(_getptr(x, f)) + f === :AutoFitOnlyGrows && return unsafe_load(_getptr(x, f)) + f === :AutoPosLastDirection && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCanSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCannotSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesForRenderOnly && return unsafe_load(_getptr(x, f)) + f === :DisableInputsFrames && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowSizeAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowCollapsedAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowDockAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosVal && return _getptr(x, f) + f === :SetWindowPosPivot && return _getptr(x, f) + f === :IDStack && return _getptr(x, f) + f === :DC && return _getptr(x, f) + f === :OuterRectClipped && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :ParentWorkRect && return _getptr(x, f) + f === :ClipRect && return _getptr(x, f) + f === :ContentRegionRect && return _getptr(x, f) + f === :HitTestHoleSize && return _getptr(x, f) + f === :HitTestHoleOffset && return _getptr(x, f) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameJustFocused && return unsafe_load(_getptr(x, f)) + f === :LastTimeActive && return unsafe_load(_getptr(x, f)) + f === :ItemWidthDefault && return unsafe_load(_getptr(x, f)) + f === :StateStorage && return _getptr(x, f) + f === :ColumnsStorage && return _getptr(x, f) + f === :FontWindowScale && return unsafe_load(_getptr(x, f)) + f === :FontDpiScale && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :DrawList && return unsafe_load(_getptr(x, f)) + f === :DrawListInst && return _getptr(x, f) + f === :ParentWindow && return unsafe_load(_getptr(x, f)) + f === :ParentWindowInBeginStack && return unsafe_load(_getptr(x, f)) + f === :RootWindow && return unsafe_load(_getptr(x, f)) + f === :RootWindowPopupTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowDockTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowForTitleBarHighlight && return unsafe_load(_getptr(x, f)) + f === :RootWindowForNav && return unsafe_load(_getptr(x, f)) + f === :ParentWindowForFocusRoute && return unsafe_load(_getptr(x, f)) + f === :NavLastChildNavWindow && return unsafe_load(_getptr(x, f)) + f === :NavLastIds && return _getptr(x, f) + f === :NavRectRel && return _getptr(x, f) + f === :NavPreferredScoringPosRel && return _getptr(x, f) + f === :NavRootFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListIdxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListVtxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :DockIsActive && return unsafe_load(_getptr(x, f)) + f === :DockNodeIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabWantClose && return unsafe_load(_getptr(x, f)) + f === :DockOrder && return unsafe_load(_getptr(x, f)) + f === :DockStyle && return _getptr(x, f) + f === :DockNode && return unsafe_load(_getptr(x, f)) + f === :DockNodeAsHost && return unsafe_load(_getptr(x, f)) + f === :DockId && return unsafe_load(_getptr(x, f)) + f === :DockTabItemStatusFlags && return unsafe_load(_getptr(x, f)) + f === :DockTabItemRect && return _getptr(x, f) return getfield(x, f) end @@ -1673,7 +2252,7 @@ end function Base.setproperty!(x::Ptr{ImGuiWindow}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1841,10 +2420,17 @@ struct ImGuiStyleMod data::NTuple{12, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyleMod}, f::Symbol) f === :VarIdx && return Ptr{ImGuiStyleVar}(x + 0) f === :BackupInt && return Ptr{NTuple{2, Cint}}(x + 4) f === :BackupFloat && return Ptr{NTuple{2, Cfloat}}(x + 4) + error("Unrecognized field of type `ImGuiStyleMod`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) + f === :VarIdx && return unsafe_load(_getptr(x, f)) + f === :BackupInt && return _getptr(x, f) + f === :BackupFloat && return _getptr(x, f) return getfield(x, f) end @@ -1856,7 +2442,7 @@ function Base.getproperty(x::ImGuiStyleMod, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStyleMod}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStyleMod @@ -2231,7 +2817,7 @@ struct ImGuiTableColumn data::NTuple{112, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :Flags && return Ptr{ImGuiTableColumnFlags}(x + 0) f === :WidthGiven && return Ptr{Cfloat}(x + 4) f === :MinX && return Ptr{Cfloat}(x + 8) @@ -2273,6 +2859,51 @@ function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :SortDirectionsAvailCount && return (Ptr{ImU8}(x + 108), 10, 2) f === :SortDirectionsAvailMask && return (Ptr{ImU8}(x + 108), 12, 4) f === :SortDirectionsAvailList && return Ptr{ImU8}(x + 110) + error("Unrecognized field of type `ImGuiTableColumn`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :WidthGiven && return unsafe_load(_getptr(x, f)) + f === :MinX && return unsafe_load(_getptr(x, f)) + f === :MaxX && return unsafe_load(_getptr(x, f)) + f === :WidthRequest && return unsafe_load(_getptr(x, f)) + f === :WidthAuto && return unsafe_load(_getptr(x, f)) + f === :StretchWeight && return unsafe_load(_getptr(x, f)) + f === :InitStretchWeightOrWidth && return unsafe_load(_getptr(x, f)) + f === :ClipRect && return _getptr(x, f) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :WorkMinX && return unsafe_load(_getptr(x, f)) + f === :WorkMaxX && return unsafe_load(_getptr(x, f)) + f === :ItemWidth && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXFrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXUnfrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersUsed && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersIdeal && return unsafe_load(_getptr(x, f)) + f === :NameOffset && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IndexWithinEnabledSet && return unsafe_load(_getptr(x, f)) + f === :PrevEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :NextEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :DrawChannelFrozen && return unsafe_load(_getptr(x, f)) + f === :DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabledNextFrame && return unsafe_load(_getptr(x, f)) + f === :IsVisibleX && return unsafe_load(_getptr(x, f)) + f === :IsVisibleY && return unsafe_load(_getptr(x, f)) + f === :IsRequestOutput && return unsafe_load(_getptr(x, f)) + f === :IsSkipItems && return unsafe_load(_getptr(x, f)) + f === :IsPreserveWidthAuto && return unsafe_load(_getptr(x, f)) + f === :NavLayerCurrent && return unsafe_load(_getptr(x, f)) + f === :AutoFitQueue && return unsafe_load(_getptr(x, f)) + f === :CannotSkipItemsQueue && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailCount && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailMask && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailList && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2300,7 +2931,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumn}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2387,7 +3018,7 @@ struct ImGuiTable data::NTuple{592, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) +function _getptr(x::Ptr{ImGuiTable}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiTableFlags}(x + 4) f === :RawData && return Ptr{Ptr{Cvoid}}(x + 8) @@ -2500,6 +3131,122 @@ function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) f === :HasScrollbarYPrev && return Ptr{Bool}(x + 583) f === :MemoryCompacted && return Ptr{Bool}(x + 584) f === :HostSkipItems && return Ptr{Bool}(x + 585) + error("Unrecognized field of type `ImGuiTable`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :RawData && return unsafe_load(_getptr(x, f)) + f === :TempData && return unsafe_load(_getptr(x, f)) + f === :Columns && return _getptr(x, f) + f === :DisplayOrderToIndex && return _getptr(x, f) + f === :RowCellData && return _getptr(x, f) + f === :EnabledMaskByDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :EnabledMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :VisibleMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :SettingsLoadedFlags && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :ColumnsCount && return unsafe_load(_getptr(x, f)) + f === :CurrentRow && return unsafe_load(_getptr(x, f)) + f === :CurrentColumn && return unsafe_load(_getptr(x, f)) + f === :InstanceCurrent && return unsafe_load(_getptr(x, f)) + f === :InstanceInteracted && return unsafe_load(_getptr(x, f)) + f === :RowPosY1 && return unsafe_load(_getptr(x, f)) + f === :RowPosY2 && return unsafe_load(_getptr(x, f)) + f === :RowMinHeight && return unsafe_load(_getptr(x, f)) + f === :RowCellPaddingY && return unsafe_load(_getptr(x, f)) + f === :RowTextBaseline && return unsafe_load(_getptr(x, f)) + f === :RowIndentOffsetX && return unsafe_load(_getptr(x, f)) + f === :RowFlags && return unsafe_load(_getptr(x, f)) + f === :LastRowFlags && return unsafe_load(_getptr(x, f)) + f === :RowBgColorCounter && return unsafe_load(_getptr(x, f)) + f === :RowBgColor && return _getptr(x, f) + f === :BorderColorStrong && return unsafe_load(_getptr(x, f)) + f === :BorderColorLight && return unsafe_load(_getptr(x, f)) + f === :BorderX1 && return unsafe_load(_getptr(x, f)) + f === :BorderX2 && return unsafe_load(_getptr(x, f)) + f === :HostIndentX && return unsafe_load(_getptr(x, f)) + f === :MinColumnWidth && return unsafe_load(_getptr(x, f)) + f === :OuterPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX1 && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX2 && return unsafe_load(_getptr(x, f)) + f === :InnerWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsGivenWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsAutoFitWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsStretchSumWeights && return unsafe_load(_getptr(x, f)) + f === :ResizedColumnNextWidth && return unsafe_load(_getptr(x, f)) + f === :ResizeLockMinContentsX2 && return unsafe_load(_getptr(x, f)) + f === :RefScale && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersHeight && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersSlope && return unsafe_load(_getptr(x, f)) + f === :OuterRect && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :BgClipRect && return _getptr(x, f) + f === :Bg0ClipRectForDrawCmd && return _getptr(x, f) + f === :Bg2ClipRectForDrawCmd && return _getptr(x, f) + f === :HostClipRect && return _getptr(x, f) + f === :HostBackupInnerClipRect && return _getptr(x, f) + f === :OuterWindow && return unsafe_load(_getptr(x, f)) + f === :InnerWindow && return unsafe_load(_getptr(x, f)) + f === :ColumnsNames && return _getptr(x, f) + f === :DrawSplitter && return unsafe_load(_getptr(x, f)) + f === :InstanceDataFirst && return _getptr(x, f) + f === :InstanceDataExtra && return _getptr(x, f) + f === :SortSpecsSingle && return _getptr(x, f) + f === :SortSpecsMulti && return _getptr(x, f) + f === :SortSpecs && return _getptr(x, f) + f === :SortSpecsCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledFixedCount && return unsafe_load(_getptr(x, f)) + f === :DeclColumnsCount && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersCount && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBody && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBorder && return unsafe_load(_getptr(x, f)) + f === :HighlightColumnHeader && return unsafe_load(_getptr(x, f)) + f === :AutoFitSingleColumn && return unsafe_load(_getptr(x, f)) + f === :ResizedColumn && return unsafe_load(_getptr(x, f)) + f === :LastResizedColumn && return unsafe_load(_getptr(x, f)) + f === :HeldHeaderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumnDir && return unsafe_load(_getptr(x, f)) + f === :LeftMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :LeftMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :ContextPopupColumn && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsCount && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsCount && return unsafe_load(_getptr(x, f)) + f === :RowCellDataCurrent && return unsafe_load(_getptr(x, f)) + f === :DummyDrawChannel && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsLayoutLocked && return unsafe_load(_getptr(x, f)) + f === :IsInsideRow && return unsafe_load(_getptr(x, f)) + f === :IsInitializing && return unsafe_load(_getptr(x, f)) + f === :IsSortSpecsDirty && return unsafe_load(_getptr(x, f)) + f === :IsUsingHeaders && return unsafe_load(_getptr(x, f)) + f === :IsContextPopupOpen && return unsafe_load(_getptr(x, f)) + f === :DisableDefaultContextMenu && return unsafe_load(_getptr(x, f)) + f === :IsSettingsRequestLoad && return unsafe_load(_getptr(x, f)) + f === :IsSettingsDirty && return unsafe_load(_getptr(x, f)) + f === :IsDefaultDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IsResetAllRequest && return unsafe_load(_getptr(x, f)) + f === :IsResetDisplayOrderRequest && return unsafe_load(_getptr(x, f)) + f === :IsUnfrozenRows && return unsafe_load(_getptr(x, f)) + f === :IsDefaultSizingPolicy && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdAliveBeforeTable && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdInTable && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYCurr && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYPrev && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :HostSkipItems && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2527,7 +3274,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTable}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2832,12 +3579,21 @@ struct ImGuiStackLevelInfo data::NTuple{64, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) +function _getptr(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :QueryFrameCount && return Ptr{ImS8}(x + 4) f === :QuerySuccess && return Ptr{Bool}(x + 5) f === :DataType && return (Ptr{ImGuiDataType}(x + 4), 16, 8) f === :Desc && return Ptr{NTuple{57, Cchar}}(x + 7) + error("Unrecognized field of type `ImGuiStackLevelInfo`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :QueryFrameCount && return unsafe_load(_getptr(x, f)) + f === :QuerySuccess && return unsafe_load(_getptr(x, f)) + f === :DataType && return unsafe_load(_getptr(x, f)) + f === :Desc && return _getptr(x, f) return getfield(x, f) end @@ -2865,7 +3621,7 @@ end function Base.setproperty!(x::Ptr{ImGuiStackLevelInfo}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2916,7 +3672,7 @@ struct ImGuiContext data::NTuple{14184, UInt8} end -function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) +function _getptr(x::Ptr{ImGuiContext}, f::Symbol) f === :Initialized && return Ptr{Bool}(x + 0) f === :FontAtlasOwnedByContext && return Ptr{Bool}(x + 1) f === :IO && return Ptr{ImGuiIO}(x + 8) @@ -3207,6 +3963,300 @@ function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) f === :WantTextInputNextFrame && return Ptr{Cint}(x + 14100) f === :TempBuffer && return Ptr{ImVector_char}(x + 14104) f === :TempKeychordName && return Ptr{NTuple{64, Cchar}}(x + 14120) + error("Unrecognized field of type `ImGuiContext`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) + f === :Initialized && return unsafe_load(_getptr(x, f)) + f === :FontAtlasOwnedByContext && return unsafe_load(_getptr(x, f)) + f === :IO && return _getptr(x, f) + f === :PlatformIO && return _getptr(x, f) + f === :Style && return _getptr(x, f) + f === :ConfigFlagsCurrFrame && return unsafe_load(_getptr(x, f)) + f === :ConfigFlagsLastFrame && return unsafe_load(_getptr(x, f)) + f === :Font && return unsafe_load(_getptr(x, f)) + f === :FontSize && return unsafe_load(_getptr(x, f)) + f === :FontBaseSize && return unsafe_load(_getptr(x, f)) + f === :CurrentDpiScale && return unsafe_load(_getptr(x, f)) + f === :DrawListSharedData && return _getptr(x, f) + f === :Time && return unsafe_load(_getptr(x, f)) + f === :FrameCount && return unsafe_load(_getptr(x, f)) + f === :FrameCountEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountPlatformEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountRendered && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScope && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScopeWithImplicitWindow && return unsafe_load(_getptr(x, f)) + f === :WithinEndChild && return unsafe_load(_getptr(x, f)) + f === :GcCompactAll && return unsafe_load(_getptr(x, f)) + f === :TestEngineHookItems && return unsafe_load(_getptr(x, f)) + f === :TestEngine && return unsafe_load(_getptr(x, f)) + f === :InputEventsQueue && return _getptr(x, f) + f === :InputEventsTrail && return _getptr(x, f) + f === :InputEventsNextMouseSource && return unsafe_load(_getptr(x, f)) + f === :InputEventsNextEventId && return unsafe_load(_getptr(x, f)) + f === :Windows && return _getptr(x, f) + f === :WindowsFocusOrder && return _getptr(x, f) + f === :WindowsTempSortBuffer && return _getptr(x, f) + f === :CurrentWindowStack && return _getptr(x, f) + f === :WindowsById && return _getptr(x, f) + f === :WindowsActiveCount && return unsafe_load(_getptr(x, f)) + f === :WindowsHoverPadding && return _getptr(x, f) + f === :DebugBreakInWindow && return unsafe_load(_getptr(x, f)) + f === :CurrentWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindowUnderMovingWindow && return unsafe_load(_getptr(x, f)) + f === :MovingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowRefMousePos && return _getptr(x, f) + f === :WheelingWindowStartFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowScrolledFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowReleaseTimer && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowWheelRemainder && return _getptr(x, f) + f === :WheelingAxisAvg && return _getptr(x, f) + f === :DebugHookIdInfo && return unsafe_load(_getptr(x, f)) + f === :HoveredId && return unsafe_load(_getptr(x, f)) + f === :HoveredIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoveredIdTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdNotActiveTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :HoveredIdDisabled && return unsafe_load(_getptr(x, f)) + f === :ItemUnclipByLog && return unsafe_load(_getptr(x, f)) + f === :ActiveId && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsJustActivated && return unsafe_load(_getptr(x, f)) + f === :ActiveIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :ActiveIdNoClearOnFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenPressedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedThisFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdFromShortcut && return unsafe_load(_getptr(x, f)) + f === :ActiveIdMouseButton && return unsafe_load(_getptr(x, f)) + f === :ActiveIdClickOffset && return _getptr(x, f) + f === :ActiveIdWindow && return unsafe_load(_getptr(x, f)) + f === :ActiveIdSource && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameWindow && return unsafe_load(_getptr(x, f)) + f === :LastActiveId && return unsafe_load(_getptr(x, f)) + f === :LastActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeFromNoneTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyboardKeyPressTime && return unsafe_load(_getptr(x, f)) + f === :KeysMayBeCharInput && return _getptr(x, f) + f === :KeysOwnerData && return _getptr(x, f) + f === :KeysRoutingTable && return _getptr(x, f) + f === :ActiveIdUsingNavDirMask && return unsafe_load(_getptr(x, f)) + f === :ActiveIdUsingAllKeyboardKeys && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInShortcutRouting && return unsafe_load(_getptr(x, f)) + f === :CurrentFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :CurrentItemFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLocateId && return unsafe_load(_getptr(x, f)) + f === :NextItemData && return _getptr(x, f) + f === :LastItemData && return _getptr(x, f) + f === :NextWindowData && return _getptr(x, f) + f === :DebugShowGroupRects && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorIdx && return unsafe_load(_getptr(x, f)) + f === :ColorStack && return _getptr(x, f) + f === :StyleVarStack && return _getptr(x, f) + f === :FontStack && return _getptr(x, f) + f === :FocusScopeStack && return _getptr(x, f) + f === :ItemFlagsStack && return _getptr(x, f) + f === :GroupStack && return _getptr(x, f) + f === :OpenPopupStack && return _getptr(x, f) + f === :BeginPopupStack && return _getptr(x, f) + f === :NavTreeNodeStack && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) + f === :CurrentViewport && return unsafe_load(_getptr(x, f)) + f === :MouseViewport && return unsafe_load(_getptr(x, f)) + f === :MouseLastHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :PlatformLastFocusedViewportId && return unsafe_load(_getptr(x, f)) + f === :FallbackMonitor && return _getptr(x, f) + f === :PlatformMonitorsFullWorkRect && return _getptr(x, f) + f === :ViewportCreatedCount && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowsCreatedCount && return unsafe_load(_getptr(x, f)) + f === :ViewportFocusedStampCount && return unsafe_load(_getptr(x, f)) + f === :NavWindow && return unsafe_load(_getptr(x, f)) + f === :NavId && return unsafe_load(_getptr(x, f)) + f === :NavFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavActivateId && return unsafe_load(_getptr(x, f)) + f === :NavActivateDownId && return unsafe_load(_getptr(x, f)) + f === :NavActivatePressedId && return unsafe_load(_getptr(x, f)) + f === :NavActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavFocusRoute && return _getptr(x, f) + f === :NavHighlightActivatedId && return unsafe_load(_getptr(x, f)) + f === :NavHighlightActivatedTimer && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateId && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavInputSource && return unsafe_load(_getptr(x, f)) + f === :NavLayer && return unsafe_load(_getptr(x, f)) + f === :NavLastValidSelectionUserData && return unsafe_load(_getptr(x, f)) + f === :NavIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :NavMousePosDirty && return unsafe_load(_getptr(x, f)) + f === :NavDisableHighlight && return unsafe_load(_getptr(x, f)) + f === :NavDisableMouseHover && return unsafe_load(_getptr(x, f)) + f === :NavAnyRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequestFromMove && return unsafe_load(_getptr(x, f)) + f === :NavInitResult && return _getptr(x, f) + f === :NavMoveSubmitted && return unsafe_load(_getptr(x, f)) + f === :NavMoveScoringItems && return unsafe_load(_getptr(x, f)) + f === :NavMoveForwardToNextFrame && return unsafe_load(_getptr(x, f)) + f === :NavMoveFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveScrollFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavMoveDir && return unsafe_load(_getptr(x, f)) + f === :NavMoveDirForDebug && return unsafe_load(_getptr(x, f)) + f === :NavMoveClipDir && return unsafe_load(_getptr(x, f)) + f === :NavScoringRect && return _getptr(x, f) + f === :NavScoringNoClipRect && return _getptr(x, f) + f === :NavScoringDebugCount && return unsafe_load(_getptr(x, f)) + f === :NavTabbingDir && return unsafe_load(_getptr(x, f)) + f === :NavTabbingCounter && return unsafe_load(_getptr(x, f)) + f === :NavMoveResultLocal && return _getptr(x, f) + f === :NavMoveResultLocalVisible && return _getptr(x, f) + f === :NavMoveResultOther && return _getptr(x, f) + f === :NavTabbingResultFirst && return _getptr(x, f) + f === :ConfigNavWindowingKeyNext && return unsafe_load(_getptr(x, f)) + f === :ConfigNavWindowingKeyPrev && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTarget && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTargetAnim && return unsafe_load(_getptr(x, f)) + f === :NavWindowingListWindow && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTimer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingHighlightAlpha && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleLayer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleKey && return unsafe_load(_getptr(x, f)) + f === :NavWindowingAccumDeltaPos && return _getptr(x, f) + f === :NavWindowingAccumDeltaSize && return _getptr(x, f) + f === :DimBgRatio && return unsafe_load(_getptr(x, f)) + f === :DragDropActive && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinSource && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinTarget && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropMouseButton && return unsafe_load(_getptr(x, f)) + f === :DragDropPayload && return _getptr(x, f) + f === :DragDropTargetRect && return _getptr(x, f) + f === :DragDropTargetClipRect && return _getptr(x, f) + f === :DragDropTargetId && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurrRectSurface && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurr && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdPrev && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropHoldJustPressedId && return unsafe_load(_getptr(x, f)) + f === :DragDropPayloadBufHeap && return _getptr(x, f) + f === :DragDropPayloadBufLocal && return _getptr(x, f) + f === :ClipperTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :ClipperTempData && return _getptr(x, f) + f === :CurrentTable && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInTable && return unsafe_load(_getptr(x, f)) + f === :TablesTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :TablesTempData && return _getptr(x, f) + f === :Tables && return _getptr(x, f) + f === :TablesLastTimeActive && return _getptr(x, f) + f === :DrawChannelsTempMergeBuffer && return _getptr(x, f) + f === :CurrentTabBar && return unsafe_load(_getptr(x, f)) + f === :TabBars && return _getptr(x, f) + f === :CurrentTabBarStack && return _getptr(x, f) + f === :ShrinkWidthBuffer && return _getptr(x, f) + f === :HoverItemDelayId && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayClearTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :HoverWindowUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :MouseCursor && return unsafe_load(_getptr(x, f)) + f === :MouseStationaryTimer && return unsafe_load(_getptr(x, f)) + f === :MouseLastValidPos && return _getptr(x, f) + f === :InputTextState && return _getptr(x, f) + f === :InputTextDeactivatedState && return _getptr(x, f) + f === :InputTextPasswordFont && return _getptr(x, f) + f === :TempInputId && return unsafe_load(_getptr(x, f)) + f === :DataTypeZeroValue && return _getptr(x, f) + f === :BeginMenuDepth && return unsafe_load(_getptr(x, f)) + f === :BeginComboDepth && return unsafe_load(_getptr(x, f)) + f === :ColorEditOptions && return unsafe_load(_getptr(x, f)) + f === :ColorEditCurrentID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedHue && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedSat && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedColor && return unsafe_load(_getptr(x, f)) + f === :ColorPickerRef && return _getptr(x, f) + f === :ComboPreviewData && return _getptr(x, f) + f === :WindowResizeBorderExpectedRect && return _getptr(x, f) + f === :WindowResizeRelativeMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSeekMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarClickDeltaToGrabCenter && return unsafe_load(_getptr(x, f)) + f === :SliderGrabClickOffset && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :DragSpeedDefaultRatio && return unsafe_load(_getptr(x, f)) + f === :DisabledAlphaBackup && return unsafe_load(_getptr(x, f)) + f === :DisabledStackSize && return unsafe_load(_getptr(x, f)) + f === :LockMarkEdited && return unsafe_load(_getptr(x, f)) + f === :TooltipOverrideCount && return unsafe_load(_getptr(x, f)) + f === :ClipboardHandlerData && return _getptr(x, f) + f === :MenusIdSubmittedThisFrame && return _getptr(x, f) + f === :TypingSelectState && return _getptr(x, f) + f === :PlatformImeData && return _getptr(x, f) + f === :PlatformImeDataPrev && return _getptr(x, f) + f === :PlatformImeViewport && return unsafe_load(_getptr(x, f)) + f === :DockContext && return _getptr(x, f) + f === :DockNodeWindowMenuHandler && return unsafe_load(_getptr(x, f)) + f === :SettingsLoaded && return unsafe_load(_getptr(x, f)) + f === :SettingsDirtyTimer && return unsafe_load(_getptr(x, f)) + f === :SettingsIniData && return _getptr(x, f) + f === :SettingsHandlers && return _getptr(x, f) + f === :SettingsWindows && return _getptr(x, f) + f === :SettingsTables && return _getptr(x, f) + f === :Hooks && return _getptr(x, f) + f === :HookIdNext && return unsafe_load(_getptr(x, f)) + f === :LocalizationTable && return _getptr(x, f) + f === :LogEnabled && return unsafe_load(_getptr(x, f)) + f === :LogType && return unsafe_load(_getptr(x, f)) + f === :LogFile && return unsafe_load(_getptr(x, f)) + f === :LogBuffer && return _getptr(x, f) + f === :LogNextPrefix && return unsafe_load(_getptr(x, f)) + f === :LogNextSuffix && return unsafe_load(_getptr(x, f)) + f === :LogLinePosY && return unsafe_load(_getptr(x, f)) + f === :LogLineFirstItem && return unsafe_load(_getptr(x, f)) + f === :LogDepthRef && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpand && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpandDefault && return unsafe_load(_getptr(x, f)) + f === :DebugLogFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogBuf && return _getptr(x, f) + f === :DebugLogIndex && return _getptr(x, f) + f === :DebugLogAutoDisableFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogAutoDisableFrames && return unsafe_load(_getptr(x, f)) + f === :DebugLocateFrames && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInLocateId && return unsafe_load(_getptr(x, f)) + f === :DebugBreakKeyChord && return unsafe_load(_getptr(x, f)) + f === :DebugBeginReturnValueCullDepth && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerActive && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerMouseButton && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerBreakId && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorTime && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorBackup && return _getptr(x, f) + f === :DebugMetricsConfig && return _getptr(x, f) + f === :DebugIDStackTool && return _getptr(x, f) + f === :DebugAllocInfo && return _getptr(x, f) + f === :DebugHoveredDockNode && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrame && return _getptr(x, f) + f === :FramerateSecPerFrameIdx && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameCount && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameAccum && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouseNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboardNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantTextInputNextFrame && return unsafe_load(_getptr(x, f)) + f === :TempBuffer && return _getptr(x, f) + f === :TempKeychordName && return _getptr(x, f) return getfield(x, f) end @@ -3234,7 +4284,7 @@ end function Base.setproperty!(x::Ptr{ImGuiContext}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -3279,16 +4329,24 @@ struct ImGuiSizeCallbackData CurrentSize::ImVec2 DesiredSize::ImVec2 end -function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) +function _getptr(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) f === :UserData && return Ptr{Ptr{Cvoid}}(x + 0) f === :Pos && return Ptr{ImVec2}(x + 8) f === :CurrentSize && return Ptr{ImVec2}(x + 16) f === :DesiredSize && return Ptr{ImVec2}(x + 24) + error("Unrecognized field of type `ImGuiSizeCallbackData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :CurrentSize && return _getptr(x, f) + f === :DesiredSize && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiSizeCallbackData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -4381,7 +5439,7 @@ struct ImGuiTableColumnSettings data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :WidthOrWeight && return Ptr{Cfloat}(x + 0) f === :UserID && return Ptr{ImGuiID}(x + 4) f === :Index && return Ptr{ImGuiTableColumnIdx}(x + 8) @@ -4390,6 +5448,18 @@ function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :SortDirection && return (Ptr{ImU8}(x + 12), 16, 2) f === :IsEnabled && return (Ptr{ImU8}(x + 12), 18, 1) f === :IsStretch && return (Ptr{ImU8}(x + 12), 19, 1) + error("Unrecognized field of type `ImGuiTableColumnSettings`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) + f === :WidthOrWeight && return unsafe_load(_getptr(x, f)) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :Index && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsStretch && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -4417,7 +5487,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumnSettings}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) diff --git a/lib/x86_64-w64-mingw32.jl b/lib/x86_64-w64-mingw32.jl index c22ef54..e2fe606 100644 --- a/lib/x86_64-w64-mingw32.jl +++ b/lib/x86_64-w64-mingw32.jl @@ -1,4 +1,4 @@ -using CEnum +using CEnum: CEnum, @cenum to_c_type(t::Type) = t to_c_type_pairs(va_list) = map(enumerate(to_c_type.(va_list))) do (ind, type) @@ -13,7 +13,7 @@ struct tm data::NTuple{36, UInt8} end -function Base.getproperty(x::Ptr{tm}, f::Symbol) +function _getptr(x::Ptr{tm}, f::Symbol) f === :tm_sec && return Ptr{Cint}(x + 0) f === :tm_min && return Ptr{Cint}(x + 4) f === :tm_hour && return Ptr{Cint}(x + 8) @@ -23,6 +23,19 @@ function Base.getproperty(x::Ptr{tm}, f::Symbol) f === :tm_wday && return Ptr{Cint}(x + 24) f === :tm_yday && return Ptr{Cint}(x + 28) f === :tm_isdst && return Ptr{Cint}(x + 32) + error("Unrecognized field of type `tm`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{tm}, f::Symbol) + f === :tm_sec && return unsafe_load(_getptr(x, f)) + f === :tm_min && return unsafe_load(_getptr(x, f)) + f === :tm_hour && return unsafe_load(_getptr(x, f)) + f === :tm_mday && return unsafe_load(_getptr(x, f)) + f === :tm_mon && return unsafe_load(_getptr(x, f)) + f === :tm_year && return unsafe_load(_getptr(x, f)) + f === :tm_wday && return unsafe_load(_getptr(x, f)) + f === :tm_yday && return unsafe_load(_getptr(x, f)) + f === :tm_isdst && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -34,7 +47,7 @@ function Base.getproperty(x::tm, f::Symbol) end function Base.setproperty!(x::Ptr{tm}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end # typedef void ( * ImDrawCallback ) ( const ImDrawList * parent_list , const ImDrawCmd * cmd ) @@ -46,16 +59,24 @@ struct ImVec4 z::Cfloat w::Cfloat end -function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) +function _getptr(x::Ptr{ImVec4}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) f === :z && return Ptr{Cfloat}(x + 8) f === :w && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImVec4`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec4}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) + f === :z && return unsafe_load(_getptr(x, f)) + f === :w && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec4}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -70,7 +91,7 @@ struct ImDrawCmd UserCallback::ImDrawCallback UserCallbackData::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) +function _getptr(x::Ptr{ImDrawCmd}, f::Symbol) f === :ClipRect && return Ptr{ImVec4}(x + 0) f === :TextureId && return Ptr{ImTextureID}(x + 16) f === :VtxOffset && return Ptr{Cuint}(x + 24) @@ -78,11 +99,22 @@ function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) f === :ElemCount && return Ptr{Cuint}(x + 32) f === :UserCallback && return Ptr{ImDrawCallback}(x + 40) f === :UserCallbackData && return Ptr{Ptr{Cvoid}}(x + 48) + error("Unrecognized field of type `ImDrawCmd`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawCmd}, f::Symbol) + f === :ClipRect && return _getptr(x, f) + f === :TextureId && return unsafe_load(_getptr(x, f)) + f === :VtxOffset && return unsafe_load(_getptr(x, f)) + f === :IdxOffset && return unsafe_load(_getptr(x, f)) + f === :ElemCount && return unsafe_load(_getptr(x, f)) + f === :UserCallback && return unsafe_load(_getptr(x, f)) + f === :UserCallbackData && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawCmd}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -109,14 +141,20 @@ struct ImVec2 x::Cfloat y::Cfloat end -function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) +function _getptr(x::Ptr{ImVec2}, f::Symbol) f === :x && return Ptr{Cfloat}(x + 0) f === :y && return Ptr{Cfloat}(x + 4) + error("Unrecognized field of type `ImVec2`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVec2}, f::Symbol) + f === :x && return unsafe_load(_getptr(x, f)) + f === :y && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImVec2}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -133,6 +171,24 @@ struct ImVector_ImDrawVert Capacity::Cint Data::Ptr{ImDrawVert} end +function _getptr(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return Ptr{Cint}(x + 0) + f === :Capacity && return Ptr{Cint}(x + 4) + f === :Data && return Ptr{Ptr{ImDrawVert}}(x + 8) + error("Unrecognized field of type `ImVector_ImDrawVert`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImVector_ImDrawVert}, f::Symbol) + f === :Size && return unsafe_load(_getptr(x, f)) + f === :Capacity && return unsafe_load(_getptr(x, f)) + f === :Data && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImVector_ImDrawVert}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImDrawListFlags = Cint @@ -156,7 +212,7 @@ struct ImFontGlyph data::NTuple{40, UInt8} end -function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) +function _getptr(x::Ptr{ImFontGlyph}, f::Symbol) f === :Colored && return (Ptr{Cuint}(x + 0), 0, 1) f === :Visible && return (Ptr{Cuint}(x + 0), 1, 1) f === :Codepoint && return (Ptr{Cuint}(x + 0), 2, 30) @@ -169,6 +225,22 @@ function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) f === :V0 && return Ptr{Cfloat}(x + 28) f === :U1 && return Ptr{Cfloat}(x + 32) f === :V1 && return Ptr{Cfloat}(x + 36) + error("Unrecognized field of type `ImFontGlyph`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontGlyph}, f::Symbol) + f === :Colored && return unsafe_load(_getptr(x, f)) + f === :Visible && return unsafe_load(_getptr(x, f)) + f === :Codepoint && return unsafe_load(_getptr(x, f)) + f === :AdvanceX && return unsafe_load(_getptr(x, f)) + f === :X0 && return unsafe_load(_getptr(x, f)) + f === :Y0 && return unsafe_load(_getptr(x, f)) + f === :X1 && return unsafe_load(_getptr(x, f)) + f === :Y1 && return unsafe_load(_getptr(x, f)) + f === :U0 && return unsafe_load(_getptr(x, f)) + f === :V0 && return unsafe_load(_getptr(x, f)) + f === :U1 && return unsafe_load(_getptr(x, f)) + f === :V1 && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -196,7 +268,7 @@ end function Base.setproperty!(x::Ptr{ImFontGlyph}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -284,7 +356,7 @@ function Base.getproperty(x::ImFontConfig, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) +function _getptr(x::Ptr{ImFontConfig}, f::Symbol) f === :FontData && return Ptr{Ptr{Cvoid}}(x + 0) f === :FontDataSize && return Ptr{Cint}(x + 8) f === :FontDataOwnedByAtlas && return Ptr{Bool}(x + 12) @@ -305,11 +377,35 @@ function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) f === :EllipsisChar && return Ptr{ImWchar}(x + 88) f === :Name && return Ptr{NTuple{40, Cchar}}(x + 90) f === :DstFont && return Ptr{Ptr{ImFont}}(x + 136) + error("Unrecognized field of type `ImFontConfig`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontConfig}, f::Symbol) + f === :FontData && return unsafe_load(_getptr(x, f)) + f === :FontDataSize && return unsafe_load(_getptr(x, f)) + f === :FontDataOwnedByAtlas && return unsafe_load(_getptr(x, f)) + f === :FontNo && return unsafe_load(_getptr(x, f)) + f === :SizePixels && return unsafe_load(_getptr(x, f)) + f === :OversampleH && return unsafe_load(_getptr(x, f)) + f === :OversampleV && return unsafe_load(_getptr(x, f)) + f === :PixelSnapH && return unsafe_load(_getptr(x, f)) + f === :GlyphExtraSpacing && return _getptr(x, f) + f === :GlyphOffset && return _getptr(x, f) + f === :GlyphRanges && return unsafe_load(_getptr(x, f)) + f === :GlyphMinAdvanceX && return unsafe_load(_getptr(x, f)) + f === :GlyphMaxAdvanceX && return unsafe_load(_getptr(x, f)) + f === :MergeMode && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :RasterizerMultiply && return unsafe_load(_getptr(x, f)) + f === :RasterizerDensity && return unsafe_load(_getptr(x, f)) + f === :EllipsisChar && return unsafe_load(_getptr(x, f)) + f === :Name && return _getptr(x, f) + f === :DstFont && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontConfig}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImFontConfig @@ -346,7 +442,7 @@ struct ImFontAtlas PackIdMouseCursors::Cint PackIdLines::Cint end -function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) +function _getptr(x::Ptr{ImFontAtlas}, f::Symbol) f === :Flags && return Ptr{ImFontAtlasFlags}(x + 0) f === :TexID && return Ptr{ImTextureID}(x + 8) f === :TexDesiredWidth && return Ptr{Cint}(x + 16) @@ -369,11 +465,37 @@ function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) f === :FontBuilderFlags && return Ptr{Cuint}(x + 1168) f === :PackIdMouseCursors && return Ptr{Cint}(x + 1172) f === :PackIdLines && return Ptr{Cint}(x + 1176) + error("Unrecognized field of type `ImFontAtlas`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImFontAtlas}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :TexID && return unsafe_load(_getptr(x, f)) + f === :TexDesiredWidth && return unsafe_load(_getptr(x, f)) + f === :TexGlyphPadding && return unsafe_load(_getptr(x, f)) + f === :Locked && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :TexReady && return unsafe_load(_getptr(x, f)) + f === :TexPixelsUseColors && return unsafe_load(_getptr(x, f)) + f === :TexPixelsAlpha8 && return unsafe_load(_getptr(x, f)) + f === :TexPixelsRGBA32 && return unsafe_load(_getptr(x, f)) + f === :TexWidth && return unsafe_load(_getptr(x, f)) + f === :TexHeight && return unsafe_load(_getptr(x, f)) + f === :TexUvScale && return _getptr(x, f) + f === :TexUvWhitePixel && return _getptr(x, f) + f === :Fonts && return _getptr(x, f) + f === :CustomRects && return _getptr(x, f) + f === :ConfigData && return _getptr(x, f) + f === :TexUvLines && return _getptr(x, f) + f === :FontBuilderIO && return unsafe_load(_getptr(x, f)) + f === :FontBuilderFlags && return unsafe_load(_getptr(x, f)) + f === :PackIdMouseCursors && return unsafe_load(_getptr(x, f)) + f === :PackIdLines && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImFontAtlas}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -470,7 +592,7 @@ struct ImDrawList _FringeScale::Cfloat _OwnerName::Ptr{Cchar} end -function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) +function _getptr(x::Ptr{ImDrawList}, f::Symbol) f === :CmdBuffer && return Ptr{ImVector_ImDrawCmd}(x + 0) f === :IdxBuffer && return Ptr{ImVector_ImDrawIdx}(x + 16) f === :VtxBuffer && return Ptr{ImVector_ImDrawVert}(x + 32) @@ -486,11 +608,30 @@ function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) f === :_TextureIdStack && return Ptr{ImVector_ImTextureID}(x + 168) f === :_FringeScale && return Ptr{Cfloat}(x + 184) f === :_OwnerName && return Ptr{Ptr{Cchar}}(x + 192) + error("Unrecognized field of type `ImDrawList`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawList}, f::Symbol) + f === :CmdBuffer && return _getptr(x, f) + f === :IdxBuffer && return _getptr(x, f) + f === :VtxBuffer && return _getptr(x, f) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :_VtxCurrentIdx && return unsafe_load(_getptr(x, f)) + f === :_Data && return unsafe_load(_getptr(x, f)) + f === :_VtxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_IdxWritePtr && return unsafe_load(_getptr(x, f)) + f === :_Path && return _getptr(x, f) + f === :_CmdHeader && return _getptr(x, f) + f === :_Splitter && return _getptr(x, f) + f === :_ClipRectStack && return _getptr(x, f) + f === :_TextureIdStack && return _getptr(x, f) + f === :_FringeScale && return unsafe_load(_getptr(x, f)) + f === :_OwnerName && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawList}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -529,7 +670,7 @@ function Base.getproperty(x::ImGuiViewport, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) +function _getptr(x::Ptr{ImGuiViewport}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiViewportFlags}(x + 4) f === :Pos && return Ptr{ImVec2}(x + 8) @@ -547,11 +688,32 @@ function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) f === :PlatformRequestMove && return Ptr{Bool}(x + 89) f === :PlatformRequestResize && return Ptr{Bool}(x + 90) f === :PlatformRequestClose && return Ptr{Bool}(x + 91) + error("Unrecognized field of type `ImGuiViewport`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiViewport}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :ParentViewportId && return unsafe_load(_getptr(x, f)) + f === :DrawData && return unsafe_load(_getptr(x, f)) + f === :RendererUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformUserData && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) + f === :PlatformHandleRaw && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowCreated && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestMove && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestResize && return unsafe_load(_getptr(x, f)) + f === :PlatformRequestClose && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiViewport}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImDrawData @@ -565,7 +727,7 @@ struct ImDrawData FramebufferScale::ImVec2 OwnerViewport::Ptr{ImGuiViewport} end -function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) +function _getptr(x::Ptr{ImDrawData}, f::Symbol) f === :Valid && return Ptr{Bool}(x + 0) f === :CmdListsCount && return Ptr{Cint}(x + 4) f === :TotalIdxCount && return Ptr{Cint}(x + 8) @@ -575,11 +737,24 @@ function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) f === :DisplaySize && return Ptr{ImVec2}(x + 40) f === :FramebufferScale && return Ptr{ImVec2}(x + 48) f === :OwnerViewport && return Ptr{Ptr{ImGuiViewport}}(x + 56) + error("Unrecognized field of type `ImDrawData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImDrawData}, f::Symbol) + f === :Valid && return unsafe_load(_getptr(x, f)) + f === :CmdListsCount && return unsafe_load(_getptr(x, f)) + f === :TotalIdxCount && return unsafe_load(_getptr(x, f)) + f === :TotalVtxCount && return unsafe_load(_getptr(x, f)) + f === :CmdLists && return _getptr(x, f) + f === :DisplayPos && return _getptr(x, f) + f === :DisplaySize && return _getptr(x, f) + f === :FramebufferScale && return _getptr(x, f) + f === :OwnerViewport && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImDrawData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -616,6 +791,26 @@ struct ImGuiKeyData DownDurationPrev::Cfloat AnalogValue::Cfloat end +function _getptr(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return Ptr{Bool}(x + 0) + f === :DownDuration && return Ptr{Cfloat}(x + 4) + f === :DownDurationPrev && return Ptr{Cfloat}(x + 8) + f === :AnalogValue && return Ptr{Cfloat}(x + 12) + error("Unrecognized field of type `ImGuiKeyData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiKeyData}, f::Symbol) + f === :Down && return unsafe_load(_getptr(x, f)) + f === :DownDuration && return unsafe_load(_getptr(x, f)) + f === :DownDurationPrev && return unsafe_load(_getptr(x, f)) + f === :AnalogValue && return unsafe_load(_getptr(x, f)) + return getfield(x, f) +end + +function Base.setproperty!(x::Ptr{ImGuiKeyData}, f::Symbol, v) + unsafe_store!(_getptr(x, f), v) +end + const ImU16 = Cushort @@ -729,7 +924,7 @@ function Base.getproperty(x::ImGuiIO, f::Symbol) return getfield(x, f) end -function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiIO}, f::Symbol) f === :ConfigFlags && return Ptr{ImGuiConfigFlags}(x + 0) f === :BackendFlags && return Ptr{ImGuiBackendFlags}(x + 4) f === :DisplaySize && return Ptr{ImVec2}(x + 8) @@ -830,11 +1025,115 @@ function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) f === :BackendUsingLegacyNavInputArray && return Ptr{Bool}(x + 3003) f === :InputQueueSurrogate && return Ptr{ImWchar16}(x + 3004) f === :InputQueueCharacters && return Ptr{ImVector_ImWchar}(x + 3008) + error("Unrecognized field of type `ImGuiIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiIO}, f::Symbol) + f === :ConfigFlags && return unsafe_load(_getptr(x, f)) + f === :BackendFlags && return unsafe_load(_getptr(x, f)) + f === :DisplaySize && return _getptr(x, f) + f === :DeltaTime && return unsafe_load(_getptr(x, f)) + f === :IniSavingRate && return unsafe_load(_getptr(x, f)) + f === :IniFilename && return unsafe_load(_getptr(x, f)) + f === :LogFilename && return unsafe_load(_getptr(x, f)) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Fonts && return unsafe_load(_getptr(x, f)) + f === :FontGlobalScale && return unsafe_load(_getptr(x, f)) + f === :FontAllowUserScaling && return unsafe_load(_getptr(x, f)) + f === :FontDefault && return unsafe_load(_getptr(x, f)) + f === :DisplayFramebufferScale && return _getptr(x, f) + f === :ConfigDockingNoSplit && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingWithShift && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingAlwaysTabBar && return unsafe_load(_getptr(x, f)) + f === :ConfigDockingTransparentPayload && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoAutoMerge && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoTaskBarIcon && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDecoration && return unsafe_load(_getptr(x, f)) + f === :ConfigViewportsNoDefaultParent && return unsafe_load(_getptr(x, f)) + f === :MouseDrawCursor && return unsafe_load(_getptr(x, f)) + f === :ConfigMacOSXBehaviors && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTrickleEventQueue && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextCursorBlink && return unsafe_load(_getptr(x, f)) + f === :ConfigInputTextEnterKeepActive && return unsafe_load(_getptr(x, f)) + f === :ConfigDragClickToInputText && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsResizeFromEdges && return unsafe_load(_getptr(x, f)) + f === :ConfigWindowsMoveFromTitleBarOnly && return unsafe_load(_getptr(x, f)) + f === :ConfigMemoryCompactTimer && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickTime && return unsafe_load(_getptr(x, f)) + f === :MouseDoubleClickMaxDist && return unsafe_load(_getptr(x, f)) + f === :MouseDragThreshold && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatDelay && return unsafe_load(_getptr(x, f)) + f === :KeyRepeatRate && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIsDebuggerPresent && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueOnce && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugBeginReturnValueLoop && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIgnoreFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ConfigDebugIniSettings && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformName && return unsafe_load(_getptr(x, f)) + f === :BackendRendererName && return unsafe_load(_getptr(x, f)) + f === :BackendPlatformUserData && return unsafe_load(_getptr(x, f)) + f === :BackendRendererUserData && return unsafe_load(_getptr(x, f)) + f === :BackendLanguageUserData && return unsafe_load(_getptr(x, f)) + f === :GetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :SetClipboardTextFn && return unsafe_load(_getptr(x, f)) + f === :ClipboardUserData && return unsafe_load(_getptr(x, f)) + f === :SetPlatformImeDataFn && return unsafe_load(_getptr(x, f)) + f === :PlatformLocaleDecimalPoint && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouse && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboard && return unsafe_load(_getptr(x, f)) + f === :WantTextInput && return unsafe_load(_getptr(x, f)) + f === :WantSetMousePos && return unsafe_load(_getptr(x, f)) + f === :WantSaveIniSettings && return unsafe_load(_getptr(x, f)) + f === :NavActive && return unsafe_load(_getptr(x, f)) + f === :NavVisible && return unsafe_load(_getptr(x, f)) + f === :Framerate && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderVertices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderIndices && return unsafe_load(_getptr(x, f)) + f === :MetricsRenderWindows && return unsafe_load(_getptr(x, f)) + f === :MetricsActiveWindows && return unsafe_load(_getptr(x, f)) + f === :MouseDelta && return _getptr(x, f) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseDown && return _getptr(x, f) + f === :MouseWheel && return unsafe_load(_getptr(x, f)) + f === :MouseWheelH && return unsafe_load(_getptr(x, f)) + f === :MouseSource && return unsafe_load(_getptr(x, f)) + f === :MouseHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :KeyCtrl && return unsafe_load(_getptr(x, f)) + f === :KeyShift && return unsafe_load(_getptr(x, f)) + f === :KeyAlt && return unsafe_load(_getptr(x, f)) + f === :KeySuper && return unsafe_load(_getptr(x, f)) + f === :KeyMods && return unsafe_load(_getptr(x, f)) + f === :KeysData && return _getptr(x, f) + f === :WantCaptureMouseUnlessPopupClose && return unsafe_load(_getptr(x, f)) + f === :MousePosPrev && return _getptr(x, f) + f === :MouseClickedPos && return _getptr(x, f) + f === :MouseClickedTime && return _getptr(x, f) + f === :MouseClicked && return _getptr(x, f) + f === :MouseDoubleClicked && return _getptr(x, f) + f === :MouseClickedCount && return _getptr(x, f) + f === :MouseClickedLastCount && return _getptr(x, f) + f === :MouseReleased && return _getptr(x, f) + f === :MouseDownOwned && return _getptr(x, f) + f === :MouseDownOwnedUnlessPopupClose && return _getptr(x, f) + f === :MouseWheelRequestAxisSwap && return unsafe_load(_getptr(x, f)) + f === :MouseCtrlLeftAsRightClick && return unsafe_load(_getptr(x, f)) + f === :MouseDownDuration && return _getptr(x, f) + f === :MouseDownDurationPrev && return _getptr(x, f) + f === :MouseDragMaxDistanceAbs && return _getptr(x, f) + f === :MouseDragMaxDistanceSqr && return _getptr(x, f) + f === :PenPressure && return unsafe_load(_getptr(x, f)) + f === :AppFocusLost && return unsafe_load(_getptr(x, f)) + f === :AppAcceptingEvents && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyKeyArrays && return unsafe_load(_getptr(x, f)) + f === :BackendUsingLegacyNavInputArray && return unsafe_load(_getptr(x, f)) + f === :InputQueueSurrogate && return unsafe_load(_getptr(x, f)) + f === :InputQueueCharacters && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImGuiPlatformMonitor @@ -845,18 +1144,28 @@ struct ImGuiPlatformMonitor DpiScale::Cfloat PlatformHandle::Ptr{Cvoid} end -function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) f === :MainPos && return Ptr{ImVec2}(x + 0) f === :MainSize && return Ptr{ImVec2}(x + 8) f === :WorkPos && return Ptr{ImVec2}(x + 16) f === :WorkSize && return Ptr{ImVec2}(x + 24) f === :DpiScale && return Ptr{Cfloat}(x + 32) f === :PlatformHandle && return Ptr{Ptr{Cvoid}}(x + 40) + error("Unrecognized field of type `ImGuiPlatformMonitor`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformMonitor}, f::Symbol) + f === :MainPos && return _getptr(x, f) + f === :MainSize && return _getptr(x, f) + f === :WorkPos && return _getptr(x, f) + f === :WorkSize && return _getptr(x, f) + f === :DpiScale && return unsafe_load(_getptr(x, f)) + f === :PlatformHandle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformMonitor}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -899,7 +1208,7 @@ struct ImGuiPlatformIO Monitors::ImVector_ImGuiPlatformMonitor Viewports::ImVector_ImGuiViewportPtr end -function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) +function _getptr(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Platform_CreateWindow && return Ptr{Ptr{Cvoid}}(x + 0) f === :Platform_DestroyWindow && return Ptr{Ptr{Cvoid}}(x + 8) f === :Platform_ShowWindow && return Ptr{Ptr{Cvoid}}(x + 16) @@ -925,11 +1234,40 @@ function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) f === :Renderer_SwapBuffers && return Ptr{Ptr{Cvoid}}(x + 176) f === :Monitors && return Ptr{ImVector_ImGuiPlatformMonitor}(x + 184) f === :Viewports && return Ptr{ImVector_ImGuiViewportPtr}(x + 200) + error("Unrecognized field of type `ImGuiPlatformIO`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiPlatformIO}, f::Symbol) + f === :Platform_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_ShowWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowPos && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowFocus && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowMinimized && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowTitle && return unsafe_load(_getptr(x, f)) + f === :Platform_SetWindowAlpha && return unsafe_load(_getptr(x, f)) + f === :Platform_UpdateWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Platform_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Platform_GetWindowDpiScale && return unsafe_load(_getptr(x, f)) + f === :Platform_OnChangedViewport && return unsafe_load(_getptr(x, f)) + f === :Platform_CreateVkSurface && return unsafe_load(_getptr(x, f)) + f === :Renderer_CreateWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_DestroyWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SetWindowSize && return unsafe_load(_getptr(x, f)) + f === :Renderer_RenderWindow && return unsafe_load(_getptr(x, f)) + f === :Renderer_SwapBuffers && return unsafe_load(_getptr(x, f)) + f === :Monitors && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiPlatformIO}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -999,7 +1337,7 @@ struct ImGuiStyle HoverFlagsForTooltipMouse::ImGuiHoveredFlags HoverFlagsForTooltipNav::ImGuiHoveredFlags end -function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyle}, f::Symbol) f === :Alpha && return Ptr{Cfloat}(x + 0) f === :DisabledAlpha && return Ptr{Cfloat}(x + 4) f === :WindowPadding && return Ptr{ImVec2}(x + 8) @@ -1053,11 +1391,68 @@ function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) f === :HoverDelayNormal && return Ptr{Cfloat}(x + 1128) f === :HoverFlagsForTooltipMouse && return Ptr{ImGuiHoveredFlags}(x + 1132) f === :HoverFlagsForTooltipNav && return Ptr{ImGuiHoveredFlags}(x + 1136) + error("Unrecognized field of type `ImGuiStyle`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyle}, f::Symbol) + f === :Alpha && return unsafe_load(_getptr(x, f)) + f === :DisabledAlpha && return unsafe_load(_getptr(x, f)) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :WindowMinSize && return _getptr(x, f) + f === :WindowTitleAlign && return _getptr(x, f) + f === :WindowMenuButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ChildRounding && return unsafe_load(_getptr(x, f)) + f === :ChildBorderSize && return unsafe_load(_getptr(x, f)) + f === :PopupRounding && return unsafe_load(_getptr(x, f)) + f === :PopupBorderSize && return unsafe_load(_getptr(x, f)) + f === :FramePadding && return _getptr(x, f) + f === :FrameRounding && return unsafe_load(_getptr(x, f)) + f === :FrameBorderSize && return unsafe_load(_getptr(x, f)) + f === :ItemSpacing && return _getptr(x, f) + f === :ItemInnerSpacing && return _getptr(x, f) + f === :CellPadding && return _getptr(x, f) + f === :TouchExtraPadding && return _getptr(x, f) + f === :IndentSpacing && return unsafe_load(_getptr(x, f)) + f === :ColumnsMinSpacing && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSize && return unsafe_load(_getptr(x, f)) + f === :ScrollbarRounding && return unsafe_load(_getptr(x, f)) + f === :GrabMinSize && return unsafe_load(_getptr(x, f)) + f === :GrabRounding && return unsafe_load(_getptr(x, f)) + f === :LogSliderDeadzone && return unsafe_load(_getptr(x, f)) + f === :TabRounding && return unsafe_load(_getptr(x, f)) + f === :TabBorderSize && return unsafe_load(_getptr(x, f)) + f === :TabMinWidthForCloseButton && return unsafe_load(_getptr(x, f)) + f === :TabBarBorderSize && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersAngle && return unsafe_load(_getptr(x, f)) + f === :TableAngledHeadersTextAlign && return _getptr(x, f) + f === :ColorButtonPosition && return unsafe_load(_getptr(x, f)) + f === :ButtonTextAlign && return _getptr(x, f) + f === :SelectableTextAlign && return _getptr(x, f) + f === :SeparatorTextBorderSize && return unsafe_load(_getptr(x, f)) + f === :SeparatorTextAlign && return _getptr(x, f) + f === :SeparatorTextPadding && return _getptr(x, f) + f === :DisplayWindowPadding && return _getptr(x, f) + f === :DisplaySafeAreaPadding && return _getptr(x, f) + f === :DockingSeparatorSize && return unsafe_load(_getptr(x, f)) + f === :MouseCursorScale && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLines && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedLinesUseTex && return unsafe_load(_getptr(x, f)) + f === :AntiAliasedFill && return unsafe_load(_getptr(x, f)) + f === :CurveTessellationTol && return unsafe_load(_getptr(x, f)) + f === :CircleTessellationMaxError && return unsafe_load(_getptr(x, f)) + f === :Colors && return _getptr(x, f) + f === :HoverStationaryDelay && return unsafe_load(_getptr(x, f)) + f === :HoverDelayShort && return unsafe_load(_getptr(x, f)) + f === :HoverDelayNormal && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipMouse && return unsafe_load(_getptr(x, f)) + f === :HoverFlagsForTooltipNav && return unsafe_load(_getptr(x, f)) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiStyle}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -1085,7 +1480,7 @@ struct ImGuiInputEvent data::NTuple{28, UInt8} end -function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) +function _getptr(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Type && return Ptr{ImGuiInputEventType}(x + 0) f === :Source && return Ptr{ImGuiInputSource}(x + 4) f === :EventId && return Ptr{ImU32}(x + 8) @@ -1097,6 +1492,21 @@ function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) f === :Text && return Ptr{ImGuiInputEventText}(x + 12) f === :AppFocused && return Ptr{ImGuiInputEventAppFocused}(x + 12) f === :AddedByTestEngine && return Ptr{Bool}(x + 24) + error("Unrecognized field of type `ImGuiInputEvent`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiInputEvent}, f::Symbol) + f === :Type && return unsafe_load(_getptr(x, f)) + f === :Source && return unsafe_load(_getptr(x, f)) + f === :EventId && return unsafe_load(_getptr(x, f)) + f === :MousePos && return _getptr(x, f) + f === :MouseWheel && return _getptr(x, f) + f === :MouseButton && return _getptr(x, f) + f === :MouseViewport && return _getptr(x, f) + f === :Key && return _getptr(x, f) + f === :Text && return _getptr(x, f) + f === :AppFocused && return _getptr(x, f) + f === :AddedByTestEngine && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1108,7 +1518,7 @@ function Base.getproperty(x::ImGuiInputEvent, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiInputEvent}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiInputEvent @@ -1216,11 +1626,19 @@ struct ImGuiStoragePair data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) +function _getptr(x::Ptr{ImGuiStoragePair}, f::Symbol) f === :key && return Ptr{ImGuiID}(x + 0) f === :val_i && return Ptr{Cint}(x + 8) f === :val_f && return Ptr{Cfloat}(x + 8) f === :val_p && return Ptr{Ptr{Cvoid}}(x + 8) + error("Unrecognized field of type `ImGuiStoragePair`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStoragePair}, f::Symbol) + f === :key && return unsafe_load(_getptr(x, f)) + f === :val_i && return unsafe_load(_getptr(x, f)) + f === :val_f && return unsafe_load(_getptr(x, f)) + f === :val_p && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1232,7 +1650,7 @@ function Base.getproperty(x::ImGuiStoragePair, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStoragePair}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStoragePair @@ -1440,7 +1858,7 @@ struct ImGuiDockNode data::NTuple{208, UInt8} end -function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) +function _getptr(x::Ptr{ImGuiDockNode}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :SharedFlags && return Ptr{ImGuiDockNodeFlags}(x + 4) f === :LocalFlags && return Ptr{ImGuiDockNodeFlags}(x + 8) @@ -1483,6 +1901,52 @@ function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) f === :WantMouseMove && return (Ptr{Bool}(x + 204), 8, 1) f === :WantHiddenTabBarUpdate && return (Ptr{Bool}(x + 204), 9, 1) f === :WantHiddenTabBarToggle && return (Ptr{Bool}(x + 204), 10, 1) + error("Unrecognized field of type `ImGuiDockNode`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiDockNode}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :SharedFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlags && return unsafe_load(_getptr(x, f)) + f === :LocalFlagsInWindows && return unsafe_load(_getptr(x, f)) + f === :MergedFlags && return unsafe_load(_getptr(x, f)) + f === :State && return unsafe_load(_getptr(x, f)) + f === :ParentNode && return unsafe_load(_getptr(x, f)) + f === :ChildNodes && return _getptr(x, f) + f === :Windows && return _getptr(x, f) + f === :TabBar && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeRef && return _getptr(x, f) + f === :SplitAxis && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :LastBgColor && return unsafe_load(_getptr(x, f)) + f === :HostWindow && return unsafe_load(_getptr(x, f)) + f === :VisibleWindow && return unsafe_load(_getptr(x, f)) + f === :CentralNode && return unsafe_load(_getptr(x, f)) + f === :OnlyNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :CountNodeWithWindows && return unsafe_load(_getptr(x, f)) + f === :LastFrameAlive && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameFocused && return unsafe_load(_getptr(x, f)) + f === :LastFocusedNodeId && return unsafe_load(_getptr(x, f)) + f === :SelectedTabId && return unsafe_load(_getptr(x, f)) + f === :WantCloseTabId && return unsafe_load(_getptr(x, f)) + f === :RefViewportId && return unsafe_load(_getptr(x, f)) + f === :AuthorityForPos && return unsafe_load(_getptr(x, f)) + f === :AuthorityForSize && return unsafe_load(_getptr(x, f)) + f === :AuthorityForViewport && return unsafe_load(_getptr(x, f)) + f === :IsVisible && return unsafe_load(_getptr(x, f)) + f === :IsFocused && return unsafe_load(_getptr(x, f)) + f === :IsBgDrawnThisFrame && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :HasWindowMenuButton && return unsafe_load(_getptr(x, f)) + f === :HasCentralNodeChild && return unsafe_load(_getptr(x, f)) + f === :WantCloseAll && return unsafe_load(_getptr(x, f)) + f === :WantLockSizeOnce && return unsafe_load(_getptr(x, f)) + f === :WantMouseMove && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarUpdate && return unsafe_load(_getptr(x, f)) + f === :WantHiddenTabBarToggle && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -1510,7 +1974,7 @@ end function Base.setproperty!(x::Ptr{ImGuiDockNode}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1535,7 +1999,7 @@ struct ImGuiWindow data::NTuple{1160, UInt8} end -function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) +function _getptr(x::Ptr{ImGuiWindow}, f::Symbol) f === :Ctx && return Ptr{Ptr{ImGuiContext}}(x + 0) f === :Name && return Ptr{Ptr{Cchar}}(x + 8) f === :ID && return Ptr{ImGuiID}(x + 16) @@ -1660,6 +2124,134 @@ function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) f === :DockId && return Ptr{ImGuiID}(x + 1136) f === :DockTabItemStatusFlags && return Ptr{ImGuiItemStatusFlags}(x + 1140) f === :DockTabItemRect && return Ptr{ImRect}(x + 1144) + error("Unrecognized field of type `ImGuiWindow`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiWindow}, f::Symbol) + f === :Ctx && return unsafe_load(_getptr(x, f)) + f === :Name && return unsafe_load(_getptr(x, f)) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :FlagsPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ChildFlags && return unsafe_load(_getptr(x, f)) + f === :WindowClass && return _getptr(x, f) + f === :Viewport && return unsafe_load(_getptr(x, f)) + f === :ViewportId && return unsafe_load(_getptr(x, f)) + f === :ViewportPos && return _getptr(x, f) + f === :ViewportAllowPlatformMonitorExtend && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :Size && return _getptr(x, f) + f === :SizeFull && return _getptr(x, f) + f === :ContentSize && return _getptr(x, f) + f === :ContentSizeIdeal && return _getptr(x, f) + f === :ContentSizeExplicit && return _getptr(x, f) + f === :WindowPadding && return _getptr(x, f) + f === :WindowRounding && return unsafe_load(_getptr(x, f)) + f === :WindowBorderSize && return unsafe_load(_getptr(x, f)) + f === :TitleBarHeight && return unsafe_load(_getptr(x, f)) + f === :MenuBarHeight && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY1 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeX2 && return unsafe_load(_getptr(x, f)) + f === :DecoOuterSizeY2 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeX1 && return unsafe_load(_getptr(x, f)) + f === :DecoInnerSizeY1 && return unsafe_load(_getptr(x, f)) + f === :NameBufLen && return unsafe_load(_getptr(x, f)) + f === :MoveId && return unsafe_load(_getptr(x, f)) + f === :TabId && return unsafe_load(_getptr(x, f)) + f === :ChildId && return unsafe_load(_getptr(x, f)) + f === :PopupId && return unsafe_load(_getptr(x, f)) + f === :Scroll && return _getptr(x, f) + f === :ScrollMax && return _getptr(x, f) + f === :ScrollTarget && return _getptr(x, f) + f === :ScrollTargetCenterRatio && return _getptr(x, f) + f === :ScrollTargetEdgeSnapDist && return _getptr(x, f) + f === :ScrollbarSizes && return _getptr(x, f) + f === :ScrollbarX && return unsafe_load(_getptr(x, f)) + f === :ScrollbarY && return unsafe_load(_getptr(x, f)) + f === :ViewportOwned && return unsafe_load(_getptr(x, f)) + f === :Active && return unsafe_load(_getptr(x, f)) + f === :WasActive && return unsafe_load(_getptr(x, f)) + f === :WriteAccessed && return unsafe_load(_getptr(x, f)) + f === :Collapsed && return unsafe_load(_getptr(x, f)) + f === :WantCollapseToggle && return unsafe_load(_getptr(x, f)) + f === :SkipItems && return unsafe_load(_getptr(x, f)) + f === :SkipRefresh && return unsafe_load(_getptr(x, f)) + f === :Appearing && return unsafe_load(_getptr(x, f)) + f === :Hidden && return unsafe_load(_getptr(x, f)) + f === :IsFallbackWindow && return unsafe_load(_getptr(x, f)) + f === :IsExplicitChild && return unsafe_load(_getptr(x, f)) + f === :HasCloseButton && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHovered && return unsafe_load(_getptr(x, f)) + f === :ResizeBorderHeld && return unsafe_load(_getptr(x, f)) + f === :BeginCount && return unsafe_load(_getptr(x, f)) + f === :BeginCountPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinParent && return unsafe_load(_getptr(x, f)) + f === :BeginOrderWithinContext && return unsafe_load(_getptr(x, f)) + f === :FocusOrder && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesX && return unsafe_load(_getptr(x, f)) + f === :AutoFitFramesY && return unsafe_load(_getptr(x, f)) + f === :AutoFitOnlyGrows && return unsafe_load(_getptr(x, f)) + f === :AutoPosLastDirection && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCanSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesCannotSkipItems && return unsafe_load(_getptr(x, f)) + f === :HiddenFramesForRenderOnly && return unsafe_load(_getptr(x, f)) + f === :DisableInputsFrames && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowSizeAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowCollapsedAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowDockAllowFlags && return unsafe_load(_getptr(x, f)) + f === :SetWindowPosVal && return _getptr(x, f) + f === :SetWindowPosPivot && return _getptr(x, f) + f === :IDStack && return _getptr(x, f) + f === :DC && return _getptr(x, f) + f === :OuterRectClipped && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :ParentWorkRect && return _getptr(x, f) + f === :ClipRect && return _getptr(x, f) + f === :ContentRegionRect && return _getptr(x, f) + f === :HitTestHoleSize && return _getptr(x, f) + f === :HitTestHoleOffset && return _getptr(x, f) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :LastFrameJustFocused && return unsafe_load(_getptr(x, f)) + f === :LastTimeActive && return unsafe_load(_getptr(x, f)) + f === :ItemWidthDefault && return unsafe_load(_getptr(x, f)) + f === :StateStorage && return _getptr(x, f) + f === :ColumnsStorage && return _getptr(x, f) + f === :FontWindowScale && return unsafe_load(_getptr(x, f)) + f === :FontDpiScale && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :DrawList && return unsafe_load(_getptr(x, f)) + f === :DrawListInst && return _getptr(x, f) + f === :ParentWindow && return unsafe_load(_getptr(x, f)) + f === :ParentWindowInBeginStack && return unsafe_load(_getptr(x, f)) + f === :RootWindow && return unsafe_load(_getptr(x, f)) + f === :RootWindowPopupTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowDockTree && return unsafe_load(_getptr(x, f)) + f === :RootWindowForTitleBarHighlight && return unsafe_load(_getptr(x, f)) + f === :RootWindowForNav && return unsafe_load(_getptr(x, f)) + f === :ParentWindowForFocusRoute && return unsafe_load(_getptr(x, f)) + f === :NavLastChildNavWindow && return unsafe_load(_getptr(x, f)) + f === :NavLastIds && return _getptr(x, f) + f === :NavRectRel && return _getptr(x, f) + f === :NavPreferredScoringPosRel && return _getptr(x, f) + f === :NavRootFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListIdxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryDrawListVtxCapacity && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :DockIsActive && return unsafe_load(_getptr(x, f)) + f === :DockNodeIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabIsVisible && return unsafe_load(_getptr(x, f)) + f === :DockTabWantClose && return unsafe_load(_getptr(x, f)) + f === :DockOrder && return unsafe_load(_getptr(x, f)) + f === :DockStyle && return _getptr(x, f) + f === :DockNode && return unsafe_load(_getptr(x, f)) + f === :DockNodeAsHost && return unsafe_load(_getptr(x, f)) + f === :DockId && return unsafe_load(_getptr(x, f)) + f === :DockTabItemStatusFlags && return unsafe_load(_getptr(x, f)) + f === :DockTabItemRect && return _getptr(x, f) return getfield(x, f) end @@ -1687,7 +2279,7 @@ end function Base.setproperty!(x::Ptr{ImGuiWindow}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -1855,10 +2447,17 @@ struct ImGuiStyleMod data::NTuple{12, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) +function _getptr(x::Ptr{ImGuiStyleMod}, f::Symbol) f === :VarIdx && return Ptr{ImGuiStyleVar}(x + 0) f === :BackupInt && return Ptr{NTuple{2, Cint}}(x + 4) f === :BackupFloat && return Ptr{NTuple{2, Cfloat}}(x + 4) + error("Unrecognized field of type `ImGuiStyleMod`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStyleMod}, f::Symbol) + f === :VarIdx && return unsafe_load(_getptr(x, f)) + f === :BackupInt && return _getptr(x, f) + f === :BackupFloat && return _getptr(x, f) return getfield(x, f) end @@ -1870,7 +2469,7 @@ function Base.getproperty(x::ImGuiStyleMod, f::Symbol) end function Base.setproperty!(x::Ptr{ImGuiStyleMod}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end struct ImVector_ImGuiStyleMod @@ -2245,7 +2844,7 @@ struct ImGuiTableColumn data::NTuple{112, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :Flags && return Ptr{ImGuiTableColumnFlags}(x + 0) f === :WidthGiven && return Ptr{Cfloat}(x + 4) f === :MinX && return Ptr{Cfloat}(x + 8) @@ -2287,6 +2886,51 @@ function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) f === :SortDirectionsAvailCount && return (Ptr{ImU8}(x + 108), 10, 2) f === :SortDirectionsAvailMask && return (Ptr{ImU8}(x + 108), 12, 4) f === :SortDirectionsAvailList && return Ptr{ImU8}(x + 110) + error("Unrecognized field of type `ImGuiTableColumn`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumn}, f::Symbol) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :WidthGiven && return unsafe_load(_getptr(x, f)) + f === :MinX && return unsafe_load(_getptr(x, f)) + f === :MaxX && return unsafe_load(_getptr(x, f)) + f === :WidthRequest && return unsafe_load(_getptr(x, f)) + f === :WidthAuto && return unsafe_load(_getptr(x, f)) + f === :StretchWeight && return unsafe_load(_getptr(x, f)) + f === :InitStretchWeightOrWidth && return unsafe_load(_getptr(x, f)) + f === :ClipRect && return _getptr(x, f) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :WorkMinX && return unsafe_load(_getptr(x, f)) + f === :WorkMaxX && return unsafe_load(_getptr(x, f)) + f === :ItemWidth && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXFrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXUnfrozen && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersUsed && return unsafe_load(_getptr(x, f)) + f === :ContentMaxXHeadersIdeal && return unsafe_load(_getptr(x, f)) + f === :NameOffset && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IndexWithinEnabledSet && return unsafe_load(_getptr(x, f)) + f === :PrevEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :NextEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :DrawChannelFrozen && return unsafe_load(_getptr(x, f)) + f === :DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabled && return unsafe_load(_getptr(x, f)) + f === :IsUserEnabledNextFrame && return unsafe_load(_getptr(x, f)) + f === :IsVisibleX && return unsafe_load(_getptr(x, f)) + f === :IsVisibleY && return unsafe_load(_getptr(x, f)) + f === :IsRequestOutput && return unsafe_load(_getptr(x, f)) + f === :IsSkipItems && return unsafe_load(_getptr(x, f)) + f === :IsPreserveWidthAuto && return unsafe_load(_getptr(x, f)) + f === :NavLayerCurrent && return unsafe_load(_getptr(x, f)) + f === :AutoFitQueue && return unsafe_load(_getptr(x, f)) + f === :CannotSkipItemsQueue && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailCount && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailMask && return unsafe_load(_getptr(x, f)) + f === :SortDirectionsAvailList && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2314,7 +2958,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumn}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2401,7 +3045,7 @@ struct ImGuiTable data::NTuple{592, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) +function _getptr(x::Ptr{ImGuiTable}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :Flags && return Ptr{ImGuiTableFlags}(x + 4) f === :RawData && return Ptr{Ptr{Cvoid}}(x + 8) @@ -2514,6 +3158,122 @@ function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) f === :HasScrollbarYPrev && return Ptr{Bool}(x + 583) f === :MemoryCompacted && return Ptr{Bool}(x + 584) f === :HostSkipItems && return Ptr{Bool}(x + 585) + error("Unrecognized field of type `ImGuiTable`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTable}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :Flags && return unsafe_load(_getptr(x, f)) + f === :RawData && return unsafe_load(_getptr(x, f)) + f === :TempData && return unsafe_load(_getptr(x, f)) + f === :Columns && return _getptr(x, f) + f === :DisplayOrderToIndex && return _getptr(x, f) + f === :RowCellData && return _getptr(x, f) + f === :EnabledMaskByDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :EnabledMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :VisibleMaskByIndex && return unsafe_load(_getptr(x, f)) + f === :SettingsLoadedFlags && return unsafe_load(_getptr(x, f)) + f === :SettingsOffset && return unsafe_load(_getptr(x, f)) + f === :LastFrameActive && return unsafe_load(_getptr(x, f)) + f === :ColumnsCount && return unsafe_load(_getptr(x, f)) + f === :CurrentRow && return unsafe_load(_getptr(x, f)) + f === :CurrentColumn && return unsafe_load(_getptr(x, f)) + f === :InstanceCurrent && return unsafe_load(_getptr(x, f)) + f === :InstanceInteracted && return unsafe_load(_getptr(x, f)) + f === :RowPosY1 && return unsafe_load(_getptr(x, f)) + f === :RowPosY2 && return unsafe_load(_getptr(x, f)) + f === :RowMinHeight && return unsafe_load(_getptr(x, f)) + f === :RowCellPaddingY && return unsafe_load(_getptr(x, f)) + f === :RowTextBaseline && return unsafe_load(_getptr(x, f)) + f === :RowIndentOffsetX && return unsafe_load(_getptr(x, f)) + f === :RowFlags && return unsafe_load(_getptr(x, f)) + f === :LastRowFlags && return unsafe_load(_getptr(x, f)) + f === :RowBgColorCounter && return unsafe_load(_getptr(x, f)) + f === :RowBgColor && return _getptr(x, f) + f === :BorderColorStrong && return unsafe_load(_getptr(x, f)) + f === :BorderColorLight && return unsafe_load(_getptr(x, f)) + f === :BorderX1 && return unsafe_load(_getptr(x, f)) + f === :BorderX2 && return unsafe_load(_getptr(x, f)) + f === :HostIndentX && return unsafe_load(_getptr(x, f)) + f === :MinColumnWidth && return unsafe_load(_getptr(x, f)) + f === :OuterPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellPaddingX && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX1 && return unsafe_load(_getptr(x, f)) + f === :CellSpacingX2 && return unsafe_load(_getptr(x, f)) + f === :InnerWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsGivenWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsAutoFitWidth && return unsafe_load(_getptr(x, f)) + f === :ColumnsStretchSumWeights && return unsafe_load(_getptr(x, f)) + f === :ResizedColumnNextWidth && return unsafe_load(_getptr(x, f)) + f === :ResizeLockMinContentsX2 && return unsafe_load(_getptr(x, f)) + f === :RefScale && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersHeight && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersSlope && return unsafe_load(_getptr(x, f)) + f === :OuterRect && return _getptr(x, f) + f === :InnerRect && return _getptr(x, f) + f === :WorkRect && return _getptr(x, f) + f === :InnerClipRect && return _getptr(x, f) + f === :BgClipRect && return _getptr(x, f) + f === :Bg0ClipRectForDrawCmd && return _getptr(x, f) + f === :Bg2ClipRectForDrawCmd && return _getptr(x, f) + f === :HostClipRect && return _getptr(x, f) + f === :HostBackupInnerClipRect && return _getptr(x, f) + f === :OuterWindow && return unsafe_load(_getptr(x, f)) + f === :InnerWindow && return unsafe_load(_getptr(x, f)) + f === :ColumnsNames && return _getptr(x, f) + f === :DrawSplitter && return unsafe_load(_getptr(x, f)) + f === :InstanceDataFirst && return _getptr(x, f) + f === :InstanceDataExtra && return _getptr(x, f) + f === :SortSpecsSingle && return _getptr(x, f) + f === :SortSpecsMulti && return _getptr(x, f) + f === :SortSpecs && return _getptr(x, f) + f === :SortSpecsCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledCount && return unsafe_load(_getptr(x, f)) + f === :ColumnsEnabledFixedCount && return unsafe_load(_getptr(x, f)) + f === :DeclColumnsCount && return unsafe_load(_getptr(x, f)) + f === :AngledHeadersCount && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBody && return unsafe_load(_getptr(x, f)) + f === :HoveredColumnBorder && return unsafe_load(_getptr(x, f)) + f === :HighlightColumnHeader && return unsafe_load(_getptr(x, f)) + f === :AutoFitSingleColumn && return unsafe_load(_getptr(x, f)) + f === :ResizedColumn && return unsafe_load(_getptr(x, f)) + f === :LastResizedColumn && return unsafe_load(_getptr(x, f)) + f === :HeldHeaderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumn && return unsafe_load(_getptr(x, f)) + f === :ReorderColumnDir && return unsafe_load(_getptr(x, f)) + f === :LeftMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostEnabledColumn && return unsafe_load(_getptr(x, f)) + f === :LeftMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :RightMostStretchedColumn && return unsafe_load(_getptr(x, f)) + f === :ContextPopupColumn && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeRowsCount && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsRequest && return unsafe_load(_getptr(x, f)) + f === :FreezeColumnsCount && return unsafe_load(_getptr(x, f)) + f === :RowCellDataCurrent && return unsafe_load(_getptr(x, f)) + f === :DummyDrawChannel && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelCurrent && return unsafe_load(_getptr(x, f)) + f === :Bg2DrawChannelUnfrozen && return unsafe_load(_getptr(x, f)) + f === :IsLayoutLocked && return unsafe_load(_getptr(x, f)) + f === :IsInsideRow && return unsafe_load(_getptr(x, f)) + f === :IsInitializing && return unsafe_load(_getptr(x, f)) + f === :IsSortSpecsDirty && return unsafe_load(_getptr(x, f)) + f === :IsUsingHeaders && return unsafe_load(_getptr(x, f)) + f === :IsContextPopupOpen && return unsafe_load(_getptr(x, f)) + f === :DisableDefaultContextMenu && return unsafe_load(_getptr(x, f)) + f === :IsSettingsRequestLoad && return unsafe_load(_getptr(x, f)) + f === :IsSettingsDirty && return unsafe_load(_getptr(x, f)) + f === :IsDefaultDisplayOrder && return unsafe_load(_getptr(x, f)) + f === :IsResetAllRequest && return unsafe_load(_getptr(x, f)) + f === :IsResetDisplayOrderRequest && return unsafe_load(_getptr(x, f)) + f === :IsUnfrozenRows && return unsafe_load(_getptr(x, f)) + f === :IsDefaultSizingPolicy && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdAliveBeforeTable && return unsafe_load(_getptr(x, f)) + f === :IsActiveIdInTable && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYCurr && return unsafe_load(_getptr(x, f)) + f === :HasScrollbarYPrev && return unsafe_load(_getptr(x, f)) + f === :MemoryCompacted && return unsafe_load(_getptr(x, f)) + f === :HostSkipItems && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -2541,7 +3301,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTable}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2846,12 +3606,21 @@ struct ImGuiStackLevelInfo data::NTuple{72, UInt8} end -function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) +function _getptr(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) f === :ID && return Ptr{ImGuiID}(x + 0) f === :QueryFrameCount && return Ptr{ImS8}(x + 4) f === :QuerySuccess && return Ptr{Bool}(x + 5) f === :DataType && return (Ptr{ImGuiDataType}(x + 8), 0, 8) f === :Desc && return Ptr{NTuple{57, Cchar}}(x + 12) + error("Unrecognized field of type `ImGuiStackLevelInfo`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiStackLevelInfo}, f::Symbol) + f === :ID && return unsafe_load(_getptr(x, f)) + f === :QueryFrameCount && return unsafe_load(_getptr(x, f)) + f === :QuerySuccess && return unsafe_load(_getptr(x, f)) + f === :DataType && return unsafe_load(_getptr(x, f)) + f === :Desc && return _getptr(x, f) return getfield(x, f) end @@ -2879,7 +3648,7 @@ end function Base.setproperty!(x::Ptr{ImGuiStackLevelInfo}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -2930,7 +3699,7 @@ struct ImGuiContext data::NTuple{14192, UInt8} end -function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) +function _getptr(x::Ptr{ImGuiContext}, f::Symbol) f === :Initialized && return Ptr{Bool}(x + 0) f === :FontAtlasOwnedByContext && return Ptr{Bool}(x + 1) f === :IO && return Ptr{ImGuiIO}(x + 8) @@ -3221,6 +3990,300 @@ function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) f === :WantTextInputNextFrame && return Ptr{Cint}(x + 14108) f === :TempBuffer && return Ptr{ImVector_char}(x + 14112) f === :TempKeychordName && return Ptr{NTuple{64, Cchar}}(x + 14128) + error("Unrecognized field of type `ImGuiContext`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiContext}, f::Symbol) + f === :Initialized && return unsafe_load(_getptr(x, f)) + f === :FontAtlasOwnedByContext && return unsafe_load(_getptr(x, f)) + f === :IO && return _getptr(x, f) + f === :PlatformIO && return _getptr(x, f) + f === :Style && return _getptr(x, f) + f === :ConfigFlagsCurrFrame && return unsafe_load(_getptr(x, f)) + f === :ConfigFlagsLastFrame && return unsafe_load(_getptr(x, f)) + f === :Font && return unsafe_load(_getptr(x, f)) + f === :FontSize && return unsafe_load(_getptr(x, f)) + f === :FontBaseSize && return unsafe_load(_getptr(x, f)) + f === :CurrentDpiScale && return unsafe_load(_getptr(x, f)) + f === :DrawListSharedData && return _getptr(x, f) + f === :Time && return unsafe_load(_getptr(x, f)) + f === :FrameCount && return unsafe_load(_getptr(x, f)) + f === :FrameCountEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountPlatformEnded && return unsafe_load(_getptr(x, f)) + f === :FrameCountRendered && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScope && return unsafe_load(_getptr(x, f)) + f === :WithinFrameScopeWithImplicitWindow && return unsafe_load(_getptr(x, f)) + f === :WithinEndChild && return unsafe_load(_getptr(x, f)) + f === :GcCompactAll && return unsafe_load(_getptr(x, f)) + f === :TestEngineHookItems && return unsafe_load(_getptr(x, f)) + f === :TestEngine && return unsafe_load(_getptr(x, f)) + f === :InputEventsQueue && return _getptr(x, f) + f === :InputEventsTrail && return _getptr(x, f) + f === :InputEventsNextMouseSource && return unsafe_load(_getptr(x, f)) + f === :InputEventsNextEventId && return unsafe_load(_getptr(x, f)) + f === :Windows && return _getptr(x, f) + f === :WindowsFocusOrder && return _getptr(x, f) + f === :WindowsTempSortBuffer && return _getptr(x, f) + f === :CurrentWindowStack && return _getptr(x, f) + f === :WindowsById && return _getptr(x, f) + f === :WindowsActiveCount && return unsafe_load(_getptr(x, f)) + f === :WindowsHoverPadding && return _getptr(x, f) + f === :DebugBreakInWindow && return unsafe_load(_getptr(x, f)) + f === :CurrentWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindow && return unsafe_load(_getptr(x, f)) + f === :HoveredWindowUnderMovingWindow && return unsafe_load(_getptr(x, f)) + f === :MovingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindow && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowRefMousePos && return _getptr(x, f) + f === :WheelingWindowStartFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowScrolledFrame && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowReleaseTimer && return unsafe_load(_getptr(x, f)) + f === :WheelingWindowWheelRemainder && return _getptr(x, f) + f === :WheelingAxisAvg && return _getptr(x, f) + f === :DebugHookIdInfo && return unsafe_load(_getptr(x, f)) + f === :HoveredId && return unsafe_load(_getptr(x, f)) + f === :HoveredIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoveredIdTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdNotActiveTimer && return unsafe_load(_getptr(x, f)) + f === :HoveredIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :HoveredIdDisabled && return unsafe_load(_getptr(x, f)) + f === :ItemUnclipByLog && return unsafe_load(_getptr(x, f)) + f === :ActiveId && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :ActiveIdIsJustActivated && return unsafe_load(_getptr(x, f)) + f === :ActiveIdAllowOverlap && return unsafe_load(_getptr(x, f)) + f === :ActiveIdNoClearOnFocusLoss && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenPressedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdHasBeenEditedThisFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdFromShortcut && return unsafe_load(_getptr(x, f)) + f === :ActiveIdMouseButton && return unsafe_load(_getptr(x, f)) + f === :ActiveIdClickOffset && return _getptr(x, f) + f === :ActiveIdWindow && return unsafe_load(_getptr(x, f)) + f === :ActiveIdSource && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameIsAlive && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameHasBeenEditedBefore && return unsafe_load(_getptr(x, f)) + f === :ActiveIdPreviousFrameWindow && return unsafe_load(_getptr(x, f)) + f === :LastActiveId && return unsafe_load(_getptr(x, f)) + f === :LastActiveIdTimer && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyModsChangeFromNoneTime && return unsafe_load(_getptr(x, f)) + f === :LastKeyboardKeyPressTime && return unsafe_load(_getptr(x, f)) + f === :KeysMayBeCharInput && return _getptr(x, f) + f === :KeysOwnerData && return _getptr(x, f) + f === :KeysRoutingTable && return _getptr(x, f) + f === :ActiveIdUsingNavDirMask && return unsafe_load(_getptr(x, f)) + f === :ActiveIdUsingAllKeyboardKeys && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInShortcutRouting && return unsafe_load(_getptr(x, f)) + f === :CurrentFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :CurrentItemFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLocateId && return unsafe_load(_getptr(x, f)) + f === :NextItemData && return _getptr(x, f) + f === :LastItemData && return _getptr(x, f) + f === :NextWindowData && return _getptr(x, f) + f === :DebugShowGroupRects && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorIdx && return unsafe_load(_getptr(x, f)) + f === :ColorStack && return _getptr(x, f) + f === :StyleVarStack && return _getptr(x, f) + f === :FontStack && return _getptr(x, f) + f === :FocusScopeStack && return _getptr(x, f) + f === :ItemFlagsStack && return _getptr(x, f) + f === :GroupStack && return _getptr(x, f) + f === :OpenPopupStack && return _getptr(x, f) + f === :BeginPopupStack && return _getptr(x, f) + f === :NavTreeNodeStack && return _getptr(x, f) + f === :Viewports && return _getptr(x, f) + f === :CurrentViewport && return unsafe_load(_getptr(x, f)) + f === :MouseViewport && return unsafe_load(_getptr(x, f)) + f === :MouseLastHoveredViewport && return unsafe_load(_getptr(x, f)) + f === :PlatformLastFocusedViewportId && return unsafe_load(_getptr(x, f)) + f === :FallbackMonitor && return _getptr(x, f) + f === :PlatformMonitorsFullWorkRect && return _getptr(x, f) + f === :ViewportCreatedCount && return unsafe_load(_getptr(x, f)) + f === :PlatformWindowsCreatedCount && return unsafe_load(_getptr(x, f)) + f === :ViewportFocusedStampCount && return unsafe_load(_getptr(x, f)) + f === :NavWindow && return unsafe_load(_getptr(x, f)) + f === :NavId && return unsafe_load(_getptr(x, f)) + f === :NavFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavActivateId && return unsafe_load(_getptr(x, f)) + f === :NavActivateDownId && return unsafe_load(_getptr(x, f)) + f === :NavActivatePressedId && return unsafe_load(_getptr(x, f)) + f === :NavActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavFocusRoute && return _getptr(x, f) + f === :NavHighlightActivatedId && return unsafe_load(_getptr(x, f)) + f === :NavHighlightActivatedTimer && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToFocusScopeId && return unsafe_load(_getptr(x, f)) + f === :NavJustMovedToKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateId && return unsafe_load(_getptr(x, f)) + f === :NavNextActivateFlags && return unsafe_load(_getptr(x, f)) + f === :NavInputSource && return unsafe_load(_getptr(x, f)) + f === :NavLayer && return unsafe_load(_getptr(x, f)) + f === :NavLastValidSelectionUserData && return unsafe_load(_getptr(x, f)) + f === :NavIdIsAlive && return unsafe_load(_getptr(x, f)) + f === :NavMousePosDirty && return unsafe_load(_getptr(x, f)) + f === :NavDisableHighlight && return unsafe_load(_getptr(x, f)) + f === :NavDisableMouseHover && return unsafe_load(_getptr(x, f)) + f === :NavAnyRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequest && return unsafe_load(_getptr(x, f)) + f === :NavInitRequestFromMove && return unsafe_load(_getptr(x, f)) + f === :NavInitResult && return _getptr(x, f) + f === :NavMoveSubmitted && return unsafe_load(_getptr(x, f)) + f === :NavMoveScoringItems && return unsafe_load(_getptr(x, f)) + f === :NavMoveForwardToNextFrame && return unsafe_load(_getptr(x, f)) + f === :NavMoveFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveScrollFlags && return unsafe_load(_getptr(x, f)) + f === :NavMoveKeyMods && return unsafe_load(_getptr(x, f)) + f === :NavMoveDir && return unsafe_load(_getptr(x, f)) + f === :NavMoveDirForDebug && return unsafe_load(_getptr(x, f)) + f === :NavMoveClipDir && return unsafe_load(_getptr(x, f)) + f === :NavScoringRect && return _getptr(x, f) + f === :NavScoringNoClipRect && return _getptr(x, f) + f === :NavScoringDebugCount && return unsafe_load(_getptr(x, f)) + f === :NavTabbingDir && return unsafe_load(_getptr(x, f)) + f === :NavTabbingCounter && return unsafe_load(_getptr(x, f)) + f === :NavMoveResultLocal && return _getptr(x, f) + f === :NavMoveResultLocalVisible && return _getptr(x, f) + f === :NavMoveResultOther && return _getptr(x, f) + f === :NavTabbingResultFirst && return _getptr(x, f) + f === :ConfigNavWindowingKeyNext && return unsafe_load(_getptr(x, f)) + f === :ConfigNavWindowingKeyPrev && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTarget && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTargetAnim && return unsafe_load(_getptr(x, f)) + f === :NavWindowingListWindow && return unsafe_load(_getptr(x, f)) + f === :NavWindowingTimer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingHighlightAlpha && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleLayer && return unsafe_load(_getptr(x, f)) + f === :NavWindowingToggleKey && return unsafe_load(_getptr(x, f)) + f === :NavWindowingAccumDeltaPos && return _getptr(x, f) + f === :NavWindowingAccumDeltaSize && return _getptr(x, f) + f === :DimBgRatio && return unsafe_load(_getptr(x, f)) + f === :DragDropActive && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinSource && return unsafe_load(_getptr(x, f)) + f === :DragDropWithinTarget && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropSourceFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropMouseButton && return unsafe_load(_getptr(x, f)) + f === :DragDropPayload && return _getptr(x, f) + f === :DragDropTargetRect && return _getptr(x, f) + f === :DragDropTargetClipRect && return _getptr(x, f) + f === :DragDropTargetId && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFlags && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurrRectSurface && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdCurr && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptIdPrev && return unsafe_load(_getptr(x, f)) + f === :DragDropAcceptFrameCount && return unsafe_load(_getptr(x, f)) + f === :DragDropHoldJustPressedId && return unsafe_load(_getptr(x, f)) + f === :DragDropPayloadBufHeap && return _getptr(x, f) + f === :DragDropPayloadBufLocal && return _getptr(x, f) + f === :ClipperTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :ClipperTempData && return _getptr(x, f) + f === :CurrentTable && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInTable && return unsafe_load(_getptr(x, f)) + f === :TablesTempDataStacked && return unsafe_load(_getptr(x, f)) + f === :TablesTempData && return _getptr(x, f) + f === :Tables && return _getptr(x, f) + f === :TablesLastTimeActive && return _getptr(x, f) + f === :DrawChannelsTempMergeBuffer && return _getptr(x, f) + f === :CurrentTabBar && return unsafe_load(_getptr(x, f)) + f === :TabBars && return _getptr(x, f) + f === :CurrentTabBarStack && return _getptr(x, f) + f === :ShrinkWidthBuffer && return _getptr(x, f) + f === :HoverItemDelayId && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayIdPreviousFrame && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemDelayClearTimer && return unsafe_load(_getptr(x, f)) + f === :HoverItemUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :HoverWindowUnlockedStationaryId && return unsafe_load(_getptr(x, f)) + f === :MouseCursor && return unsafe_load(_getptr(x, f)) + f === :MouseStationaryTimer && return unsafe_load(_getptr(x, f)) + f === :MouseLastValidPos && return _getptr(x, f) + f === :InputTextState && return _getptr(x, f) + f === :InputTextDeactivatedState && return _getptr(x, f) + f === :InputTextPasswordFont && return _getptr(x, f) + f === :TempInputId && return unsafe_load(_getptr(x, f)) + f === :DataTypeZeroValue && return _getptr(x, f) + f === :BeginMenuDepth && return unsafe_load(_getptr(x, f)) + f === :BeginComboDepth && return unsafe_load(_getptr(x, f)) + f === :ColorEditOptions && return unsafe_load(_getptr(x, f)) + f === :ColorEditCurrentID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedID && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedHue && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedSat && return unsafe_load(_getptr(x, f)) + f === :ColorEditSavedColor && return unsafe_load(_getptr(x, f)) + f === :ColorPickerRef && return _getptr(x, f) + f === :ComboPreviewData && return _getptr(x, f) + f === :WindowResizeBorderExpectedRect && return _getptr(x, f) + f === :WindowResizeRelativeMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarSeekMode && return unsafe_load(_getptr(x, f)) + f === :ScrollbarClickDeltaToGrabCenter && return unsafe_load(_getptr(x, f)) + f === :SliderGrabClickOffset && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :SliderCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccumDirty && return unsafe_load(_getptr(x, f)) + f === :DragCurrentAccum && return unsafe_load(_getptr(x, f)) + f === :DragSpeedDefaultRatio && return unsafe_load(_getptr(x, f)) + f === :DisabledAlphaBackup && return unsafe_load(_getptr(x, f)) + f === :DisabledStackSize && return unsafe_load(_getptr(x, f)) + f === :LockMarkEdited && return unsafe_load(_getptr(x, f)) + f === :TooltipOverrideCount && return unsafe_load(_getptr(x, f)) + f === :ClipboardHandlerData && return _getptr(x, f) + f === :MenusIdSubmittedThisFrame && return _getptr(x, f) + f === :TypingSelectState && return _getptr(x, f) + f === :PlatformImeData && return _getptr(x, f) + f === :PlatformImeDataPrev && return _getptr(x, f) + f === :PlatformImeViewport && return unsafe_load(_getptr(x, f)) + f === :DockContext && return _getptr(x, f) + f === :DockNodeWindowMenuHandler && return unsafe_load(_getptr(x, f)) + f === :SettingsLoaded && return unsafe_load(_getptr(x, f)) + f === :SettingsDirtyTimer && return unsafe_load(_getptr(x, f)) + f === :SettingsIniData && return _getptr(x, f) + f === :SettingsHandlers && return _getptr(x, f) + f === :SettingsWindows && return _getptr(x, f) + f === :SettingsTables && return _getptr(x, f) + f === :Hooks && return _getptr(x, f) + f === :HookIdNext && return unsafe_load(_getptr(x, f)) + f === :LocalizationTable && return _getptr(x, f) + f === :LogEnabled && return unsafe_load(_getptr(x, f)) + f === :LogType && return unsafe_load(_getptr(x, f)) + f === :LogFile && return unsafe_load(_getptr(x, f)) + f === :LogBuffer && return _getptr(x, f) + f === :LogNextPrefix && return unsafe_load(_getptr(x, f)) + f === :LogNextSuffix && return unsafe_load(_getptr(x, f)) + f === :LogLinePosY && return unsafe_load(_getptr(x, f)) + f === :LogLineFirstItem && return unsafe_load(_getptr(x, f)) + f === :LogDepthRef && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpand && return unsafe_load(_getptr(x, f)) + f === :LogDepthToExpandDefault && return unsafe_load(_getptr(x, f)) + f === :DebugLogFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogBuf && return _getptr(x, f) + f === :DebugLogIndex && return _getptr(x, f) + f === :DebugLogAutoDisableFlags && return unsafe_load(_getptr(x, f)) + f === :DebugLogAutoDisableFrames && return unsafe_load(_getptr(x, f)) + f === :DebugLocateFrames && return unsafe_load(_getptr(x, f)) + f === :DebugBreakInLocateId && return unsafe_load(_getptr(x, f)) + f === :DebugBreakKeyChord && return unsafe_load(_getptr(x, f)) + f === :DebugBeginReturnValueCullDepth && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerActive && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerMouseButton && return unsafe_load(_getptr(x, f)) + f === :DebugItemPickerBreakId && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorTime && return unsafe_load(_getptr(x, f)) + f === :DebugFlashStyleColorBackup && return _getptr(x, f) + f === :DebugMetricsConfig && return _getptr(x, f) + f === :DebugIDStackTool && return _getptr(x, f) + f === :DebugAllocInfo && return _getptr(x, f) + f === :DebugHoveredDockNode && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrame && return _getptr(x, f) + f === :FramerateSecPerFrameIdx && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameCount && return unsafe_load(_getptr(x, f)) + f === :FramerateSecPerFrameAccum && return unsafe_load(_getptr(x, f)) + f === :WantCaptureMouseNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantCaptureKeyboardNextFrame && return unsafe_load(_getptr(x, f)) + f === :WantTextInputNextFrame && return unsafe_load(_getptr(x, f)) + f === :TempBuffer && return _getptr(x, f) + f === :TempKeychordName && return _getptr(x, f) return getfield(x, f) end @@ -3248,7 +4311,7 @@ end function Base.setproperty!(x::Ptr{ImGuiContext}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr) @@ -3293,16 +4356,24 @@ struct ImGuiSizeCallbackData CurrentSize::ImVec2 DesiredSize::ImVec2 end -function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) +function _getptr(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) f === :UserData && return Ptr{Ptr{Cvoid}}(x + 0) f === :Pos && return Ptr{ImVec2}(x + 8) f === :CurrentSize && return Ptr{ImVec2}(x + 16) f === :DesiredSize && return Ptr{ImVec2}(x + 24) + error("Unrecognized field of type `ImGuiSizeCallbackData`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiSizeCallbackData}, f::Symbol) + f === :UserData && return unsafe_load(_getptr(x, f)) + f === :Pos && return _getptr(x, f) + f === :CurrentSize && return _getptr(x, f) + f === :DesiredSize && return _getptr(x, f) return getfield(x, f) end function Base.setproperty!(x::Ptr{ImGuiSizeCallbackData}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) end @@ -4395,7 +5466,7 @@ struct ImGuiTableColumnSettings data::NTuple{16, UInt8} end -function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) +function _getptr(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :WidthOrWeight && return Ptr{Cfloat}(x + 0) f === :UserID && return Ptr{ImGuiID}(x + 4) f === :Index && return Ptr{ImGuiTableColumnIdx}(x + 8) @@ -4404,6 +5475,18 @@ function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) f === :SortDirection && return (Ptr{ImU8}(x + 12), 16, 2) f === :IsEnabled && return (Ptr{ImU8}(x + 12), 18, 1) f === :IsStretch && return (Ptr{ImU8}(x + 12), 19, 1) + error("Unrecognized field of type `ImGuiTableColumnSettings`" * ": $(f)") +end + +function Base.getproperty(x::Ptr{ImGuiTableColumnSettings}, f::Symbol) + f === :WidthOrWeight && return unsafe_load(_getptr(x, f)) + f === :UserID && return unsafe_load(_getptr(x, f)) + f === :Index && return unsafe_load(_getptr(x, f)) + f === :DisplayOrder && return unsafe_load(_getptr(x, f)) + f === :SortOrder && return unsafe_load(_getptr(x, f)) + f === :SortDirection && return unsafe_load(_getptr(x, f)) + f === :IsEnabled && return unsafe_load(_getptr(x, f)) + f === :IsStretch && return unsafe_load(_getptr(x, f)) return getfield(x, f) end @@ -4431,7 +5514,7 @@ end function Base.setproperty!(x::Ptr{ImGuiTableColumnSettings}, f::Symbol, v) fptr = getproperty(x, f) if fptr isa Ptr - unsafe_store!(getproperty(x, f), v) + unsafe_store!(_getptr(x, f), v) else (baseptr, offset, width) = fptr baseptr32 = convert(Ptr{UInt32}, baseptr)