Files
mango/include/socks/bitmap.h

36 lines
1.2 KiB
C
Raw Normal View History

2023-03-17 20:06:25 +00:00
#ifndef SOCKS_BITMAP_H_
#define SOCKS_BITMAP_H_
#include <stdbool.h>
2023-03-20 20:41:39 +00:00
#ifdef __cplusplus
extern "C" {
#endif
2023-03-17 20:06:25 +00:00
#define BITS_PER_WORD (8 * sizeof(unsigned long))
#define __DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
#define BITMAP_WORDS(nbits) __DIV_ROUND_UP(nbits, BITS_PER_WORD)
2023-06-02 19:31:09 +01:00
#define BITMAP_NPOS ((unsigned int)-1)
2023-03-17 20:06:25 +00:00
#define DECLARE_BITMAP(name, nbits) unsigned long name[BITMAP_WORDS(nbits)]
extern void bitmap_zero(unsigned long *map, unsigned long nbits);
extern void bitmap_fill(unsigned long *map, unsigned long nbits);
extern void bitmap_set(unsigned long *map, unsigned long bit);
extern void bitmap_clear(unsigned long *map, unsigned long bit);
extern bool bitmap_check(unsigned long *map, unsigned long bit);
extern unsigned int bitmap_count_set(unsigned long *map, unsigned long nbits);
extern unsigned int bitmap_count_clear(unsigned long *map, unsigned long nbits);
extern unsigned int bitmap_highest_set(unsigned long *map, unsigned long nbits);
extern unsigned int bitmap_highest_clear(unsigned long *map, unsigned long nbits);
extern unsigned int bitmap_lowest_set(unsigned long *map, unsigned long nbits);
extern unsigned int bitmap_lowest_clear(unsigned long *map, unsigned long nbits);
2023-03-20 20:41:39 +00:00
#ifdef __cplusplus
}
#endif
2023-03-17 20:06:25 +00:00
#endif