Useless::BitVector Useless::BitVector::GetSegment ( unsigned int from, unsigned int to) const { int seg = from / 32; unsigned int N = (!to)? Size() : to - from; if (seg >= _bits.size() ) return BitVector(); BitVector out; int i = 0; int val; while( i + 31 < N ) { out.SetSeg( i, GetSeg( from + i ) ); i+=32; } if ( i < N ) { int u = N - i; val = GetSeg( from + i ); if ( u > 0 ) val &= ( (1 << u) - 1 ); out.SetSeg( i, val ); } return out; }