1308d2509Sflorian /* 2308d2509Sflorian * bitset.h -- Dynamic bitset. 3308d2509Sflorian * 4308d2509Sflorian * Copyright (c) 2001-2020, NLnet Labs. All rights reserved. 5308d2509Sflorian * 6308d2509Sflorian * See LICENSE for the license. 7308d2509Sflorian * 8308d2509Sflorian */ 9*3efee2e1Sflorian #ifndef BITSET_H 10*3efee2e1Sflorian #define BITSET_H 11308d2509Sflorian 12308d2509Sflorian #include <assert.h> 13308d2509Sflorian #include <limits.h> 14308d2509Sflorian #include <string.h> 15308d2509Sflorian 16308d2509Sflorian typedef struct nsd_bitset nsd_bitset_type; 17308d2509Sflorian 18308d2509Sflorian struct nsd_bitset { 19308d2509Sflorian size_t size; /** Number of available bits in the set */ 20308d2509Sflorian unsigned char bits[]; 21308d2509Sflorian }; 22308d2509Sflorian 23308d2509Sflorian size_t nsd_bitset_size(size_t bits); 24308d2509Sflorian 25308d2509Sflorian void nsd_bitset_zero(struct nsd_bitset *bset); 26308d2509Sflorian 27308d2509Sflorian void nsd_bitset_init(struct nsd_bitset *bset, size_t bits); 28308d2509Sflorian 29308d2509Sflorian int nsd_bitset_isset(struct nsd_bitset *bset, size_t bit); 30308d2509Sflorian 31308d2509Sflorian void nsd_bitset_set(struct nsd_bitset *bset, size_t bit); 32308d2509Sflorian 33308d2509Sflorian void nsd_bitset_unset(struct nsd_bitset *bset, size_t bit); 34308d2509Sflorian 35308d2509Sflorian void nsd_bitset_or( 36308d2509Sflorian struct nsd_bitset *destset, 37308d2509Sflorian struct nsd_bitset *srcset1, 38308d2509Sflorian struct nsd_bitset *srcset2); 39308d2509Sflorian 40*3efee2e1Sflorian #endif /* BITSET_H */ 41