Function to reverse bits. Algorithm from: * http://graphics.stanford.edu/~seander/bithacks.html#ReverseParallel */
| 791 | /* Function to reverse bits. Algorithm from: |
| 792 | * http://graphics.stanford.edu/~seander/bithacks.html#ReverseParallel */ |
| 793 | static unsigned long rev(unsigned long v) { |
| 794 | unsigned long s = CHAR_BIT * sizeof(v); // bit size; must be power of 2 |
| 795 | unsigned long mask = ~0UL; |
| 796 | while ((s >>= 1) > 0) { |
| 797 | mask ^= (mask << s); |
| 798 | v = ((v >> s) & mask) | ((v << s) & ~mask); |
| 799 | } |
| 800 | return v; |
| 801 | } |
| 802 | |
| 803 | /* dictScan() is used to iterate over the elements of a dictionary. |
| 804 | * |