Lines Matching +refs:list +refs:copy

32 static bool string_list_deinitialize_internal(struct string_list *list)  in string_list_deinitialize_internal()  argument
34 if (!list) in string_list_deinitialize_internal()
37 if (list->elems) in string_list_deinitialize_internal()
40 for (i = 0; i < list->size; i++) in string_list_deinitialize_internal()
42 if (list->elems[i].data) in string_list_deinitialize_internal()
43 free(list->elems[i].data); in string_list_deinitialize_internal()
44 if (list->elems[i].userdata) in string_list_deinitialize_internal()
45 free(list->elems[i].userdata); in string_list_deinitialize_internal()
46 list->elems[i].data = NULL; in string_list_deinitialize_internal()
47 list->elems[i].userdata = NULL; in string_list_deinitialize_internal()
50 free(list->elems); in string_list_deinitialize_internal()
53 list->elems = NULL; in string_list_deinitialize_internal()
67 static bool string_list_capacity(struct string_list *list, size_t cap) in string_list_capacity() argument
70 realloc(list->elems, cap * sizeof(*new_data)); in string_list_capacity()
75 if (cap > list->cap) in string_list_capacity()
76 memset(&new_data[list->cap], 0, sizeof(*new_data) * (cap - list->cap)); in string_list_capacity()
78 list->elems = new_data; in string_list_capacity()
79 list->cap = cap; in string_list_capacity()
89 void string_list_free(struct string_list *list) in string_list_free() argument
91 if (!list) in string_list_free()
94 string_list_deinitialize_internal(list); in string_list_free()
96 free(list); in string_list_free()
99 bool string_list_deinitialize(struct string_list *list) in string_list_deinitialize() argument
101 if (!list) in string_list_deinitialize()
103 if (!string_list_deinitialize_internal(list)) in string_list_deinitialize()
105 list->elems = NULL; in string_list_deinitialize()
106 list->size = 0; in string_list_deinitialize()
107 list->cap = 0; in string_list_deinitialize()
122 struct string_list *list = (struct string_list*) in string_list_new() local
123 malloc(sizeof(*list)); in string_list_new()
124 if (!list) in string_list_new()
130 string_list_free(list); in string_list_new()
134 list->elems = elems; in string_list_new()
135 list->size = 0; in string_list_new()
136 list->cap = 32; in string_list_new()
138 return list; in string_list_new()
141 bool string_list_initialize(struct string_list *list) in string_list_initialize() argument
145 if (!list) in string_list_initialize()
150 string_list_deinitialize(list); in string_list_initialize()
153 list->elems = elems; in string_list_initialize()
154 list->size = 0; in string_list_initialize()
155 list->cap = 32; in string_list_initialize()
169 bool string_list_append(struct string_list *list, const char *elem, in string_list_append() argument
180 if (list->size >= list->cap && in string_list_append()
181 !string_list_capacity(list, in string_list_append()
182 (list->cap > 0) ? (list->cap * 2) : 32)) in string_list_append()
189 list->elems[list->size].data = data_dup; in string_list_append()
190 list->elems[list->size].attr = attr; in string_list_append()
192 list->size++; in string_list_append()
207 bool string_list_append_n(struct string_list *list, const char *elem, in string_list_append_n() argument
212 if (list->size >= list->cap && in string_list_append_n()
213 !string_list_capacity(list, list->cap * 2)) in string_list_append_n()
223 list->elems[list->size].data = data_dup; in string_list_append_n()
224 list->elems[list->size].attr = attr; in string_list_append_n()
226 list->size++; in string_list_append_n()
238 void string_list_set(struct string_list *list, in string_list_set() argument
241 free(list->elems[idx].data); in string_list_set()
242 list->elems[idx].data = strdup(str); in string_list_set()
256 const struct string_list *list, const char *delim) in string_list_join_concat() argument
274 for (i = 0; i < list->size; i++) in string_list_join_concat()
276 strlcat(buffer, list->elems[i].data, size); in string_list_join_concat()
277 if ((i + 1) < list->size) in string_list_join_concat()
294 char *copy = NULL; in string_split() local
296 struct string_list *list = string_list_new(); in string_split() local
298 if (!list) in string_split()
301 copy = strdup(str); in string_split()
302 if (!copy) in string_split()
305 tmp = strtok_r(copy, delim, &save); in string_split()
312 if (!string_list_append(list, tmp, attr)) in string_split()
318 free(copy); in string_split()
319 return list; in string_split()
322 string_list_free(list); in string_split()
323 free(copy); in string_split()
327 bool string_split_noalloc(struct string_list *list, in string_split_noalloc() argument
331 char *copy = NULL; in string_split_noalloc() local
334 if (!list) in string_split_noalloc()
337 copy = strdup(str); in string_split_noalloc()
338 if (!copy) in string_split_noalloc()
341 tmp = strtok_r(copy, delim, &save); in string_split_noalloc()
348 if (!string_list_append(list, tmp, attr)) in string_split_noalloc()
350 free(copy); in string_split_noalloc()
357 free(copy); in string_split_noalloc()
376 struct string_list *list = NULL; in string_separate() local
383 list = string_list_new(); in string_separate()
385 if (!list) in string_separate()
395 if (!string_list_append(list, token, attr)) in string_separate()
404 return list; in string_separate()
409 if (list) in string_separate()
410 string_list_free(list); in string_separate()
415 struct string_list *list, in string_separate_noalloc() argument
422 if (!str || string_is_empty(delim) || !list) in string_separate_noalloc()
434 if (!string_list_append(list, token, attr)) in string_separate_noalloc()
456 int string_list_find_elem(const struct string_list *list, const char *elem) in string_list_find_elem() argument
460 if (!list) in string_list_find_elem()
463 for (i = 0; i < list->size; i++) in string_list_find_elem()
465 if (string_is_equal_noncase(list->elems[i].data, elem)) in string_list_find_elem()
483 bool string_list_find_elem_prefix(const struct string_list *list, in string_list_find_elem_prefix() argument
489 if (!list) in string_list_find_elem_prefix()
497 for (i = 0; i < list->size; i++) in string_list_find_elem_prefix()
499 if (string_is_equal_noncase(list->elems[i].data, elem) || in string_list_find_elem_prefix()
500 string_is_equal_noncase(list->elems[i].data, prefixed)) in string_list_find_elem_prefix()