]> uap-core.de Git - rssreader.git/commitdiff
add ListFuncs, list_args funcs
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Tue, 24 Jun 2025 18:47:10 +0000 (20:47 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Tue, 24 Jun 2025 18:47:10 +0000 (20:47 +0200)
ui-java/src/main/java/de/unixwork/ui/ArgFuncs.java
ui-java/src/main/java/de/unixwork/ui/ListFuncs.java [new file with mode: 0644]

index 631da666fdfb8bcc986190210f8397eb742a0b1f..f56d838ccd8fe0ef0aaf8f5f8734d2cacd73acfe 100644 (file)
@@ -76,10 +76,42 @@ class ArgFuncs {
     MethodHandle toggle_args_set_groups;
     MethodHandle toggle_args_free;
 
+    MethodHandle list_args_new;
+    MethodHandle list_args_set_fill;
+    MethodHandle list_args_set_hexpand;
+    MethodHandle list_args_set_vexpand;
+    MethodHandle list_args_set_hfill;
+    MethodHandle list_args_set_vfill;
+    MethodHandle list_args_set_override_defaults;
+    MethodHandle list_args_set_colspan;
+    MethodHandle list_args_set_rowspan;
+    MethodHandle list_args_set_name;
+    MethodHandle list_args_set_style_class;
+    MethodHandle list_args_set_varname;
+    MethodHandle list_args_set_value;
+    MethodHandle list_args_set_model;
+    MethodHandle list_args_set_static_elements;
+    MethodHandle list_args_set_getvalue_func;
+    MethodHandle list_args_set_onactivate;
+    MethodHandle list_args_set_onactivatedata;
+    MethodHandle list_args_set_onselection;
+    MethodHandle list_args_set_onselectiondata;
+    MethodHandle list_args_set_ondragstart;
+    MethodHandle list_args_set_ondragstartdata;
+    MethodHandle list_args_set_ondragcomplete;
+    MethodHandle list_args_set_ondragcompletedata;
+    MethodHandle list_args_set_ondrop;
+    MethodHandle list_args_set_ondropdata;
+    MethodHandle list_args_set_multiselection;
+    MethodHandle list_args_set_contextmenu;
+    MethodHandle list_args_set_groups;
+    MethodHandle list_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);
+        FunctionDescriptor sigv_mml = FunctionDescriptor.ofVoid(ValueLayout.ADDRESS, ValueLayout.ADDRESS, ValueLayout.JAVA_LONG);
         FunctionDescriptor sigv_mb = FunctionDescriptor.ofVoid(ValueLayout.ADDRESS, ValueLayout.JAVA_BOOLEAN);
         FunctionDescriptor sigv_mi = FunctionDescriptor.ofVoid(ValueLayout.ADDRESS, ValueLayout.JAVA_INT);
 
@@ -155,6 +187,37 @@ class ArgFuncs {
         MemorySegment ui_toggle_args_set_groups_addr = lib.find("ui_toggle_args_set_groups").orElseThrow();
         MemorySegment ui_toggle_args_free_addr = lib.find("ui_toggle_args_free").orElseThrow();
 
+        MemorySegment ui_list_args_new_addr = lib.find("ui_list_args_new").orElseThrow();
+        MemorySegment ui_list_args_set_fill_addr = lib.find("ui_list_args_set_fill").orElseThrow();
+        MemorySegment ui_list_args_set_hexpand_addr = lib.find("ui_list_args_set_hexpand").orElseThrow();
+        MemorySegment ui_list_args_set_vexpand_addr = lib.find("ui_list_args_set_vexpand").orElseThrow();
+        MemorySegment ui_list_args_set_hfill_addr = lib.find("ui_list_args_set_hfill").orElseThrow();
+        MemorySegment ui_list_args_set_vfill_addr = lib.find("ui_list_args_set_vfill").orElseThrow();
+        MemorySegment ui_list_args_set_override_defaults_addr = lib.find("ui_list_args_set_override_defaults").orElseThrow();
+        MemorySegment ui_list_args_set_colspan_addr = lib.find("ui_list_args_set_colspan").orElseThrow();
+        MemorySegment ui_list_args_set_rowspan_addr = lib.find("ui_list_args_set_rowspan").orElseThrow();
+        MemorySegment ui_list_args_set_name_addr = lib.find("ui_list_args_set_name").orElseThrow();
+        MemorySegment ui_list_args_set_style_class_addr = lib.find("ui_list_args_set_style_class").orElseThrow();
+        MemorySegment ui_list_args_set_varname_addr = lib.find("ui_list_args_set_varname").orElseThrow();
+        MemorySegment ui_list_args_set_value_addr = lib.find("ui_list_args_set_value").orElseThrow();
+        MemorySegment ui_list_args_set_model_addr = lib.find("ui_list_args_set_model").orElseThrow();
+        MemorySegment ui_list_args_set_static_elements_addr = lib.find("ui_list_args_set_static_elements").orElseThrow();
+        MemorySegment ui_list_args_set_getvalue_func_addr = lib.find("ui_list_args_set_getvalue_func").orElseThrow();
+        MemorySegment ui_list_args_set_onactivate_addr = lib.find("ui_list_args_set_onactivate").orElseThrow();
+        MemorySegment ui_list_args_set_onactivatedata_addr = lib.find("ui_list_args_set_onactivatedata").orElseThrow();
+        MemorySegment ui_list_args_set_onselection_addr = lib.find("ui_list_args_set_onselection").orElseThrow();
+        MemorySegment ui_list_args_set_onselectiondata_addr = lib.find("ui_list_args_set_onselectiondata").orElseThrow();
+        MemorySegment ui_list_args_set_ondragstart_addr = lib.find("ui_list_args_set_ondragstart").orElseThrow();
+        MemorySegment ui_list_args_set_ondragstartdata_addr = lib.find("ui_list_args_set_ondragstartdata").orElseThrow();
+        MemorySegment ui_list_args_set_ondragcomplete_addr = lib.find("ui_list_args_set_ondragcomplete").orElseThrow();
+        MemorySegment ui_list_args_set_ondragcompletedata_addr = lib.find("ui_list_args_set_ondragcompletedata").orElseThrow();
+        MemorySegment ui_list_args_set_ondrop_addr = lib.find("ui_list_args_set_ondrop").orElseThrow();
+        MemorySegment ui_list_args_set_ondropdata_addr = lib.find("ui_list_args_set_ondropdata").orElseThrow();
+        MemorySegment ui_list_args_set_multiselection_addr = lib.find("ui_list_args_set_multiselection").orElseThrow();
+        MemorySegment ui_list_args_set_contextmenu_addr = lib.find("ui_list_args_set_contextmenu").orElseThrow();
+        MemorySegment ui_list_args_set_groups_addr = lib.find("ui_list_args_set_groups").orElseThrow();
+        MemorySegment ui_list_args_free_addr = lib.find("ui_list_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);
@@ -224,6 +287,37 @@ class ArgFuncs {
         toggle_args_set_enablegroup = linker.downcallHandle(ui_toggle_args_set_enablegroup, sigv_mi);
         toggle_args_set_groups = linker.downcallHandle(ui_toggle_args_set_groups_addr, sigv_mm);
         toggle_args_free = linker.downcallHandle(ui_toggle_args_free_addr, sigv_m);
+
+        list_args_new = linker.downcallHandle(ui_list_args_new_addr, sigm);
+        list_args_set_fill = linker.downcallHandle(ui_list_args_set_fill_addr, sigv_mb);
+        list_args_set_hexpand = linker.downcallHandle(ui_list_args_set_hexpand_addr, sigv_mb);
+        list_args_set_vexpand = linker.downcallHandle(ui_list_args_set_vexpand_addr, sigv_mb);
+        list_args_set_hfill = linker.downcallHandle(ui_list_args_set_hfill_addr, sigv_mb);
+        list_args_set_vfill = linker.downcallHandle(ui_list_args_set_vfill_addr, sigv_mb);
+        list_args_set_override_defaults = linker.downcallHandle(ui_list_args_set_override_defaults_addr, sigv_mb);
+        list_args_set_colspan = linker.downcallHandle(ui_list_args_set_colspan_addr, sigv_mi);
+        list_args_set_rowspan = linker.downcallHandle(ui_list_args_set_rowspan_addr, sigv_mi);
+        list_args_set_name = linker.downcallHandle(ui_list_args_set_name_addr, sigv_mm);
+        list_args_set_style_class = linker.downcallHandle(ui_list_args_set_style_class_addr, sigv_mm);
+        list_args_set_varname = linker.downcallHandle(ui_list_args_set_varname_addr, sigv_mm);
+        list_args_set_value = linker.downcallHandle(ui_list_args_set_value_addr, sigv_mm);
+        list_args_set_model = linker.downcallHandle(ui_list_args_set_model_addr, sigv_mm);
+        list_args_set_static_elements = linker.downcallHandle(ui_list_args_set_static_elements_addr, sigv_mml);
+        list_args_set_getvalue_func = linker.downcallHandle(ui_list_args_set_getvalue_func_addr, sigv_mm);
+        list_args_set_onactivate = linker.downcallHandle(ui_list_args_set_onactivate_addr, sigv_mm);
+        list_args_set_onactivatedata = linker.downcallHandle(ui_list_args_set_onactivatedata_addr, sigv_mm);
+        list_args_set_onselection = linker.downcallHandle(ui_list_args_set_onselection_addr, sigv_mm);
+        list_args_set_onselectiondata = linker.downcallHandle(ui_list_args_set_onselectiondata_addr, sigv_mm);
+        list_args_set_ondragstart = linker.downcallHandle(ui_list_args_set_ondragstart_addr, sigv_mm);
+        list_args_set_ondragstartdata = linker.downcallHandle(ui_list_args_set_ondragstartdata_addr, sigv_mm);
+        list_args_set_ondragcomplete = linker.downcallHandle(ui_list_args_set_ondragcomplete_addr, sigv_mm);
+        list_args_set_ondragcompletedata = linker.downcallHandle(ui_list_args_set_ondragcompletedata_addr, sigv_mm);
+        list_args_set_ondrop = linker.downcallHandle(ui_list_args_set_ondrop_addr, sigv_mm);
+        list_args_set_ondropdata = linker.downcallHandle(ui_list_args_set_ondropdata_addr, sigv_mm);
+        list_args_set_multiselection = linker.downcallHandle(ui_list_args_set_multiselection_addr, sigv_mb);
+        list_args_set_contextmenu = linker.downcallHandle(ui_list_args_set_contextmenu_addr, sigv_mm);
+        list_args_set_groups = linker.downcallHandle(ui_list_args_set_groups_addr, sigv_mm);
+        list_args_free = linker.downcallHandle(ui_list_args_free_addr, sigv_m);
     }
 
     static ArgFuncs getInstance() {
diff --git a/ui-java/src/main/java/de/unixwork/ui/ListFuncs.java b/ui-java/src/main/java/de/unixwork/ui/ListFuncs.java
new file mode 100644 (file)
index 0000000..a094ee7
--- /dev/null
@@ -0,0 +1,36 @@
+package de.unixwork.ui;
+
+import java.lang.foreign.*;
+import java.lang.invoke.MethodHandle;
+
+public class ListFuncs {
+    static ListFuncs instance;
+
+    public MethodHandle listview_create;
+    public MethodHandle table_create;
+    public MethodHandle combobox_create;
+    public MethodHandle sourcelist_create;
+
+    private ListFuncs(Linker linker, SymbolLookup lib) {
+        // void* func(void*, void*)
+        FunctionDescriptor sigm_mm = FunctionDescriptor.of(ValueLayout.ADDRESS, ValueLayout.ADDRESS, ValueLayout.ADDRESS);
+
+        MemorySegment ui_listview_create_addr = lib.find("ui_listview_create").orElseThrow();
+        MemorySegment ui_table_create_addr = lib.find("ui_table_create").orElseThrow();
+        MemorySegment ui_combobox_create_addr = lib.find("ui_combobox_create").orElseThrow();
+        MemorySegment ui_sourcelist_create_addr = lib.find("ui_sourcelist_create").orElseThrow();
+
+        listview_create = linker.downcallHandle(ui_listview_create_addr, sigm_mm);
+        table_create = linker.downcallHandle(ui_table_create_addr, sigm_mm);
+        combobox_create = linker.downcallHandle(ui_combobox_create_addr, sigm_mm);
+        sourcelist_create = linker.downcallHandle(ui_sourcelist_create_addr, sigm_mm);
+    }
+
+    static ListFuncs getInstance() {
+        if (instance == null) {
+            Toolkit toolkit = Toolkit.getInstance();
+            instance = new ListFuncs(toolkit.getLinker(), toolkit.getSymbolLookup());
+        }
+        return instance;
+    }
+}