@Override public void fill( final boolean value ) { final int fullWords = (int)( length / Long.SIZE ); LongArrays.fill( bits, 0, fullWords, value ? 0xFFFFFFFFFFFFFFFFL : 0L ); if ( length % Long.SIZE != 0 ) { if ( value ) bits[ fullWords ] = ( 1L << length % Long.SIZE ) - 1; else bits[ fullWords ] = 0; } }
/** Clears this filter. */ public void clear() { LongArrays.fill( bits, 0 ); size = 0; }
@Override public void fill( final boolean value ) { final int fullWords = (int)( length / Long.SIZE ); LongArrays.fill( bits, 0, fullWords, value ? 0xFFFFFFFFFFFFFFFFL : 0L ); if ( length % Long.SIZE != 0 ) { if ( value ) bits[ fullWords ] = ( 1L << length % Long.SIZE ) - 1; else bits[ fullWords ] = 0; } }
/** Clears this filter. */ public void clear() { LongArrays.fill( bits, 0 ); size = 0; }
@Override public void fill( final long from, final long to, final boolean value ) { if ( to / Long.SIZE == from / Long.SIZE ) { if ( value ) bits[ (int)( from / Long.SIZE ) ] |= ( 1L << to - from ) - 1 << from; else bits[ (int)( from / Long.SIZE ) ] &= ~( ( 1L << to - from ) - 1 << from ); return; } LongArrays.fill( bits, (int)( ( from + Long.SIZE - 1 ) / Long.SIZE ), (int)( to / Long.SIZE ), value ? -1L : 0L ); if ( from % Long.SIZE != 0 ) { if ( value ) bits[ (int)( from / Long.SIZE ) ] |= -1L << from % Long.SIZE; else bits[ (int)( from / Long.SIZE ) ] &= ( 1L << from % Long.SIZE ) - 1; } if ( to % Long.SIZE != 0 ) { if ( value ) bits[ (int)( to / Long.SIZE ) ] |= ( 1L << to % Long.SIZE ) - 1; else bits[ (int)( to / Long.SIZE ) ] &= -1L << to % Long.SIZE; } }
@Override public void fill( final long from, final long to, final boolean value ) { if ( to / Long.SIZE == from / Long.SIZE ) { if ( value ) bits[ (int)( from / Long.SIZE ) ] |= ( 1L << to - from ) - 1 << from; else bits[ (int)( from / Long.SIZE ) ] &= ~( ( 1L << to - from ) - 1 << from ); return; } LongArrays.fill( bits, (int)( ( from + Long.SIZE - 1 ) / Long.SIZE ), (int)( to / Long.SIZE ), value ? -1L : 0L ); if ( from % Long.SIZE != 0 ) { if ( value ) bits[ (int)( from / Long.SIZE ) ] |= -1L << from % Long.SIZE; else bits[ (int)( from / Long.SIZE ) ] &= ( 1L << from % Long.SIZE ) - 1; } if ( to % Long.SIZE != 0 ) { if ( value ) bits[ (int)( to / Long.SIZE ) ] |= ( 1L << to % Long.SIZE ) - 1; else bits[ (int)( to / Long.SIZE ) ] &= -1L << to % Long.SIZE; } }
/** Sets the size of this bit vector to 0. * <P>Note that this method does not try to reallocate that backing array. * If you want to force that behaviour, call {@link #trim()} afterwards. */ public void clear() { LongArrays.fill( bits, 0, word( length - 1 ) + 1, 0 ); length = 0; }
/** Sets the size of this bit vector to 0. * <P>Note that this method does not try to reallocate that backing array. * If you want to force that behaviour, call {@link #trim()} afterwards. */ public void clear() { LongArrays.fill( bits, 0, word( length - 1 ) + 1, 0 ); length = 0; }
public LongArrayBitVector replace( final LongArrayBitVector bv ) { ensureCapacity( bv.length ); final long[] bits = this.bits; final long[] bvBits = bv.bits; final int bvFirstFreeWord = word( bv.length - 1 ) + 1; for( int i = bvFirstFreeWord; i-- != 0; ) bits[ i ] = bvBits[ i ]; final int thisFirstFreeWord = word( length - 1 ) + 1; if ( bvFirstFreeWord < thisFirstFreeWord ) LongArrays.fill( this.bits, bvFirstFreeWord, thisFirstFreeWord, 0 ); this.length = bv.length; return this; }
public LongArrayBitVector replace( final LongArrayBitVector bv ) { ensureCapacity( bv.length ); final long[] bits = this.bits; final long[] bvBits = bv.bits; final int bvFirstFreeWord = word( bv.length - 1 ) + 1; for( int i = bvFirstFreeWord; i-- != 0; ) bits[ i ] = bvBits[ i ]; final int thisFirstFreeWord = word( length - 1 ) + 1; if ( bvFirstFreeWord < thisFirstFreeWord ) LongArrays.fill( this.bits, bvFirstFreeWord, thisFirstFreeWord, 0 ); this.length = bv.length; return this; }
@Override public LongArrayBitVector replace( final BitVector bv ) { final long bvLength = bv.length(); ensureCapacity( bvLength ); final long[] bits = this.bits; final long fullBits = bvLength - bvLength % Long.SIZE; for( long i = 0; i < fullBits; i += Long.SIZE ) bits[ (int)( i / Long.SIZE ) ] = bv.getLong( i, i + Long.SIZE ); final int bvFirstFreeWord = word( bvLength - 1 ) + 1; final int thisFirstFreeWord = word( length - 1 ) + 1; if ( bvLength % Long.SIZE != 0 ) bits[ (int)( fullBits / Long.SIZE ) ] = bv.getLong( fullBits, bvLength ); if ( bvFirstFreeWord < thisFirstFreeWord ) LongArrays.fill( this.bits, bvFirstFreeWord, thisFirstFreeWord, 0 ); this.length = bvLength; return this; }
@Override public LongArrayBitVector replace( final BitVector bv ) { final long bvLength = bv.length(); ensureCapacity( bvLength ); final long[] bits = this.bits; final long fullBits = bvLength - bvLength % Long.SIZE; for( long i = 0; i < fullBits; i += Long.SIZE ) bits[ (int)( i / Long.SIZE ) ] = bv.getLong( i, i + Long.SIZE ); final int bvFirstFreeWord = word( bvLength - 1 ) + 1; final int thisFirstFreeWord = word( length - 1 ) + 1; if ( bvLength % Long.SIZE != 0 ) bits[ (int)( fullBits / Long.SIZE ) ] = bv.getLong( fullBits, bvLength ); if ( bvFirstFreeWord < thisFirstFreeWord ) LongArrays.fill( this.bits, bvFirstFreeWord, thisFirstFreeWord, 0 ); this.length = bvLength; return this; }