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);
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);
return vec->strs[i];
}
+/*
+ * Return address of first element that stringwise matches s.
+ * The caller can replace the contents of the return address.
+ */
+char **
+svector_find (svector_t vec, const char *s) {
+ size_t i;
+ char **str = vec->strs;
+
+ for (i = 0; i < vec->size; ++i, ++str) {
+ if (*str && ! strcmp(*str, s)) {
+ return str;
+ }
+ }
+
+ return NULL;
+}
+
char **
svector_strs (svector_t vec) {
return vec->strs;
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);