Esempio n. 1
0
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;
    }