/** * D header file for FreeBSD. * * Authors: Martin Nowak */ module core.sys.freebsd.sys._bitset; version (FreeBSD): extern (C) pure nothrow @nogc: import core.stdc.config : c_long; enum NBBY = 8; // number of bits per byte enum _BITSET_BITS = c_long.sizeof * NBBY; enum __bitset_words(size_t s) = (s + _BITSET_BITS - 1) / _BITSET_BITS; c_long __bitset_mask(size_t s)(size_t n) { static if (__bitset_words!s == 1) return (cast(c_long)1) << n; else return (cast(c_long)1) << n % _BITSET_BITS; } size_t __bitset_word(size_t s)(size_t n) { static if (__bitset_words!s == 1) return 0; else return n / _BITSET_BITS; } struct BITSET_DEFINE(size_t s) { c_long[__bitset_words!s] __bits; } // no idea how to translate those //#define BITSET_T_INITIALIZER(x) \ // { .__bits = { x } } // //#define BITSET_FSET(n) \ // [ 0 ... ((n) - 1) ] = (-1L)