add userdata parameter to list initializer

Sat, 21 Jun 2025 14:17:20 +0200

author
Olaf Winermann <olaf.wintermann@gmail.com>
date
Sat, 21 Jun 2025 14:17:20 +0200
changeset 631
5d745e140ee7
parent 630
998a4c096b4b
child 632
8cce45a85942

add userdata parameter to list initializer

ui/common/types.c file | annotate | diff | comparison | revisions
ui/common/types.h file | annotate | diff | comparison | revisions
ui/ui/toolkit.h file | annotate | diff | comparison | revisions
--- a/ui/common/types.c	Fri Jun 20 12:01:44 2025 +0200
+++ b/ui/common/types.c	Sat Jun 21 14:17:20 2025 +0200
@@ -39,7 +39,7 @@
 #include "../ui/image.h"
 
 static ui_list_init_func default_list_init;
-
+static void *default_list_init_userdata;
 
 UiObserver* ui_observer_new(ui_callback f, void *data) {
     UiObserver *observer = malloc(sizeof(UiObserver));
@@ -96,7 +96,7 @@
 
 /* --------------------------- UiList --------------------------- */
 
-void uic_ucx_list_init(UiContext *ctx, UiList *list) {
+void uic_ucx_list_init(UiContext *ctx, UiList *list, void *unused) {
     list->data = cxArrayListCreate(ctx->mp->allocator, NULL, CX_STORE_POINTERS, 32);
     list->first = ui_list_first;
     list->next = ui_list_next;
@@ -105,13 +105,13 @@
 }
 
 UiList* ui_list_new(UiContext *ctx, const char *name) {
-    return ui_list_new2(ctx, name, default_list_init ? default_list_init : uic_ucx_list_init);
+    return ui_list_new2(ctx, name, default_list_init ? default_list_init : uic_ucx_list_init, default_list_init_userdata);
 }
 
-UiList* ui_list_new2(UiContext *ctx, const char *name, ui_list_init_func listinit) {
+UiList* ui_list_new2(UiContext *ctx, const char *name, ui_list_init_func listinit, void *userdata) {
     UiList *list = cxMalloc(ctx->mp->allocator, sizeof(UiList));
     memset(list, 0, sizeof(UiList));
-    listinit(ctx, list);
+    listinit(ctx, list, userdata);
     
     if(name) {
         uic_reg_var(ctx, name, UI_VAR_LIST, list);
@@ -667,8 +667,9 @@
 
 /* ---------------- List initializers and wrapper functions ---------------- */
 
-void ui_global_list_initializer(ui_list_init_func func) {
+void ui_global_list_initializer(ui_list_init_func func, void *userdata) {
     default_list_init = func;
+    default_list_init_userdata = userdata;
 }
 
 void ui_list_class_set_first(UiList *list, void*(*first)(UiList *list)) {
--- a/ui/common/types.h	Fri Jun 20 12:01:44 2025 +0200
+++ b/ui/common/types.h	Sat Jun 21 14:17:20 2025 +0200
@@ -35,7 +35,7 @@
 extern "C" {
 #endif
     
-void uic_ucx_list_init(UiContext *ctx, UiList *list);
+void uic_ucx_list_init(UiContext *ctx, UiList *list, void *unused);
     
 void uic_int_copy(UiInteger *from, UiInteger *to);
 void uic_double_copy(UiDouble *from, UiDouble *to);
--- a/ui/ui/toolkit.h	Fri Jun 20 12:01:44 2025 +0200
+++ b/ui/ui/toolkit.h	Sat Jun 21 14:17:20 2025 +0200
@@ -405,7 +405,7 @@
     UiObserver *observers;
 };
     
-typedef void (*ui_list_init_func)(UiContext *ctx, UiList *list);
+typedef void (*ui_list_init_func)(UiContext *ctx, UiList *list, void *userdata);
 
 /*
  * abstract list
@@ -576,7 +576,7 @@
 
 
 UIEXPORT UiList* ui_list_new(UiContext *ctx, const char *name);
-UIEXPORT UiList* ui_list_new2(UiContext *ctx, const char *name, ui_list_init_func init);
+UIEXPORT UiList* ui_list_new2(UiContext *ctx, const char *name, ui_list_init_func init, void *userdata);
 UIEXPORT void ui_list_free(UiList *list);
 UIEXPORT void* ui_list_first(UiList *list);
 UIEXPORT void* ui_list_next(UiList *list);
@@ -627,7 +627,7 @@
 UIEXPORT int ui_get_setop(void);
 
     
-UIEXPORT void ui_global_list_initializer(ui_list_init_func func);
+UIEXPORT void ui_global_list_initializer(ui_list_init_func func, void *userdata);
 UIEXPORT void ui_list_class_set_first(UiList *list, void*(*first)(UiList *list));
 UIEXPORT void ui_list_class_set_next(UiList *list, void*(*next)(UiList *list));
 UIEXPORT void ui_list_class_set_get(UiList *list, void*(*get)(UiList *list, int i));

mercurial