bitmapset

正の整数をbitとして扱うための汎用ルーチン。
bitmapset.h, bitmapset.cで定義されている。

bitmapsetでは整数nは、右からn番目のビットが立った2進数へ変換されて扱われる。
例:
0 -> 00000001
1 -> 00000010
2 -> 00000100
3 -> 00001000

bitmapセットのデータ構造は以下のように定義されている。

typedef uint32 bitmapword;      /* must be an unsigned type */ 
typedef struct Bitmapset
{
    int         nwords;         /* number of words in array */
    bitmapword  words[1];       /* really [nwords] */
} Bitmapset;                    /* VARIABLE LENGTH STRUCT */

bitmapwordは32bitなので、1wordで32まで表現できる。
words配列は可変長で、扱う数値の大きさに合わせてメモリが確保される。
nwordsに配列の大きさが入る。