Sat, 21 Jun 2025 14:17:20 +0200
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));