int tds_vec_insert(tds_vec *vec, size_t idx, tds_elem *val) { if(tds_vec_resize(vec, vec->n+1)) return 1; if(vec->n-idx-1 > 0) memmove(vec->data+idx+1, vec->data+idx, sizeof(tds_elem)*(vec->n-idx-1)); vec->data[idx] = *val; return 0; }
int tds_vec_set(tds_vec *vec, size_t idx, tds_elem *val) { if(idx >= vec->n) { if(tds_vec_resize(vec, idx+1)) return 1; } tds_elem_free_content(&vec->data[idx]); vec->data[idx] = *val; return 0; }
int tds_vec_remove(tds_vec *vec, size_t idx) { if(idx >= vec->n) return 0; tds_elem_free_content(&vec->data[idx]); if(vec->n-idx-1 > 0) memmove(vec->data+idx, vec->data+idx+1, sizeof(tds_elem)*(vec->n-idx-1)); tds_vec_resize(vec, vec->n-1); return 0; }