| 98 } |
98 } |
| 99 |
99 |
| 100 /* --------------------------- UiList --------------------------- */ |
100 /* --------------------------- UiList --------------------------- */ |
| 101 |
101 |
| 102 void uic_ucx_list_init(UiContext *ctx, UiList *list, void *unused) { |
102 void uic_ucx_list_init(UiContext *ctx, UiList *list, void *unused) { |
| |
103 list->destroy = uic_ucx_list_destroy; |
| 103 list->data = cxArrayListCreate(ctx->mp->allocator, CX_STORE_POINTERS, 32); |
104 list->data = cxArrayListCreate(ctx->mp->allocator, CX_STORE_POINTERS, 32); |
| 104 list->first = ui_list_first; |
105 list->first = ui_list_first; |
| 105 list->next = ui_list_next; |
106 list->next = ui_list_next; |
| 106 list->get = ui_list_get; |
107 list->get = ui_list_get; |
| 107 list->count = ui_list_count; |
108 list->count = ui_list_count; |
| 127 |
128 |
| 128 return list; |
129 return list; |
| 129 } |
130 } |
| 130 |
131 |
| 131 void ui_list_free(UiContext *ctx, UiList *list) { |
132 void ui_list_free(UiContext *ctx, UiList *list) { |
| 132 if(!default_list_destroy) { |
133 if(list->destroy) { |
| |
134 list->destroy(ctx, list, NULL); |
| |
135 } else if(!default_list_destroy) { |
| 133 uic_ucx_list_destroy(ctx, list, NULL); |
136 uic_ucx_list_destroy(ctx, list, NULL); |
| 134 } else { |
137 } else { |
| 135 default_list_destroy(ctx, list, default_list_destroy_userdata); |
138 default_list_destroy(ctx, list, default_list_destroy_userdata); |
| 136 } |
139 } |
| 137 |
140 |
| 933 void ui_global_list_destructor(ui_list_destroy_func func, void *userdata) { |
936 void ui_global_list_destructor(ui_list_destroy_func func, void *userdata) { |
| 934 default_list_destroy = func; |
937 default_list_destroy = func; |
| 935 default_list_destroy_userdata = userdata; |
938 default_list_destroy_userdata = userdata; |
| 936 } |
939 } |
| 937 |
940 |
| |
941 UIEXPORT void ui_list_class_set_destructor(UiList *list, ui_list_destroy_func destroy) { |
| |
942 list->destroy = destroy; |
| |
943 } |
| |
944 |
| 938 void ui_list_class_set_first(UiList *list, void*(*first)(UiList *list)) { |
945 void ui_list_class_set_first(UiList *list, void*(*first)(UiList *list)) { |
| 939 list->first = first; |
946 list->first = first; |
| 940 } |
947 } |
| 941 |
948 |
| 942 void ui_list_class_set_next(UiList *list, void*(*next)(UiList *list)) { |
949 void ui_list_class_set_next(UiList *list, void*(*next)(UiList *list)) { |