equal
deleted
inserted
replaced
70 |
70 |
71 // Values for get_next_bit_impl flip parameter. |
71 // Values for get_next_bit_impl flip parameter. |
72 static const bm_word_t find_ones_flip = 0; |
72 static const bm_word_t find_ones_flip = 0; |
73 static const bm_word_t find_zeros_flip = ~(bm_word_t)0; |
73 static const bm_word_t find_zeros_flip = ~(bm_word_t)0; |
74 |
74 |
|
75 // Threshold for performing small range operation, even when large range |
|
76 // operation was requested. Measured in words. |
|
77 static const size_t small_range_words = 32; |
|
78 |
75 protected: |
79 protected: |
76 // Return the position of bit within the word that contains it (e.g., if |
80 // Return the position of bit within the word that contains it (e.g., if |
77 // bitmap words are 32 bits, return a number 0 <= n <= 31). |
81 // bitmap words are 32 bits, return a number 0 <= n <= 31). |
78 static idx_t bit_in_word(idx_t bit) { return bit & (BitsPerWord - 1); } |
82 static idx_t bit_in_word(idx_t bit) { return bit & (BitsPerWord - 1); } |
79 |
83 |
114 void clear_range_of_words (idx_t beg, idx_t end); |
118 void clear_range_of_words (idx_t beg, idx_t end); |
115 void set_large_range_of_words (idx_t beg, idx_t end); |
119 void set_large_range_of_words (idx_t beg, idx_t end); |
116 void clear_large_range_of_words (idx_t beg, idx_t end); |
120 void clear_large_range_of_words (idx_t beg, idx_t end); |
117 |
121 |
118 static void clear_range_of_words(bm_word_t* map, idx_t beg, idx_t end); |
122 static void clear_range_of_words(bm_word_t* map, idx_t beg, idx_t end); |
|
123 |
|
124 static bool is_small_range_of_words(idx_t beg_full_word, idx_t end_full_word); |
119 |
125 |
120 // The index of the first full word in a range. |
126 // The index of the first full word in a range. |
121 idx_t word_index_round_up(idx_t bit) const; |
127 idx_t word_index_round_up(idx_t bit) const; |
122 |
128 |
123 // Verification. |
129 // Verification. |