3 #ifndef __CDS_DETAILS_BIT_REVERSE_COUNTER_H
4 #define __CDS_DETAILS_BIT_REVERSE_COUNTER_H
6 #include <cds/algo/bitop.h>
9 namespace cds { namespace bitop {
11 template <typename Counter = size_t>
12 class bit_reverse_counter
15 typedef Counter counter_type;
18 counter_type m_nCounter;
19 counter_type m_nReversed;
33 for ( nBit = m_nHighBit - 1; nBit >= 0; --nBit ) {
34 if ( !cds::bitop::complement( m_nReversed, nBit ))
38 m_nReversed = m_nCounter;
48 for ( nBit = m_nHighBit - 1; nBit >= 0; --nBit ) {
49 if ( cds::bitop::complement( m_nReversed, nBit ) )
53 m_nReversed = m_nCounter;
59 counter_type value() const
64 counter_type reversed_value() const
70 }} // namespace cds::bitop
73 #endif // #ifndef __CDS_DETAILS_BIT_REVERSE_COUNTER_H