Rev | Line | |
---|
[176] | 1 | #include "bitindex.h" |
---|
| 2 | |
---|
| 3 | // Definitions of static members of BitIndex. |
---|
| 4 | |
---|
| 5 | int BitIndex::index32[32]; |
---|
| 6 | unsigned long BitIndex::on[32]; |
---|
| 7 | unsigned long BitIndex::off[32]; |
---|
| 8 | unsigned long BitIndex::lgtable[16]; |
---|
| 9 | |
---|
| 10 | // Implementations. |
---|
| 11 | |
---|
| 12 | BitIndex::BitIndex (void) |
---|
| 13 | { |
---|
| 14 | setup(); |
---|
| 15 | } |
---|
| 16 | |
---|
| 17 | |
---|
| 18 | void BitIndex::setup (void) |
---|
| 19 | { |
---|
| 20 | int t[] = { 0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3}; |
---|
| 21 | int i; |
---|
| 22 | for (i = 0; i < 32; i++) { |
---|
| 23 | index32[ (debruijn32 << i) >> 27 ] = i; |
---|
| 24 | } |
---|
| 25 | for (i = 0; i < 16; i++) { |
---|
| 26 | lgtable[i] = t[i]; |
---|
| 27 | } |
---|
| 28 | for (i = 0; i < 32; i++) { |
---|
| 29 | on[i] = 1 << i; |
---|
| 30 | off[i] = ~on[i]; |
---|
| 31 | } |
---|
| 32 | } |
---|
| 33 | |
---|
| 34 | |
---|
| 35 | |
---|
| 36 | // One instance of BitIndex so everything will work. |
---|
| 37 | |
---|
| 38 | static BitIndex _hiddenBitIndex; |
---|
Note: See
TracBrowser
for help on using the repository browser.