--- /dev/null
+package de.unixwork.ui;
+
+import java.lang.foreign.*;
+import java.lang.invoke.MethodHandle;
+
+public class ContainerFuncs {
+ static ContainerFuncs instance;
+
+ public MethodHandle vbox_create;
+ public MethodHandle hbox_create;
+ public MethodHandle grid_create;
+ public MethodHandle frame_create;
+ public MethodHandle expander_create;
+ public MethodHandle scrolledwindow_create;
+ public MethodHandle tabview_create;
+ public MethodHandle headerbar_create;
+ public MethodHandle sidebar_create;
+ public MethodHandle itemlist_create;
+ public MethodHandle hsplitpane_create;
+ public MethodHandle vsplitpane_create;
+
+ public MethodHandle container_begin_close;
+ public MethodHandle container_finish;
+
+ private ContainerFuncs(Linker linker, SymbolLookup lib) {
+ FunctionDescriptor sigm_mm = FunctionDescriptor.of(ValueLayout.ADDRESS, ValueLayout.ADDRESS, ValueLayout.ADDRESS);
+ FunctionDescriptor sigm_m = FunctionDescriptor.of(ValueLayout.ADDRESS, ValueLayout.ADDRESS);
+ FunctionDescriptor sigi_m = FunctionDescriptor.of(ValueLayout.JAVA_INT, ValueLayout.ADDRESS, ValueLayout.ADDRESS);
+
+ MemorySegment ui_vbox_create_addr = lib.find("ui_vbox_create").orElseThrow();
+ MemorySegment ui_hbox_create_addr = lib.find("ui_hbox_create").orElseThrow();
+ MemorySegment ui_grid_create_addr = lib.find("ui_grid_create").orElseThrow();
+ MemorySegment ui_frame_create_addr = lib.find("ui_frame_create").orElseThrow();
+ MemorySegment ui_expander_create_addr = lib.find("ui_expander_create").orElseThrow();
+ MemorySegment ui_scrolledwindow_create_addr = lib.find("ui_scrolledwindow_create").orElseThrow();
+ MemorySegment ui_tabview_create_addr = lib.find("ui_tabview_create").orElseThrow();
+ MemorySegment ui_headerbar_create_addr = lib.find("ui_headerbar_create").orElseThrow();
+ MemorySegment ui_sidebar_create_addr = lib.find("ui_sidebar_create").orElseThrow();
+ MemorySegment ui_itemlist_create_addr = lib.find("ui_itemlist_create").orElseThrow();
+ MemorySegment ui_hsplitpane_create_addr = lib.find("ui_hslpitpane_create").orElseThrow();
+ MemorySegment ui_vsplitpane_create_addr = lib.find("ui_vsplitpane_create").orElseThrow();
+
+ MemorySegment ui_container_begin_close = lib.find("ui_container_begin_close").orElseThrow();
+ MemorySegment ui_container_finish = lib.find("ui_container_finish").orElseThrow();
+
+ vbox_create = linker.downcallHandle(ui_vbox_create_addr, sigm_mm);
+ hbox_create = linker.downcallHandle(ui_hbox_create_addr, sigm_mm);
+ grid_create = linker.downcallHandle(ui_grid_create_addr, sigm_mm);
+ frame_create = linker.downcallHandle(ui_frame_create_addr, sigm_mm);
+ expander_create = linker.downcallHandle(ui_expander_create_addr, sigm_mm);
+ scrolledwindow_create = linker.downcallHandle(ui_scrolledwindow_create_addr, sigm_mm);
+ tabview_create = linker.downcallHandle(ui_tabview_create_addr, sigm_mm);
+ headerbar_create = linker.downcallHandle(ui_headerbar_create_addr, sigm_mm);
+ sidebar_create = linker.downcallHandle(ui_sidebar_create_addr, sigm_mm);
+ itemlist_create = linker.downcallHandle(ui_itemlist_create_addr, sigm_mm);
+ hsplitpane_create = linker.downcallHandle(ui_hsplitpane_create_addr, sigm_mm);
+ vsplitpane_create = linker.downcallHandle(ui_vsplitpane_create_addr, sigm_mm);
+
+ container_begin_close = linker.downcallHandle(ui_container_begin_close, sigm_m);
+ container_finish = linker.downcallHandle(ui_container_finish, sigi_m);
+ }
+
+ static ContainerFuncs getInstance() {
+ if (instance == null) {
+ Toolkit toolkit = Toolkit.getInstance();
+ instance = new ContainerFuncs(toolkit.getLinker(), toolkit.getSymbolLookup());
+ }
+ return instance;
+ }
+}