Home | History | Annotate | Line # | Download | only in dist
      1      1.1  christos /*
      2      1.1  christos  * bitset.h -- Dynamic bitset.
      3      1.1  christos  *
      4      1.1  christos  * Copyright (c) 2001-2020, NLnet Labs. All rights reserved.
      5      1.1  christos  *
      6      1.1  christos  * See LICENSE for the license.
      7      1.1  christos  *
      8      1.1  christos  */
      9  1.1.1.2  christos #ifndef BITSET_H
     10  1.1.1.2  christos #define BITSET_H
     11      1.1  christos 
     12      1.1  christos #include <assert.h>
     13      1.1  christos #include <limits.h>
     14      1.1  christos #include <string.h>
     15      1.1  christos 
     16      1.1  christos typedef struct nsd_bitset nsd_bitset_type;
     17      1.1  christos 
     18      1.1  christos struct nsd_bitset {
     19      1.1  christos 	size_t size; /** Number of available bits in the set */
     20      1.1  christos 	unsigned char bits[];
     21      1.1  christos };
     22      1.1  christos 
     23      1.1  christos size_t nsd_bitset_size(size_t bits);
     24      1.1  christos 
     25      1.1  christos void nsd_bitset_zero(struct nsd_bitset *bset);
     26      1.1  christos 
     27      1.1  christos void nsd_bitset_init(struct nsd_bitset *bset, size_t bits);
     28      1.1  christos 
     29      1.1  christos int nsd_bitset_isset(struct nsd_bitset *bset, size_t bit);
     30      1.1  christos 
     31      1.1  christos void nsd_bitset_set(struct nsd_bitset *bset, size_t bit);
     32      1.1  christos 
     33      1.1  christos void nsd_bitset_unset(struct nsd_bitset *bset, size_t bit);
     34      1.1  christos 
     35      1.1  christos void nsd_bitset_or(
     36      1.1  christos 	struct nsd_bitset *destset,
     37      1.1  christos 	struct nsd_bitset *srcset1,
     38      1.1  christos 	struct nsd_bitset *srcset2);
     39      1.1  christos 
     40  1.1.1.2  christos #endif /* BITSET_H */
     41