47 static int varray_resize(
struct hecmw_varray_idx *varray,
size_t new_max_val) {
55 if (new_max_val == 0) {
66 if (new_vals ==
NULL) {
70 varray->
vals = new_vals;
86 return varray_resize(varray, new_max_val);
106 return varray->
vals[index];
119 for (i = 0; i < varray2->
n_val; i++) {
126 static int idx_cmp(
const void *v1,
const void *v2) {
127 const idx_t *i1, *i2;
129 i1 = (
const idx_t *)v1;
130 i2 = (
const idx_t *)v2;
132 if (*i1 < *i2)
return -1;
133 if (*i1 > *i2)
return 1;
145 p = bsearch(&value, varray->
vals, varray->
n_val,
sizeof(
idx_t), idx_cmp);
147 *index = p - varray->
vals;
156 for (i = 1; i < varray->
n_val; i++) {
157 if (varray->
vals[i - 1] == varray->
vals[i]) {
161 varray->
vals[i - n_dup] = varray->
vals[i];
166 varray->
n_val -= n_dup;
169 varray_resize(varray, varray->
n_val);
203 for (i = 0; i < varray->
n_val; i++) varray2->
vals[i] = varray->
vals[i];
226 for (i = 0; i < varray->
n_val; i++) {
229 bsearch(key, tmp_array.
vals, tmp_array.
n_val,
sizeof(
idx_t), idx_cmp);
234 idx = res - tmp_array.
vals;
240 varray->
vals[i - n_dup] = varray->
vals[i];
243 varray->
n_val -= n_dup;
253 size_t end,
idx_t val) {
260 for (i = begin; i < end; i++) {
261 varray->
vals[i] = val;
274 memmove(varray->
vals + index + 1, varray->
vals + index,
277 varray->
vals[index] = val;
287 memmove(varray->
vals + index, varray->
vals + index + 1,
int HECMW_bit_array_init(struct hecmw_bit_array *ba, size_t len)
int HECMW_bit_array_get(struct hecmw_bit_array *ba, size_t index)
void HECMW_bit_array_set(struct hecmw_bit_array *ba, size_t index)
void HECMW_bit_array_finalize(struct hecmw_bit_array *ba)
#define HECMW_realloc(ptr, size)
#define HECMW_assert(cond)
int HECMW_varray_idx_append(struct hecmw_varray_idx *varray, idx_t value)
void HECMW_varray_idx_finalize(struct hecmw_varray_idx *varray)
idx_t * HECMW_varray_idx_get_v(struct hecmw_varray_idx *varray)
int HECMW_varray_idx_search(struct hecmw_varray_idx *varray, idx_t value, size_t *index)
size_t HECMW_varray_idx_uniq(struct hecmw_varray_idx *varray)
size_t HECMW_varray_idx_nval(const struct hecmw_varray_idx *varray)
int HECMW_varray_idx_assign(struct hecmw_varray_idx *varray, size_t begin, size_t end, idx_t val)
int HECMW_varray_idx_delete(struct hecmw_varray_idx *varray, size_t index)
void HECMW_varray_idx_sort(struct hecmw_varray_idx *varray)
idx_t HECMW_varray_idx_get(const struct hecmw_varray_idx *varray, size_t index)
int HECMW_varray_idx_copy(const struct hecmw_varray_idx *varray, struct hecmw_varray_idx *varray2)
int HECMW_varray_idx_cat(struct hecmw_varray_idx *varray, const struct hecmw_varray_idx *varray2)
int HECMW_varray_idx_insert(struct hecmw_varray_idx *varray, size_t index, idx_t val)
int HECMW_varray_idx_resize(struct hecmw_varray_idx *varray, size_t len)
int HECMW_varray_idx_init(struct hecmw_varray_idx *varray)
int HECMW_varray_idx_rmdup(struct hecmw_varray_idx *varray)
const idx_t * HECMW_varray_idx_get_cv(const struct hecmw_varray_idx *varray)