-/*
- * vector.c -- dynamically sized vectors
+/* vector.c -- dynamically sized vectors
*
* This code is Copyright (c) 2013, by the authors of nmh. See the
* COPYRIGHT file in the root directory of the nmh distribution for
bvector_t
bvector_create (size_t init_size) {
- bvector_t vec = mh_xmalloc (sizeof *vec);
- size_t bytes = BVEC_BYTES (vec, init_size ? init_size : VEC_INIT_SIZE);
+ bvector_t vec;
+ size_t bytes;
+
+ NEW(vec);
+ bytes = BVEC_BYTES (vec, init_size ? init_size : VEC_INIT_SIZE);
vec->bits = mh_xmalloc (bytes);
memset (vec->bits, 0, bytes);
size_t word = BVEC_WORD (vec,n);
size_t offset = BVEC_OFFSET (vec, n);
- if (n >= vec->maxsize) bvector_resize (vec, n);
+ if (n >= vec->maxsize)
+ bvector_resize (vec, n);
assert (sizeof *vec->bits <= sizeof 1ul);
vec->bits[word] &= ~(1ul << offset);
size_t word = BVEC_WORD (vec, n);
size_t offset = BVEC_OFFSET (vec, n);
- if (n >= vec->maxsize) bvector_resize (vec, n);
+ if (n >= vec->maxsize)
+ bvector_resize (vec, n);
assert (sizeof *vec->bits <= sizeof 1ul);
vec->bits[word] |= 1ul << offset;
}
size_t bytes;
size_t i;
- while ((vec->maxsize *= 2) < maxsize) continue;
+ while ((vec->maxsize *= 2) < maxsize)
+ ;
bytes = BVEC_BYTES (vec, vec->maxsize);
vec->bits = mh_xrealloc (vec->bits, bytes);
- for (i = old_maxsize; i < vec->maxsize; ++i) bvector_clear (vec, i);
+ for (i = old_maxsize; i < vec->maxsize; ++i)
+ bvector_clear (vec, i);
}
const unsigned long *
svector_t
svector_create (size_t init_size) {
- svector_t vec = mh_xmalloc (sizeof *vec);
+ svector_t vec;
size_t bytes;
+ NEW(vec);
vec->maxsize = init_size ? init_size : VEC_INIT_SIZE;
bytes = vec->maxsize * sizeof (char *);
vec->strs = mh_xmalloc (bytes);
char *
svector_push_back (svector_t vec, char *s) {
- if (++vec->size >= vec->maxsize) svector_resize (vec, vec->size);
+ if (++vec->size >= vec->maxsize)
+ svector_resize (vec, vec->size);
return vec->strs[vec->size-1] = s;
}
char *
svector_at (svector_t vec, size_t i) {
- if (i >= vec->maxsize) svector_resize (vec, i);
+ if (i >= vec->maxsize)
+ svector_resize (vec, i);
return vec->strs[i];
}
size_t old_maxsize = vec->maxsize;
size_t i;
- while ((vec->maxsize *= 2) < maxsize) continue;
+ while ((vec->maxsize *= 2) < maxsize)
+ ;
vec->strs = mh_xrealloc (vec->strs, vec->maxsize * sizeof (char *));
- for (i = old_maxsize; i < vec->maxsize; ++i) vec->strs[i] = NULL;
+ for (i = old_maxsize; i < vec->maxsize; ++i)
+ vec->strs[i] = NULL;
}
ivector_t
ivector_create (size_t init_size) {
- ivector_t vec = mh_xmalloc (sizeof *vec);
+ ivector_t vec;
size_t bytes;
+ NEW(vec);
vec->maxsize = init_size ? init_size : VEC_INIT_SIZE;
bytes = vec->maxsize * sizeof (int);
vec->ints = mh_xmalloc (bytes);
int
ivector_push_back (ivector_t vec, int n) {
- if (++vec->size >= vec->maxsize) ivector_resize (vec, vec->size);
+ if (++vec->size >= vec->maxsize)
+ ivector_resize (vec, vec->size);
return vec->ints[vec->size-1] = n;
}
int
ivector_at (ivector_t vec, size_t i) {
- if (i >= vec->maxsize) ivector_resize (vec, i);
+ if (i >= vec->maxsize)
+ ivector_resize (vec, i);
return vec->ints[i];
}
int *
ivector_atp (ivector_t vec, size_t i) {
- if (i >= vec->maxsize) ivector_resize (vec, i);
+ if (i >= vec->maxsize)
+ ivector_resize (vec, i);
return &vec->ints[i];
}
size_t old_maxsize = vec->maxsize;
size_t i;
- while ((vec->maxsize *= 2) < maxsize) continue;
+ while ((vec->maxsize *= 2) < maxsize)
+ ;
vec->ints = mh_xrealloc (vec->ints, vec->maxsize * sizeof (int));
- for (i = old_maxsize; i < vec->maxsize; ++i) vec->ints[i] = 0;
+ for (i = old_maxsize; i < vec->maxsize; ++i)
+ vec->ints[i] = 0;
}