bitset: use void * instead of uint8_t *

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

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

@ -1,8 +1,9 @@
#include <bitset.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;
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;
}
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;
word = set + n / BIT_SIZE(*set);
@ -21,8 +23,9 @@ void set_bit(uint8_t *set, size_t n)
*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;
word = set + n / BIT_SIZE(*set);
@ -31,8 +34,9 @@ void clear_bit(uint8_t *set, size_t n)
*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;
for (n = 0; n < len; ++n) {
@ -43,8 +47,9 @@ size_t next_set_bit(uint8_t *set, size_t len)
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;
for (n = 0; n < len; ++n) {

Loading…
Cancel
Save