diff --git a/common/utils.h b/common/utils.h index e853209..13c9d80 100644 --- a/common/utils.h +++ b/common/utils.h @@ -21,6 +21,7 @@ #include #include +#include G_BEGIN_DECLS @@ -28,6 +29,29 @@ const char *spice_genum_get_nick(GType enum_type, gint value); int spice_genum_get_value(GType enum_type, const char *nick, gint default_value); +#define BIT_BYTE(nr) ((nr) / 8) +#define BIT_MASK(nr) (1 << ((nr) % 8)) + +/** + * set_bitmap - Set a bit in memory + * @nr: the bit to set + * @addr: the address to start counting from + */ +static inline void set_bitmap(uint32_t nr, uint8_t *addr) +{ + addr[BIT_BYTE(nr)] |= BIT_MASK(nr); +} + +/** + * test_bitmap - Determine whether a bit is set + * @nr: bit number to test + * @addr: Address to start counting from + */ +static inline int test_bitmap(uint32_t nr, const uint8_t *addr) +{ + return 1 & (addr[BIT_BYTE(nr)] >> (nr % 8)); +} + G_END_DECLS #endif //H_SPICE_COMMON_UTILS