150397Sobrien/* 2169689Skan * bitset.h -- Dynamic bitset. 350397Sobrien * 4132718Skan * Copyright (c) 2001-2020, NLnet Labs. All rights reserved. 550397Sobrien * 6132718Skan * See LICENSE for the license. 750397Sobrien * 850397Sobrien */ 950397Sobrien#ifndef BITSET_H 1050397Sobrien#define BITSET_H 11132718Skan 1250397Sobrien#include <assert.h> 1350397Sobrien#include <limits.h> 1450397Sobrien#include <string.h> 1550397Sobrien 1650397Sobrientypedef struct nsd_bitset nsd_bitset_type; 17132718Skan 18169689Skanstruct nsd_bitset { 19169689Skan size_t size; /** Number of available bits in the set */ 2050397Sobrien unsigned char bits[]; 2150397Sobrien}; 2250397Sobrien 2350397Sobriensize_t nsd_bitset_size(size_t bits); 2450397Sobrien 2550397Sobrienvoid nsd_bitset_zero(struct nsd_bitset *bset); 2650397Sobrien 27117395Skanvoid nsd_bitset_init(struct nsd_bitset *bset, size_t bits); 2850397Sobrien 29117395Skanint nsd_bitset_isset(struct nsd_bitset *bset, size_t bit); 3050397Sobrien 3150397Sobrienvoid nsd_bitset_set(struct nsd_bitset *bset, size_t bit); 3250397Sobrien 3350397Sobrienvoid nsd_bitset_unset(struct nsd_bitset *bset, size_t bit); 3450397Sobrien 3550397Sobrienvoid nsd_bitset_or( 3650397Sobrien struct nsd_bitset *destset, 3750397Sobrien struct nsd_bitset *srcset1, 3850397Sobrien struct nsd_bitset *srcset2); 3950397Sobrien 4050397Sobrien#endif /* BITSET_H */ 4150397Sobrien