--- /dev/null
+package de.unixwork.ui;
+
+import java.lang.foreign.*;
+import java.lang.invoke.MethodHandle;
+
+class ArgFuncs {
+ static ArgFuncs instance;
+
+ MethodHandle menuitem_args_new;
+ MethodHandle menuitem_args_set_label;
+ MethodHandle menuitem_args_set_stockid;
+ MethodHandle menuitem_args_set_icon;
+ MethodHandle menuitem_args_free;
+
+ private ArgFuncs(Linker linker, SymbolLookup lib) {
+ FunctionDescriptor sigm = FunctionDescriptor.of(ValueLayout.ADDRESS);
+ FunctionDescriptor sigv_m = FunctionDescriptor.ofVoid(ValueLayout.ADDRESS);
+ FunctionDescriptor sigv_mm = FunctionDescriptor.ofVoid(ValueLayout.ADDRESS, ValueLayout.ADDRESS);
+
+ MemorySegment ui_menuitem_args_new_addr = lib.find("ui_menuitem_args_new").orElseThrow();
+ MemorySegment ui_menuitem_args_set_label_addr = lib.find("ui_menuitem_args_set_label").orElseThrow();
+ MemorySegment ui_menuitem_args_set_stockid_addr = lib.find("ui_menuitem_args_set_stockid").orElseThrow();
+ MemorySegment ui_menuitem_args_set_icon_addr = lib.find("ui_menuitem_args_set_icon").orElseThrow();
+ MemorySegment ui_menuitem_args_set_onclick_addr = lib.find("ui_menuitem_args_set_onclick").orElseThrow();
+ MemorySegment ui_menuitem_args_set_onclickdata_addr = lib.find("ui_menuitem_args_set_onclickdata").orElseThrow();
+ MemorySegment ui_menuitem_args_free_addr = lib.find("ui_menuitem_args_free").orElseThrow();
+
+ menuitem_args_new = linker.downcallHandle(ui_menuitem_args_new_addr, sigm);
+ menuitem_args_set_label = linker.downcallHandle(ui_menuitem_args_set_label_addr, sigv_mm);
+ menuitem_args_set_stockid = linker.downcallHandle(ui_menuitem_args_set_stockid_addr, sigv_mm);
+ menuitem_args_set_icon = linker.downcallHandle(ui_menuitem_args_set_icon_addr, sigv_mm);
+ menuitem_args_free = linker.downcallHandle(ui_menuitem_args_free_addr, sigv_m);
+ }
+
+ static ArgFuncs getInstance() {
+ if (instance == null) {
+ Toolkit toolkit = Toolkit.getInstance();
+ instance = new ArgFuncs(toolkit.getLinker(), toolkit.getSymbolLookup());
+ }
+ return instance;
+ }
+}
mainFunc = linker.downcallHandle(ui_main_addr, sigv_v);
}
- private static Toolkit getInstance() {
+ static Toolkit getInstance() {
if(Toolkit.instance == null) {
Toolkit.init("app1");
}
return Toolkit.instance;
}
+
+ SymbolLookup getSymbolLookup() {
+ return lib;
+ }
+
+ Linker getLinker() {
+ return linker;
+ }
public static void init(String appName) {
if(Toolkit.instance != null) {