@@ -23,7 +23,7 @@ namespace succinct {
2323 public:
2424
2525 typedef std::vector<uint64_t > bits_type;
26-
26+
2727 bit_vector_builder (uint64_t size = 0 , bool init = 0 )
2828 : m_size(size)
2929 {
@@ -36,11 +36,11 @@ namespace succinct {
3636 }
3737 }
3838 }
39-
39+
4040 void reserve (uint64_t size) {
4141 m_bits.reserve (detail::words_for (size));
4242 }
43-
43+
4444 inline void push_back (bool b) {
4545 uint64_t pos_in_word = m_size % 64 ;
4646 if (pos_in_word == 0 ) {
@@ -61,8 +61,8 @@ namespace succinct {
6161 }
6262
6363 inline void append_bits (uint64_t bits, size_t len) {
64- assert (len == 64 || (bits >> len) == 0 ); // check there are no spurious bits
65- if (!len) return ;
64+ assert (len == 64 || (bits >> len) == 0 ); // check there are no spurious bits
65+ if (!len) return ;
6666 uint64_t pos_in_word = m_size % 64 ;
6767 m_size += len;
6868 if (pos_in_word == 0 ) {
@@ -85,7 +85,7 @@ namespace succinct {
8585 }
8686 }
8787
88- inline void one_extend (uint64_t n)
88+ inline void one_extend (uint64_t n)
8989 {
9090 while (n >= 64 ) {
9191 append_bits (uint64_t (-1 ), 64 );
@@ -95,7 +95,7 @@ namespace succinct {
9595 append_bits (uint64_t (-1 ) >> (64 - n), n);
9696 }
9797 }
98-
98+
9999 void append (bit_vector_builder const & rhs)
100100 {
101101 uint64_t remaining = rhs.size ();
@@ -109,31 +109,31 @@ namespace succinct {
109109 }
110110 }
111111
112- // reverse in place
113- void reverse ()
114- {
115- uint64_t shift = 64 - (size () % 64 );
116-
117- uint64_t remainder = 0 ;
118- for (size_t i = 0 ; i < m_bits.size (); ++i) {
119- uint64_t cur_word;
120- if (shift != 64 ) { // this should be hoisted out
121- cur_word = remainder | (m_bits[i] << shift);
122- remainder = m_bits[i] >> (64 - shift);
123- } else {
124- cur_word = m_bits[i];
125- }
126- m_bits[i] = broadword::reverse_bits (cur_word);
127- }
128- assert (remainder == 0 );
129- std::reverse (m_bits.begin (), m_bits.end ());
130- }
112+ // reverse in place
113+ void reverse ()
114+ {
115+ uint64_t shift = 64 - (size () % 64 );
116+
117+ uint64_t remainder = 0 ;
118+ for (size_t i = 0 ; i < m_bits.size (); ++i) {
119+ uint64_t cur_word;
120+ if (shift != 64 ) { // this should be hoisted out
121+ cur_word = remainder | (m_bits[i] << shift);
122+ remainder = m_bits[i] >> (64 - shift);
123+ } else {
124+ cur_word = m_bits[i];
125+ }
126+ m_bits[i] = broadword::reverse_bits (cur_word);
127+ }
128+ assert (remainder == 0 );
129+ std::reverse (m_bits.begin (), m_bits.end ());
130+ }
131131
132132 bits_type& move_bits () {
133133 assert (detail::words_for (m_size) == m_bits.size ());
134134 return m_bits;
135135 }
136-
136+
137137 uint64_t size () const {
138138 return m_size;
139139 }
@@ -143,17 +143,17 @@ namespace succinct {
143143 m_bits.swap (other.m_bits );
144144 std::swap (m_size, other.m_size );
145145 std::swap (m_cur_word, other.m_cur_word );
146- }
146+ }
147147
148148 private:
149149 bits_type m_bits;
150150 uint64_t m_size;
151151 uint64_t * m_cur_word;
152152 };
153-
153+
154154 class bit_vector {
155155 public:
156- bit_vector ()
156+ bit_vector ()
157157 : m_size(0 )
158158 {}
159159
@@ -188,19 +188,19 @@ namespace succinct {
188188 m_size = from->size ();
189189 m_bits.steal (from->move_bits ());
190190 }
191-
191+
192192 template <typename Visitor>
193193 void map (Visitor& visit) {
194194 visit
195195 (m_size, " m_size" )
196196 (m_bits, " m_bits" );
197197 }
198-
198+
199199 void swap (bit_vector& other) {
200200 std::swap (other.m_size , m_size);
201201 other.m_bits .swap (m_bits);
202202 }
203-
203+
204204 inline size_t size () const {
205205 return m_size;
206206 }
@@ -228,18 +228,18 @@ namespace succinct {
228228 }
229229 }
230230
231- // same as get_bits(pos, 64) but it can extend further size(), padding with zeros
232- inline uint64_t get_word (uint64_t pos) const
233- {
234- assert (pos < size ());
231+ // same as get_bits(pos, 64) but it can extend further size(), padding with zeros
232+ inline uint64_t get_word (uint64_t pos) const
233+ {
234+ assert (pos < size ());
235235 uint64_t block = pos / 64 ;
236236 uint64_t shift = pos % 64 ;
237- uint64_t word = m_bits[block] >> shift;
238- if (shift && block + 1 < m_bits.size ()) {
239- word |= m_bits[block + 1 ] << (64 - shift);
240- }
241- return word;
242- }
237+ uint64_t word = m_bits[block] >> shift;
238+ if (shift && block + 1 < m_bits.size ()) {
239+ word |= m_bits[block + 1 ] << (64 - shift);
240+ }
241+ return word;
242+ }
243243
244244 inline uint64_t predecessor0 (uint64_t pos) const {
245245 assert (pos < m_size);
@@ -301,17 +301,17 @@ namespace succinct {
301301 return block * 64 + ret;
302302 }
303303
304- mapper::mappable_vector<uint64_t > const & data () const
305- {
306- return m_bits;
307- }
304+ mapper::mappable_vector<uint64_t > const & data () const
305+ {
306+ return m_bits;
307+ }
308308
309309 struct enumerator {
310310 enumerator ()
311311 : m_bv(0 )
312312 , m_pos(uint64_t (-1 ))
313313 {}
314-
314+
315315 enumerator (bit_vector const & bv, size_t pos)
316316 : m_bv(&bv)
317317 , m_pos(pos)
@@ -356,19 +356,19 @@ namespace succinct {
356356 m_avail = 0 ;
357357 fill_buf ();
358358 }
359-
359+
360360 uint64_t l = broadword::lsb (m_buf);
361361 m_buf >>= l;
362362 m_buf >>= 1 ;
363363 m_avail -= l + 1 ;
364364 m_pos += l + 1 ;
365365 return zs + l;
366366 }
367-
368- inline uint64_t position () const
369- {
370- return m_pos;
371- }
367+
368+ inline uint64_t position () const
369+ {
370+ return m_pos;
371+ }
372372
373373 private:
374374
@@ -400,16 +400,16 @@ namespace succinct {
400400 uint64_t pos_in_word = pos % 64 ;
401401 m_buf &= uint64_t (-1 ) << pos_in_word;
402402 }
403-
403+
404404 uint64_t next ()
405405 {
406406 unsigned long pos_in_word;
407407 while (!broadword::lsb (m_buf, pos_in_word)) {
408408 m_buf = m_data[++m_word_idx];
409409 }
410-
410+
411411 m_buf &= m_buf - 1 ; // clear LSB
412- return m_word_idx * 64 + pos_in_word;
412+ return m_word_idx * 64 + pos_in_word;
413413 }
414414
415415 private:
@@ -422,5 +422,5 @@ namespace succinct {
422422 size_t m_size;
423423 mapper::mappable_vector<uint64_t > m_bits;
424424 };
425-
425+
426426}
0 commit comments