| 108 list->count = ui_list_count; |
108 list->count = ui_list_count; |
| 109 } |
109 } |
| 110 |
110 |
| 111 void uic_ucx_list_destroy(UiContext *ctx, UiList *list, void *unused) { |
111 void uic_ucx_list_destroy(UiContext *ctx, UiList *list, void *unused) { |
| 112 cxListFree(list->data); |
112 cxListFree(list->data); |
| 113 ui_free(ctx, list); |
|
| 114 } |
113 } |
| 115 |
114 |
| 116 UiList* ui_list_new(UiContext *ctx, const char *name) { |
115 UiList* ui_list_new(UiContext *ctx, const char *name) { |
| 117 return ui_list_new2(ctx, name, default_list_init ? default_list_init : uic_ucx_list_init, default_list_init_userdata); |
116 return ui_list_new2(ctx, name, default_list_init ? default_list_init : uic_ucx_list_init, default_list_init_userdata); |
| 118 } |
117 } |
| 119 |
118 |
| 120 UiList* ui_list_new2(UiContext *ctx, const char *name, ui_list_init_func listinit, void *userdata) { |
119 UiList* ui_list_new2(UiContext *ctx, const char *name, ui_list_init_func listinit, void *userdata) { |
| 121 UiList *list = cxMalloc(ctx->mp->allocator, sizeof(UiList)); |
120 UiList *list = ui_malloc(ctx, sizeof(UiList)); |
| 122 memset(list, 0, sizeof(UiList)); |
121 memset(list, 0, sizeof(UiList)); |
| 123 listinit(ctx, list, userdata); |
122 listinit(ctx, list, userdata); |
| 124 |
123 |
| 125 if(name) { |
124 if(name && ctx) { |
| 126 uic_reg_var(ctx, name, UI_VAR_LIST, list); |
125 uic_reg_var(ctx, name, UI_VAR_LIST, list); |
| 127 } |
126 } |
| 128 |
127 |
| 129 return list; |
128 return list; |
| 130 } |
129 } |
| 135 } else if(!default_list_destroy) { |
134 } else if(!default_list_destroy) { |
| 136 uic_ucx_list_destroy(ctx, list, NULL); |
135 uic_ucx_list_destroy(ctx, list, NULL); |
| 137 } else { |
136 } else { |
| 138 default_list_destroy(ctx, list, default_list_destroy_userdata); |
137 default_list_destroy(ctx, list, default_list_destroy_userdata); |
| 139 } |
138 } |
| 140 |
139 ui_free(ctx, list); |
| 141 } |
140 } |
| 142 |
141 |
| 143 void* ui_list_first(UiList *list) { |
142 void* ui_list_first(UiList *list) { |
| 144 list->iter = (void*)(intptr_t)0; |
143 list->iter = (void*)(intptr_t)0; |
| 145 return cxListAt(list->data, 0); |
144 return cxListAt(list->data, 0); |