src/array_list.c

changeset 619
5e58187ac707
parent 616
af7d8a29fbc5
child 620
f220695aded6
equal deleted inserted replaced
618:1f5a8f6f3015 619:5e58187ac707
181 static int cx_arl_insert_iter( 181 static int cx_arl_insert_iter(
182 struct cx_iterator_s *iter, 182 struct cx_iterator_s *iter,
183 void const *elem, 183 void const *elem,
184 int prepend 184 int prepend
185 ) { 185 ) {
186 return 1; 186 struct cx_list_s *list = iter->src_handle;
187 if (iter->index < list->size) {
188 int result = cx_arl_insert(
189 list,
190 iter->index + 1 - prepend,
191 elem
192 );
193 if (result == 0 && prepend != 0) {
194 iter->index++;
195 iter->elem_handle = ((char *) iter->elem_handle) + list->itemsize;
196 }
197 return result;
198 } else {
199 int result = cx_arl_add(list, elem);
200 iter->index = list->size;
201 return result;
202 }
187 } 203 }
188 204
189 static int cx_arl_remove( 205 static int cx_arl_remove(
190 struct cx_list_s *list, 206 struct cx_list_s *list,
191 size_t index 207 size_t index

mercurial