ui/common/types.c

changeset 1088
09459f07ab11
parent 1068
1c79dbd248f4
equal deleted inserted replaced
1087:d2ac2ac4eee4 1088:09459f07ab11
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)) {

mercurial