Lines Matching refs:array
38 void lv_array_init(lv_array_t * array, uint32_t capacity, uint32_t element_size) in lv_array_init() argument
40 array->size = 0; in lv_array_init()
41 array->capacity = capacity; in lv_array_init()
42 array->element_size = element_size; in lv_array_init()
44 array->data = lv_malloc(capacity * element_size); in lv_array_init()
45 array->inner_alloc = true; in lv_array_init()
46 LV_ASSERT_MALLOC(array->data); in lv_array_init()
49 void lv_array_init_from_buf(lv_array_t * array, void * buf, uint32_t capacity, uint32_t element_siz… in lv_array_init_from_buf() argument
52 array->size = 0; in lv_array_init_from_buf()
53 array->capacity = capacity; in lv_array_init_from_buf()
54 array->element_size = element_size; in lv_array_init_from_buf()
56 array->data = buf; in lv_array_init_from_buf()
57 array->inner_alloc = false; in lv_array_init_from_buf()
60 void lv_array_deinit(lv_array_t * array) in lv_array_deinit() argument
62 if(array->data) { in lv_array_deinit()
63 if(array->inner_alloc) lv_free(array->data); in lv_array_deinit()
64 array->data = NULL; in lv_array_deinit()
67 array->size = 0; in lv_array_deinit()
68 array->capacity = 0; in lv_array_deinit()
82 void lv_array_shrink(lv_array_t * array) in lv_array_shrink() argument
84 if(array->size <= array->capacity / LV_ARRAY_DEFAULT_SHRINK_RATIO) { in lv_array_shrink()
85 lv_array_resize(array, array->size); in lv_array_shrink()
89 lv_result_t lv_array_remove(lv_array_t * array, uint32_t index) in lv_array_remove() argument
91 if(index >= array->size) { in lv_array_remove()
96 if(index == array->size - 1) { in lv_array_remove()
97 array->size--; in lv_array_remove()
98 lv_array_shrink(array); in lv_array_remove()
102 uint8_t * start = lv_array_at(array, index); in lv_array_remove()
103 uint8_t * remaining = start + array->element_size; in lv_array_remove()
104 uint32_t remaining_size = (array->size - index - 1) * array->element_size; in lv_array_remove()
106 array->size--; in lv_array_remove()
107 lv_array_shrink(array); in lv_array_remove()
111 lv_result_t lv_array_erase(lv_array_t * array, uint32_t start, uint32_t end) in lv_array_erase() argument
113 if(end > array->size) { in lv_array_erase()
114 end = array->size; in lv_array_erase()
122 if(end == array->size) { in lv_array_erase()
123 array->size = start; in lv_array_erase()
124 lv_array_shrink(array); in lv_array_erase()
128 uint8_t * start_p = lv_array_at(array, start); in lv_array_erase()
129 uint8_t * remaining = start_p + (end - start) * array->element_size; in lv_array_erase()
130 uint32_t remaining_size = (array->size - end) * array->element_size; in lv_array_erase()
132 array->size -= (end - start); in lv_array_erase()
133 lv_array_shrink(array); in lv_array_erase()
137 bool lv_array_resize(lv_array_t * array, uint32_t new_capacity) in lv_array_resize() argument
139 if(array->inner_alloc == false) { in lv_array_resize()
144 uint8_t * data = lv_realloc(array->data, new_capacity * array->element_size); in lv_array_resize()
149 array->data = data; in lv_array_resize()
150 array->capacity = new_capacity; in lv_array_resize()
151 if(array->size > new_capacity) { in lv_array_resize()
152 array->size = new_capacity; in lv_array_resize()
157 lv_result_t lv_array_concat(lv_array_t * array, const lv_array_t * other) in lv_array_concat() argument
159 LV_ASSERT_NULL(array->data); in lv_array_concat()
161 if(array->size + size > array->capacity) { in lv_array_concat()
163 if(lv_array_resize(array, array->size + size) == false) { in lv_array_concat()
168 uint8_t * data = array->data + array->size * array->element_size; in lv_array_concat()
169 lv_memcpy(data, other->data, array->element_size * size); in lv_array_concat()
170 array->size += size; in lv_array_concat()
174 lv_result_t lv_array_push_back(lv_array_t * array, const void * element) in lv_array_push_back() argument
176 LV_ASSERT_NULL(array->data); in lv_array_push_back()
178 if(array->size == array->capacity) { in lv_array_push_back()
180 if(lv_array_resize(array, array->capacity + LV_ARRAY_DEFAULT_CAPACITY) == false) { in lv_array_push_back()
188 uint8_t * data = array->data + array->size * array->element_size; in lv_array_push_back()
189 if(element) lv_memcpy(data, element, array->element_size); in lv_array_push_back()
190 else lv_memzero(data, array->element_size); in lv_array_push_back()
192 array->size++; in lv_array_push_back()
196 void * lv_array_at(const lv_array_t * array, uint32_t index) in lv_array_at() argument
198 if(index >= array->size) { in lv_array_at()
202 LV_ASSERT_NULL(array->data); in lv_array_at()
203 return array->data + index * array->element_size; in lv_array_at()
206 lv_result_t lv_array_assign(lv_array_t * array, uint32_t index, const void * value) in lv_array_assign() argument
208 uint8_t * data = lv_array_at(array, index); in lv_array_assign()
211 lv_memcpy(data, value, array->element_size); in lv_array_assign()
215 uint32_t lv_array_size(const lv_array_t * array) in lv_array_size() argument
217 return array->size; in lv_array_size()
220 uint32_t lv_array_capacity(const lv_array_t * array) in lv_array_capacity() argument
222 return array->capacity; in lv_array_capacity()
225 bool lv_array_is_empty(const lv_array_t * array) in lv_array_is_empty() argument
227 return array->size == 0; in lv_array_is_empty()
230 bool lv_array_is_full(const lv_array_t * array) in lv_array_is_full() argument
232 return array->size == array->capacity; in lv_array_is_full()
235 void lv_array_clear(lv_array_t * array) in lv_array_clear() argument
237 array->size = 0; in lv_array_clear()
240 void * lv_array_front(const lv_array_t * array) in lv_array_front() argument
242 return lv_array_at(array, 0); in lv_array_front()
245 void * lv_array_back(const lv_array_t * array) in lv_array_back() argument
247 return lv_array_at(array, lv_array_size(array) - 1); in lv_array_back()