Lines Matching refs:l

23 #define FOR_ALL_WATCHERS(l, lw) \  argument
24 for ((lw) = (l)->lv_watch; (lw) != NULL; (lw) = (lw)->lw_next)
26 static void list_free_item(list_T *l, listitem_T *item);
32 list_add_watch(list_T *l, listwatch_T *lw) in list_add_watch() argument
34 lw->lw_next = l->lv_watch; in list_add_watch()
35 l->lv_watch = lw; in list_add_watch()
43 list_rem_watch(list_T *l, listwatch_T *lwrem) in list_rem_watch() argument
47 lwp = &l->lv_watch; in list_rem_watch()
48 FOR_ALL_WATCHERS(l, lw) in list_rem_watch()
64 list_fix_watch(list_T *l, listitem_T *item) in list_fix_watch() argument
68 FOR_ALL_WATCHERS(l, lw) in list_fix_watch()
74 list_init(list_T *l) in list_init() argument
78 first_list->lv_used_prev = l; in list_init()
79 l->lv_used_prev = NULL; in list_init()
80 l->lv_used_next = first_list; in list_init()
81 first_list = l; in list_init()
91 list_T *l; in list_alloc() local
93 l = ALLOC_CLEAR_ONE(list_T); in list_alloc()
94 if (l != NULL) in list_alloc()
95 list_init(l); in list_alloc()
96 return l; in list_alloc()
119 list_T *l; in list_alloc_with_items() local
121 l = (list_T *)alloc_clear(sizeof(list_T) + count * sizeof(listitem_T)); in list_alloc_with_items()
122 if (l != NULL) in list_alloc_with_items()
124 list_init(l); in list_alloc_with_items()
128 listitem_T *li = (listitem_T *)(l + 1); in list_alloc_with_items()
131 l->lv_len = count; in list_alloc_with_items()
132 l->lv_with_items = count; in list_alloc_with_items()
133 l->lv_first = li; in list_alloc_with_items()
134 l->lv_u.mat.lv_last = li + count - 1; in list_alloc_with_items()
149 return l; in list_alloc_with_items()
158 list_set_item(list_T *l, int idx, typval_T *tv) in list_set_item() argument
160 listitem_T *li = (listitem_T *)(l + 1) + idx; in list_set_item()
172 list_T *l = list_alloc(); in rettv_list_alloc() local
174 if (l == NULL) in rettv_list_alloc()
178 rettv_list_set(rettv, l); in rettv_list_alloc()
200 rettv_list_set(typval_T *rettv, list_T *l) in rettv_list_set() argument
203 rettv->vval.v_list = l; in rettv_list_set()
204 if (l != NULL) in rettv_list_set()
205 ++l->lv_refcount; in rettv_list_set()
213 list_unref(list_T *l) in list_unref() argument
215 if (l != NULL && --l->lv_refcount <= 0) in list_unref()
216 list_free(l); in list_unref()
224 list_free_contents(list_T *l) in list_free_contents() argument
228 if (l->lv_first != &range_list_item) in list_free_contents()
229 for (item = l->lv_first; item != NULL; item = l->lv_first) in list_free_contents()
232 l->lv_first = item->li_next; in list_free_contents()
234 list_free_item(l, item); in list_free_contents()
263 list_free_list(list_T *l) in list_free_list() argument
266 if (l->lv_used_prev == NULL) in list_free_list()
267 first_list = l->lv_used_next; in list_free_list()
269 l->lv_used_prev->lv_used_next = l->lv_used_next; in list_free_list()
270 if (l->lv_used_next != NULL) in list_free_list()
271 l->lv_used_next->lv_used_prev = l->lv_used_prev; in list_free_list()
273 free_type(l->lv_type); in list_free_list()
274 vim_free(l); in list_free_list()
297 list_free(list_T *l) in list_free() argument
301 list_free_contents(l); in list_free()
302 list_free_list(l); in list_free()
321 list_free_item(list_T *l, listitem_T *item) in list_free_item() argument
323 if (l->lv_with_items == 0 || item < (listitem_T *)l in list_free_item()
324 || item >= (listitem_T *)(l + 1) + l->lv_with_items) in list_free_item()
333 listitem_free(list_T *l, listitem_T *item) in listitem_free() argument
336 list_free_item(l, item); in listitem_free()
343 listitem_remove(list_T *l, listitem_T *item) in listitem_remove() argument
345 vimlist_remove(l, item, item); in listitem_remove()
346 listitem_free(l, item); in listitem_remove()
353 list_len(list_T *l) in list_len() argument
355 if (l == NULL) in list_len()
357 return l->lv_len; in list_len()
399 list_find(list_T *l, long n) in list_find() argument
404 if (l == NULL) in list_find()
409 n = l->lv_len + n; in list_find()
412 if (n < 0 || n >= l->lv_len) in list_find()
415 CHECK_LIST_MATERIALIZE(l); in list_find()
418 if (l->lv_u.mat.lv_idx_item != NULL) in list_find()
420 if (n < l->lv_u.mat.lv_idx / 2) in list_find()
423 item = l->lv_first; in list_find()
426 else if (n > (l->lv_u.mat.lv_idx + l->lv_len) / 2) in list_find()
429 item = l->lv_u.mat.lv_last; in list_find()
430 idx = l->lv_len - 1; in list_find()
435 item = l->lv_u.mat.lv_idx_item; in list_find()
436 idx = l->lv_u.mat.lv_idx; in list_find()
441 if (n < l->lv_len / 2) in list_find()
444 item = l->lv_first; in list_find()
450 item = l->lv_u.mat.lv_last; in list_find()
451 idx = l->lv_len - 1; in list_find()
469 l->lv_u.mat.lv_idx = idx; in list_find()
470 l->lv_u.mat.lv_idx_item = item; in list_find()
480 list_T *l, in list_find_nr() argument
486 if (l != NULL && l->lv_first == &range_list_item) in list_find_nr()
493 n = l->lv_len + n; in list_find_nr()
496 if (n < 0 || n >= l->lv_len) in list_find_nr()
503 return l->lv_u.nonmat.lv_start + n * l->lv_u.nonmat.lv_stride; in list_find_nr()
506 li = list_find(l, idx); in list_find_nr()
520 list_find_str(list_T *l, long idx) in list_find_str() argument
524 li = list_find(l, idx - 1); in list_find_str()
538 list_find_index(list_T *l, long *idx) in list_find_index() argument
540 listitem_T *li = list_find(l, *idx); in list_find_index()
547 li = list_find(l, *idx); in list_find_index()
558 list_idx_of_item(list_T *l, listitem_T *item) in list_idx_of_item() argument
563 if (l == NULL) in list_idx_of_item()
565 CHECK_LIST_MATERIALIZE(l); in list_idx_of_item()
567 for (li = l->lv_first; li != NULL && li != item; li = li->li_next) in list_idx_of_item()
578 list_append(list_T *l, listitem_T *item) in list_append() argument
580 CHECK_LIST_MATERIALIZE(l); in list_append()
581 if (l->lv_u.mat.lv_last == NULL) in list_append()
584 l->lv_first = item; in list_append()
585 l->lv_u.mat.lv_last = item; in list_append()
590 l->lv_u.mat.lv_last->li_next = item; in list_append()
591 item->li_prev = l->lv_u.mat.lv_last; in list_append()
592 l->lv_u.mat.lv_last = item; in list_append()
594 ++l->lv_len; in list_append()
603 list_append_tv(list_T *l, typval_T *tv) in list_append_tv() argument
607 if (l->lv_type != NULL && l->lv_type->tt_member != NULL in list_append_tv()
608 && check_typval_arg_type(l->lv_type->tt_member, tv, in list_append_tv()
615 list_append(l, li); in list_append_tv()
624 list_append_tv_move(list_T *l, typval_T *tv) in list_append_tv_move() argument
631 list_append(l, li); in list_append_tv_move()
679 list_append_string(list_T *l, char_u *str, int len) in list_append_string() argument
685 list_append(l, li); in list_append_string()
701 list_append_number(list_T *l, varnumber_T n) in list_append_number() argument
711 list_append(l, li); in list_append_number()
721 list_insert_tv(list_T *l, typval_T *tv, listitem_T *item) in list_insert_tv() argument
725 if (l->lv_type != NULL && l->lv_type->tt_member != NULL in list_insert_tv()
726 && check_typval_arg_type(l->lv_type->tt_member, tv, in list_insert_tv()
733 list_insert(l, ni, item); in list_insert_tv()
738 list_insert(list_T *l, listitem_T *ni, listitem_T *item) in list_insert() argument
740 CHECK_LIST_MATERIALIZE(l); in list_insert()
743 list_append(l, ni); in list_insert()
751 l->lv_first = ni; in list_insert()
752 ++l->lv_u.mat.lv_idx; in list_insert()
757 l->lv_u.mat.lv_idx_item = NULL; in list_insert()
760 ++l->lv_len; in list_insert()
770 check_range_index_one(list_T *l, long *n1, int quiet) in check_range_index_one() argument
772 listitem_T *li = list_find_index(l, n1); in check_range_index_one()
777 if (in_vim9script() && *n1 == l->lv_len && l->lv_lock == 0) in check_range_index_one()
779 list_append_number(l, 0); in check_range_index_one()
780 li = list_find_index(l, n1); in check_range_index_one()
800 list_T *l, in check_range_index_two() argument
808 listitem_T *ni = list_find(l, *n2); in check_range_index_two()
816 *n2 = list_idx_of_item(l, ni); in check_range_index_two()
821 *n1 = list_idx_of_item(l, li1); in check_range_index_two()
988 list_T *l; in flatten_common() local
1017 l = argvars[0].vval.v_list; in flatten_common()
1019 rettv->vval.v_list = l; in flatten_common()
1020 if (l == NULL) in flatten_common()
1025 l = list_copy(l, TRUE, get_copyID()); in flatten_common()
1026 rettv->vval.v_list = l; in flatten_common()
1027 if (l == NULL) in flatten_common()
1030 free_type(l->lv_type); in flatten_common()
1031 l->lv_type = NULL; in flatten_common()
1035 if (value_check_lock(l->lv_lock, in flatten_common()
1038 ++l->lv_refcount; in flatten_common()
1041 list_flatten(l, maxdepth); in flatten_common()
1106 list_T *l; in list_concat() local
1110 l = list_alloc(); in list_concat()
1112 l = list_copy(l1, FALSE, 0); in list_concat()
1113 if (l == NULL) in list_concat()
1117 tv->vval.v_list = l; in list_concat()
1119 ++l->lv_refcount; in list_concat()
1122 return list_extend(l, l2, NULL); in list_concat()
1129 list_T *l = list_alloc(); in list_slice() local
1131 if (l == NULL) in list_slice()
1135 if (list_append_tv(l, &item->li_tv) == FAIL) in list_slice()
1137 list_free(l); in list_slice()
1142 return l; in list_slice()
1180 list_T *l; in list_slice_or_index() local
1190 l = list_slice(list, n1, n2); in list_slice_or_index()
1191 if (l == NULL) in list_slice_or_index()
1194 rettv_list_set(rettv, l); in list_slice_or_index()
1271 vimlist_remove(list_T *l, listitem_T *item, listitem_T *item2) in vimlist_remove() argument
1275 CHECK_LIST_MATERIALIZE(l); in vimlist_remove()
1280 --l->lv_len; in vimlist_remove()
1281 list_fix_watch(l, ip); in vimlist_remove()
1287 l->lv_u.mat.lv_last = item->li_prev; in vimlist_remove()
1291 l->lv_first = item2->li_next; in vimlist_remove()
1294 l->lv_u.mat.lv_idx_item = NULL; in vimlist_remove()
1330 list_T *l, in list_join_inner() argument
1348 CHECK_LIST_MATERIALIZE(l); in list_join_inner()
1349 for (item = l->lv_first; item != NULL && !got_int; item = item->li_next) in list_join_inner()
1408 list_T *l, in list_join() argument
1419 if (l->lv_len < 1) in list_join()
1421 ga_init2(&join_ga, (int)sizeof(join_T), l->lv_len); in list_join()
1422 retval = list_join_inner(gap, l, sep, echo_style, restore_copyID, in list_join()
1489 list_T *l = NULL; in eval_list() local
1497 l = list_alloc(); in eval_list()
1498 if (l == NULL) in eval_list()
1514 list_append(l, item); in eval_list()
1561 list_free(l); in eval_list()
1567 rettv_list_set(rettv, l); in eval_list()
1619 list_T *l = &sl->sl_list; in init_static_list() local
1623 l->lv_first = &sl->sl_items[0]; in init_static_list()
1624 l->lv_u.mat.lv_last = &sl->sl_items[9]; in init_static_list()
1625 l->lv_refcount = DO_NOT_FREE_CNT; in init_static_list()
1626 l->lv_lock = VAR_FIXED; in init_static_list()
1650 list_T *l; in f_list2str() local
1669 l = argvars[0].vval.v_list; in f_list2str()
1670 if (l == NULL) in f_list2str()
1676 CHECK_LIST_MATERIALIZE(l); in f_list2str()
1688 FOR_ALL_LIST_ITEMS(l, li) in f_list2str()
1695 else if (ga_grow(&ga, list_len(l) + 1) == OK) in f_list2str()
1697 FOR_ALL_LIST_ITEMS(l, li) in f_list2str()
1709 list_T *l; in list_remove() local
1715 if ((l = argvars[0].vval.v_list) == NULL in list_remove()
1716 || value_check_lock(l->lv_lock, arg_errmsg, TRUE)) in list_remove()
1722 else if ((item = list_find(l, idx)) == NULL) in list_remove()
1729 vimlist_remove(l, item, item); in list_remove()
1731 list_free_item(l, item); in list_remove()
1740 else if ((item2 = list_find(l, end)) == NULL) in list_remove()
1756 vimlist_remove(l, item, item2); in list_remove()
1761 if (l->lv_with_items > 0) in list_remove()
1973 list_T *l; in do_sort_uniq() local
1996 l = argvars[0].vval.v_list; in do_sort_uniq()
1997 if (l != NULL && value_check_lock(l->lv_lock, in do_sort_uniq()
2001 rettv_list_set(rettv, l); in do_sort_uniq()
2002 if (l == NULL) in do_sort_uniq()
2004 CHECK_LIST_MATERIALIZE(l); in do_sort_uniq()
2006 len = list_len(l); in do_sort_uniq()
2108 FOR_ALL_LIST_ITEMS(l, li) in do_sort_uniq()
2134 l->lv_first = l->lv_u.mat.lv_last in do_sort_uniq()
2135 = l->lv_u.mat.lv_idx_item = NULL; in do_sort_uniq()
2136 l->lv_len = 0; in do_sort_uniq()
2138 list_append(l, ptrs[i].item); in do_sort_uniq()
2153 for (li = l->lv_first; li != NULL && li->li_next != NULL; in do_sort_uniq()
2175 l->lv_u.mat.lv_last = ptrs[i].item; in do_sort_uniq()
2176 list_fix_watch(l, li); in do_sort_uniq()
2177 listitem_free(l, li); in do_sort_uniq()
2178 l->lv_len--; in do_sort_uniq()
2262 list_T *l = NULL; in filter_map() local
2315 if ((l = argvars[0].vval.v_list) == NULL in filter_map()
2317 && value_check_lock(l->lv_lock, arg_errmsg, TRUE))) in filter_map()
2485 int prev_lock = l->lv_lock; in filter_map()
2497 if (filtermap != FILTERMAP_FILTER && l->lv_lock == 0) in filter_map()
2498 l->lv_lock = VAR_LOCKED; in filter_map()
2500 if (l->lv_first == &range_list_item) in filter_map()
2502 varnumber_T val = l->lv_u.nonmat.lv_start; in filter_map()
2503 int len = l->lv_len; in filter_map()
2504 int stride = l->lv_u.nonmat.lv_stride; in filter_map()
2509 l->lv_first = NULL; in filter_map()
2510 l->lv_u.mat.lv_last = NULL; in filter_map()
2511 l->lv_len = 0; in filter_map()
2512 l->lv_u.mat.lv_idx_item = NULL; in filter_map()
2545 ? l : l_ret, &newtv) == FAIL) in filter_map()
2551 if (list_append_tv_move(l, &tv) == FAIL) in filter_map()
2561 for (li = l->lv_first; li != NULL; li = nli) in filter_map()
2598 listitem_remove(l, li); in filter_map()
2603 l->lv_lock = prev_lock; in filter_map()
2660 list_T *l = argvars[0].vval.v_list; in f_add() local
2662 if (l == NULL) in f_add()
2667 else if (!value_check_lock(l->lv_lock, in f_add()
2669 && list_append_tv(l, &argvars[1]) == OK) in f_add()
2756 list_T *l; in f_count() local
2759 if ((l = argvars[0].vval.v_list) != NULL) in f_count()
2761 CHECK_LIST_MATERIALIZE(l); in f_count()
2762 li = l->lv_first; in f_count()
2770 li = list_find(l, idx); in f_count()
3048 list_T *l = argvars[0].vval.v_list; in f_insert() local
3050 if (l == NULL) in f_insert()
3055 else if (!value_check_lock(l->lv_lock, in f_insert()
3063 if (before == l->lv_len) in f_insert()
3067 item = list_find(l, before); in f_insert()
3071 l = NULL; in f_insert()
3074 if (l != NULL) in f_insert()
3076 (void)list_insert_tv(l, &argvars[1], item); in f_insert()
3117 list_T *l; in f_reverse() local
3143 l = argvars[0].vval.v_list; in f_reverse()
3144 rettv_list_set(rettv, l); in f_reverse()
3145 if (l != NULL in f_reverse()
3146 && !value_check_lock(l->lv_lock, in f_reverse()
3149 if (l->lv_first == &range_list_item) in f_reverse()
3151 varnumber_T new_start = l->lv_u.nonmat.lv_start in f_reverse()
3152 + (l->lv_len - 1) * l->lv_u.nonmat.lv_stride; in f_reverse()
3153 l->lv_u.nonmat.lv_end = new_start in f_reverse()
3154 - (l->lv_u.nonmat.lv_end - l->lv_u.nonmat.lv_start); in f_reverse()
3155 l->lv_u.nonmat.lv_start = new_start; in f_reverse()
3156 l->lv_u.nonmat.lv_stride = -l->lv_u.nonmat.lv_stride; in f_reverse()
3159 li = l->lv_u.mat.lv_last; in f_reverse()
3160 l->lv_first = l->lv_u.mat.lv_last = NULL; in f_reverse()
3161 l->lv_len = 0; in f_reverse()
3165 list_append(l, li); in f_reverse()
3168 l->lv_u.mat.lv_idx = l->lv_len - l->lv_u.mat.lv_idx - 1; in f_reverse()
3212 list_T *l = argvars[0].vval.v_list; in f_reduce() local
3217 if (l != NULL) in f_reduce()
3218 CHECK_LIST_MATERIALIZE(l); in f_reduce()
3221 if (l == NULL || l->lv_first == NULL) in f_reduce()
3226 initial = l->lv_first->li_tv; in f_reduce()
3227 li = l->lv_first->li_next; in f_reduce()
3232 if (l != NULL) in f_reduce()
3233 li = l->lv_first; in f_reduce()
3237 if (l != NULL) in f_reduce()
3239 int prev_locked = l->lv_lock; in f_reduce()
3241 l->lv_lock = VAR_FIXED; // disallow the list changing here in f_reduce()
3252 l->lv_lock = prev_locked; in f_reduce()