From 92682c2191ca6bea09c6fba03fb888e943feb006 Mon Sep 17 00:00:00 2001 From: Rune Date: Mon, 15 Jun 2026 16:35:42 +0200 Subject: [PATCH] fix stack types --- BeefProj.toml | 60 ++++++++++++++++++++++++++++++++++++++++++++ BeefSpace.toml | 1 + Setup/src/Program.bf | 13 ++++++---- src/MicroUI.bf | 12 ++++----- 4 files changed, 75 insertions(+), 11 deletions(-) diff --git a/BeefProj.toml b/BeefProj.toml index 3b77d84..010305f 100644 --- a/BeefProj.toml +++ b/BeefProj.toml @@ -8,3 +8,63 @@ StartupObject = "MicroUI.Program" [Dependencies] corlib = "*" "CxxBuildTool.git" = {Git = "https://git.unicon-gmbh.de/Rune/CxxBuildTool.git"} + +[Configs.Debug.Win32] +LibPaths = ["$(BuildDir)/microui.lib"] + +[Configs.Debug.Win64] +LibPaths = ["$(BuildDir)/microui.lib"] + +[Configs.Debug.Linux64] +LibPaths = ["$(BuildDir)/microui.a"] + +[Configs.Debug.Linux32] +LibPaths = ["$(BuildDir)/microui.a"] + +[Configs.Debug.macOS] +LibPaths = ["$(BuildDir)/microui.a"] + +[Configs.Release.Win32] +LibPaths = ["$(BuildDir)/microui.lib"] + +[Configs.Release.Win64] +LibPaths = ["$(BuildDir)/microui.lib"] + +[Configs.Release.Linux32] +LibPaths = ["$(BuildDir)/microui.a"] + +[Configs.Release.Linux64] +LibPaths = ["$(BuildDir)/microui.a"] + +[Configs.Release.macOS] +LibPaths = ["$(BuildDir)/microui.a"] + +[Configs.Paranoid.Win32] +LibPaths = ["$(BuildDir)/microui.lib"] + +[Configs.Paranoid.Win64] +LibPaths = ["$(BuildDir)/microui.lib"] + +[Configs.Paranoid.Linux32] +LibPaths = ["$(BuildDir)/microui.a"] + +[Configs.Paranoid.Linux64] +LibPaths = ["$(BuildDir)/microui.a"] + +[Configs.Paranoid.macOS] +LibPaths = ["$(BuildDir)/microui.a"] + +[Configs.Test.Win32] +LibPaths = ["$(BuildDir)/microui.lib"] + +[Configs.Test.Win64] +LibPaths = ["$(BuildDir)/microui.lib"] + +[Configs.Test.Linux32] +LibPaths = ["$(BuildDir)/microui.a"] + +[Configs.Test.Linux64] +LibPaths = ["$(BuildDir)/microui.a"] + +[Configs.Test.macOS] +LibPaths = ["$(BuildDir)/microui.a"] diff --git a/BeefSpace.toml b/BeefSpace.toml index 12d81f2..aa62bbf 100644 --- a/BeefSpace.toml +++ b/BeefSpace.toml @@ -1,4 +1,5 @@ FileVersion = 1 +ExtraPlatforms = ["Linux32", "Linux64", "macOS"] [Workspace] StartupProject = "MicroUI" diff --git a/Setup/src/Program.bf b/Setup/src/Program.bf index b24e39b..0de000e 100644 --- a/Setup/src/Program.bf +++ b/Setup/src/Program.bf @@ -86,11 +86,14 @@ class MicroUIGenerator : Cpp2BeefGenerator, this(Span args) BeginCursor(cursor); str.Append("[CRepr] "); AccessSpecifier(cursor); - str.Append("struct { public c_int idx; public c_char[MU_"); - for (let char in spelling) - if (char.IsLetter) - str.Append(char.ToUpper); - str.Append("_SIZE] items; } ", spelling); + str.Append("struct { "); + Clang.Type_VisitFields(Clang.GetCursorType(cursor), (cursor, client_data) => + { + Self self = (.)Internal.UnsafeCastToObject(client_data); + self.WriteCursor(cursor); + return .Continue; + }, Internal.UnsafeCastToPtr(this)); + str.Append(" } ", spelling); str.Append(';'); return; } diff --git a/src/MicroUI.bf b/src/MicroUI.bf index 626689a..e6d2be1 100644 --- a/src/MicroUI.bf +++ b/src/MicroUI.bf @@ -202,12 +202,12 @@ public typealias mu_Font = void*; public c_char[127] number_edit_buf; public mu_Id number_edit; /* stacks */ - [CRepr] public struct { public c_int idx; public c_char[MU_COMMANDLIST_SIZE] items; } command_list; - [CRepr] public struct { public c_int idx; public c_char[MU_ROOTLIST_SIZE] items; } root_list; - [CRepr] public struct { public c_int idx; public c_char[MU_CONTAINERSTACK_SIZE] items; } container_stack; - [CRepr] public struct { public c_int idx; public c_char[MU_CLIPSTACK_SIZE] items; } clip_stack; - [CRepr] public struct { public c_int idx; public c_char[MU_IDSTACK_SIZE] items; } id_stack; - [CRepr] public struct { public c_int idx; public c_char[MU_LAYOUTSTACK_SIZE] items; } layout_stack; + [CRepr] public struct { public c_int idx; public c_char[262144] items; } command_list; + [CRepr] public struct { public c_int idx; public mu_Container*[32] items; } root_list; + [CRepr] public struct { public c_int idx; public mu_Container*[32] items; } container_stack; + [CRepr] public struct { public c_int idx; public mu_Rect[32] items; } clip_stack; + [CRepr] public struct { public c_int idx; public mu_Id[32] items; } id_stack; + [CRepr] public struct { public c_int idx; public mu_Layout[16] items; } layout_stack; /* retained state pools */ public mu_PoolItem[48] container_pool; public mu_Container[48] containers;