view help2html/uintarray.h @ 21:1c9dac05d040

Add lint-style FALLTHROUGH annotations to fallthrough cases. (in the parse engine and thus the output code) Document this, because the old output causes warnings with gcc10.
author David A. Holland
date Mon, 13 Jun 2022 00:04:38 -0400
parents 60b08b68c750
children
line wrap: on
line source

#include <assert.h>

/* treat as opaque */
struct uintarray {
   unsigned *v;
   unsigned num, max;
};

struct uintarray *uintarray_create(void);
void uintarray_init(struct uintarray *a);
void uintarray_cleanup(struct uintarray *a);
void uintarray_destroy(struct uintarray *a);

static inline unsigned uintarray_num(const struct uintarray *a);
static inline unsigned uintarray_get(const struct uintarray *a, unsigned ix);
static inline void uintarray_set(struct uintarray *a, unsigned ix, unsigned val);
void uintarray_add(struct uintarray *a, unsigned val);
void uintarray_setsize(struct uintarray *a, unsigned newsize);

/* x and y are pointers that were placed in the uintarray */
void uintarray_sort(struct uintarray *a, int (*f)(unsigned x, unsigned y));

static inline unsigned uintarray_num(const struct uintarray *a) {
   return a->num;
}

static inline unsigned uintarray_get(const struct uintarray *a, unsigned ix) {
   assert(ix < a->num);
   return a->v[ix];
}

static inline void uintarray_set(struct uintarray *a, unsigned ix, 
				 unsigned val) {
   assert(ix < a->num);
   a->v[ix] = val;
}