Lines Matching refs:bmp
25 struct bitmask *bmp; in bitmask_alloc() local
27 bmp = malloc(sizeof(*bmp)); in bitmask_alloc()
28 if (bmp == 0) in bitmask_alloc()
30 bmp->size = n; in bitmask_alloc()
31 bmp->maskp = calloc(longsperbits(n), sizeof(unsigned long)); in bitmask_alloc()
32 if (bmp->maskp == 0) { in bitmask_alloc()
33 free(bmp); in bitmask_alloc()
36 return bmp; in bitmask_alloc()
40 void bitmask_free(struct bitmask *bmp) in bitmask_free() argument
42 if (bmp == 0) in bitmask_free()
44 free(bmp->maskp); in bitmask_free()
45 bmp->maskp = (unsigned long *)0xdeadcdef; /* double free tripwire */ in bitmask_free()
46 free(bmp); in bitmask_free()
61 static unsigned int _getbit(const struct bitmask *bmp, unsigned int n) in _getbit() argument
63 if (n < bmp->size) in _getbit()
64 return (bmp->maskp[n/bitsperlong] >> (n % bitsperlong)) & 1; in _getbit()
70 static void _setbit(struct bitmask *bmp, unsigned int n, unsigned int v) in _setbit() argument
72 if (n < bmp->size) { in _setbit()
74 bmp->maskp[n/bitsperlong] |= 1UL << (n % bitsperlong); in _setbit()
76 bmp->maskp[n/bitsperlong] &= in _setbit()
114 struct bitmask *bitmask_setbit(struct bitmask *bmp, unsigned int i) in bitmask_setbit() argument
116 _setbit(bmp, i, 1); in bitmask_setbit()
117 return bmp; in bitmask_setbit()
121 struct bitmask *bitmask_setall(struct bitmask *bmp) in bitmask_setall() argument
124 for (i = 0; i < bmp->size; i++) in bitmask_setall()
125 _setbit(bmp, i, 1); in bitmask_setall()
126 return bmp; in bitmask_setall()
130 struct bitmask *bitmask_clearall(struct bitmask *bmp) in bitmask_clearall() argument
133 for (i = 0; i < bmp->size; i++) in bitmask_clearall()
134 _setbit(bmp, i, 0); in bitmask_clearall()
135 return bmp; in bitmask_clearall()
139 int bitmask_isallclear(const struct bitmask *bmp) in bitmask_isallclear() argument
142 for (i = 0; i < bmp->size; i++) in bitmask_isallclear()
143 if (_getbit(bmp, i)) in bitmask_isallclear()
149 int bitmask_isbitset(const struct bitmask *bmp, unsigned int i) in bitmask_isbitset() argument
151 return _getbit(bmp, i); in bitmask_isbitset()
155 unsigned int bitmask_first(const struct bitmask *bmp) in bitmask_first() argument
157 return bitmask_next(bmp, 0); in bitmask_first()
161 unsigned int bitmask_last(const struct bitmask *bmp) in bitmask_last() argument
164 unsigned int m = bmp->size; in bitmask_last()
165 for (i = 0; i < bmp->size; i++) in bitmask_last()
166 if (_getbit(bmp, i)) in bitmask_last()
172 unsigned int bitmask_next(const struct bitmask *bmp, unsigned int i) in bitmask_next() argument
175 for (n = i; n < bmp->size; n++) in bitmask_next()
176 if (_getbit(bmp, n)) in bitmask_next()
191 int bitmask_parselist(const char *buf, struct bitmask *bmp) in bitmask_parselist() argument
195 bitmask_clearall(bmp); in bitmask_parselist()
226 if (b >= bmp->size) in bitmask_parselist()
229 _setbit(bmp, a, 1); in bitmask_parselist()
235 bitmask_clearall(bmp); in bitmask_parselist()
274 int bitmask_displaylist(char *buf, int buflen, const struct bitmask *bmp) in bitmask_displaylist() argument
282 rbot = cur = bitmask_first(bmp); in bitmask_displaylist()
283 while (cur < bmp->size) { in bitmask_displaylist()
285 cur = bitmask_next(bmp, cur+1); in bitmask_displaylist()
286 if (cur >= bmp->size || cur > rtop + 1) { in bitmask_displaylist()