bitset: use void * instead of uint8_t *

tags/0.1.0
S.J.R. van Schaik 8 years ago
parent ce9065166b
commit 5387c2cdb7
  1. 10
      include/bitset.h
  2. 15
      source/bitset.c

@ -3,8 +3,8 @@
#include <stdint.h> #include <stdint.h>
#include <stdlib.h> #include <stdlib.h>
int is_bit_set(uint8_t *set, size_t n); int is_bit_set(void *set, size_t n);
void set_bit(uint8_t *set, size_t n); void set_bit(void *set, size_t n);
void clear_bit(uint8_t *set, size_t n); void clear_bit(void *set, size_t n);
size_t next_set_bit(uint8_t *set, size_t len); size_t next_set_bit(void *set, size_t len);
size_t next_clear_bit(uint8_t *set, size_t len); size_t next_clear_bit(void *set, size_t len);

@ -1,8 +1,9 @@
#include <bitset.h> #include <bitset.h>
#include <macros.h> #include <macros.h>
int is_bit_set(uint8_t *set, size_t n) int is_bit_set(void *set_, size_t n)
{ {
uint8_t *set = set_;
uint8_t *word, mask; uint8_t *word, mask;
word = set + n / BIT_SIZE(*set); word = set + n / BIT_SIZE(*set);
@ -11,8 +12,9 @@ int is_bit_set(uint8_t *set, size_t n)
return (*word & mask) ? 1 : 0; return (*word & mask) ? 1 : 0;
} }
void set_bit(uint8_t *set, size_t n) void set_bit(void *set_, size_t n)
{ {
uint8_t *set = set_;
uint8_t *word, mask; uint8_t *word, mask;
word = set + n / BIT_SIZE(*set); word = set + n / BIT_SIZE(*set);
@ -21,8 +23,9 @@ void set_bit(uint8_t *set, size_t n)
*word |= mask; *word |= mask;
} }
void clear_bit(uint8_t *set, size_t n) void clear_bit(void *set_, size_t n)
{ {
uint8_t *set = set_;
uint8_t *word, mask; uint8_t *word, mask;
word = set + n / BIT_SIZE(*set); word = set + n / BIT_SIZE(*set);
@ -31,8 +34,9 @@ void clear_bit(uint8_t *set, size_t n)
*word &= ~mask; *word &= ~mask;
} }
size_t next_set_bit(uint8_t *set, size_t len) size_t next_set_bit(void *set_, size_t len)
{ {
uint8_t *set = set_;
size_t n; size_t n;
for (n = 0; n < len; ++n) { for (n = 0; n < len; ++n) {
@ -43,8 +47,9 @@ size_t next_set_bit(uint8_t *set, size_t len)
return SIZE_MAX; return SIZE_MAX;
} }
size_t next_clear_bit(uint8_t *set, size_t len) size_t next_clear_bit(void *set_, size_t len)
{ {
uint8_t *set = set_;
size_t n; size_t n;
for (n = 0; n < len; ++n) { for (n = 0; n < len; ++n) {

Loading…
Cancel
Save