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