X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/f16b08196c780556cbf50691e2944960aebc46f6..f2e1d4090df5b14fb7fdf33407df4f2bc7c5b342:/lib/bbitset.h diff --git a/lib/bbitset.h b/lib/bbitset.h index 35ff0e1f..443d2da2 100644 --- a/lib/bbitset.h +++ b/lib/bbitset.h @@ -1,5 +1,8 @@ /* Base bitset stuff. - Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc. + + Copyright (C) 2002-2004, 2006, 2009-2013 Free Software Foundation, + Inc. + Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz). This program is free software: you can redistribute it and/or modify @@ -29,9 +32,9 @@ Memory for bit array and bitset structure allocated contiguously. BITSET_LIST: Linked list of arrays of bits (variable size, least storage - for large very sparse sets). + for large very sparse sets). BITSET_TABLE: Expandable table of pointers to arrays of bits - (variable size, less storage for large sparse sets). + (variable size, less storage for large sparse sets). Faster than BITSET_LIST for random access. BITSET_VARRAY: Variable array of bits (variable size, fast for dense bitsets). @@ -39,7 +42,7 @@ statistics and/or better run-time checking. */ enum bitset_type {BITSET_ARRAY, BITSET_LIST, BITSET_TABLE, BITSET_VARRAY, - BITSET_TYPE_NUM, BITSET_STATS}; + BITSET_TYPE_NUM, BITSET_STATS}; #define BITSET_TYPE_NAMES {"abitset", "lbitset", "ebitset", "vbitset"} extern const char * const bitset_type_names[]; @@ -75,19 +78,19 @@ typedef size_t bitset_windex; #define BITSET_LIST_SIZE 1024 enum bitset_ops {BITSET_OP_ZERO, BITSET_OP_ONES, - BITSET_OP_COPY, BITSET_OP_NOT, - BITSET_OP_EMPTY_P, BITSET_OP_EQUAL_P, - BITSET_OP_SUBSET_P, BITSET_OP_DISJOINT_P, - BITSET_OP_AND, BITSET_OP_OR, BITSET_OP_XOR, BITSET_OP_ANDN, - BITSET_OP_OR_AND, BITSET_OP_AND_OR, BITSET_OP_ANDN_OR}; + BITSET_OP_COPY, BITSET_OP_NOT, + BITSET_OP_EMPTY_P, BITSET_OP_EQUAL_P, + BITSET_OP_SUBSET_P, BITSET_OP_DISJOINT_P, + BITSET_OP_AND, BITSET_OP_OR, BITSET_OP_XOR, BITSET_OP_ANDN, + BITSET_OP_OR_AND, BITSET_OP_AND_OR, BITSET_OP_ANDN_OR}; struct bbitset_struct { const struct bitset_vtable *vtable; - bitset_windex cindex; /* Cache word index. */ - bitset_windex csize; /* Cache size in words. */ - bitset_word *cdata; /* Cache data pointer. */ - bitset_bindex n_bits; /* Number of bits. */ + bitset_windex cindex; /* Cache word index. */ + bitset_windex csize; /* Cache size in words. */ + bitset_word *cdata; /* Cache data pointer. */ + bitset_bindex n_bits; /* Number of bits. */ /* Perhaps we could sacrifice another word to indicate that the bitset is known to be zero, that a bit has been set in the cache, and that a bit has been cleared in the cache. @@ -145,9 +148,9 @@ struct bitset_vtable bool (*or_and_cmp) (bitset, bitset, bitset, bitset); bitset_bindex (*list) (bitset, bitset_bindex *, bitset_bindex, - bitset_bindex *); + bitset_bindex *); bitset_bindex (*list_reverse) (bitset, bitset_bindex *, bitset_bindex, - bitset_bindex *); + bitset_bindex *); void (*free) (bitset); enum bitset_type type; };