public long numBits() { long numBits = 0; for( int i = codeWord.length; i-- != 0; ) numBits += codeWord[ i ].size(); return numBits; }
public long numBits() { long numBits = 0; for( int i = codeWord.length; i-- != 0; ) numBits += codeWord[ i ].size(); return numBits; }
/** Creates a new codeword-based coder using the given vector of codewords. The * coder will be able to encode symbols numbered from 0 to <code>codeWord.length-1</code>, included. * * @param codeWord a vector of codewords. * @param longCodeWord the same codewords as those specified in <code>codeWord</code>, but * as right-aligned longs written in left-to-right fashion. */ public Fast64CodeWordCoder( final BitVector[] codeWord, final long[] longCodeWord ) { super( codeWord ); this.longCodeWord = longCodeWord; length = new int[ codeWord.length ]; for( int i = length.length; i-- != 0; ) length[ i ] = codeWord[ i ].size(); }
/** Creates a new codeword-based coder using the given vector of codewords. The * coder will be able to encode symbols numbered from 0 to <code>codeWord.length-1</code>, included. * * @param codeWord a vector of codewords. * @param longCodeWord the same codewords as those specified in <code>codeWord</code>, but * as right-aligned longs written in left-to-right fashion. */ public Fast64CodeWordCoder( final BitVector[] codeWord, final long[] longCodeWord ) { super( codeWord ); this.longCodeWord = longCodeWord; length = new int[ codeWord.length ]; for( int i = length.length; i-- != 0; ) length[ i ] = codeWord[ i ].size(); }
public boolean contains( final long index ) { if ( index < 0 ) throw new IllegalArgumentException( "The provided index (" + index + ") is negative" ); if ( index < from || index >= to ) return false; return index < bitVector.size() && bitVector.getBoolean( index ); }
public boolean contains( final long index ) { if ( index < 0 ) throw new IllegalArgumentException( "The provided index (" + index + ") is negative" ); if ( index < from || index >= to ) return false; return index < bitVector.size() && bitVector.getBoolean( index ); }
public LongArrayBitVector toBitVector( final CharSequence s ) { final BitVector[] codeWord = this.codeWord; final Char2IntMap char2symbol = this.char2symbol; final int length = s.length(); int numBits = prefixFree ? codeWord[ 0 ].size() : 0; for( int i = length; i-- != 0; ) numBits += codeWord[ char2symbol.get( s.charAt( i ) ) ].size(); final LongArrayBitVector result = LongArrayBitVector.getInstance( numBits ); for( int i = 0; i < s.length(); i++ ) result.append( codeWord[ char2symbol.get( s.charAt( i ) ) ] ); if ( prefixFree ) result.append( codeWord[ 0 ] ); return result; }
public LongArrayBitVector toBitVector( final CharSequence s ) { final BitVector[] codeWord = this.codeWord; final Char2IntMap char2symbol = this.char2symbol; final int length = s.length(); int numBits = prefixFree ? codeWord[ 0 ].size() : 0; for( int i = length; i-- != 0; ) numBits += codeWord[ char2symbol.get( s.charAt( i ) ) ].size(); final LongArrayBitVector result = LongArrayBitVector.getInstance( numBits ); for( int i = 0; i < s.length(); i++ ) result.append( codeWord[ char2symbol.get( s.charAt( i ) ) ] ); if ( prefixFree ) result.append( codeWord[ 0 ] ); return result; }
public boolean remove( final long index ) { final int size = bitVector.size(); if ( index >= size ) return false; final boolean oldValue = bitVector.getBoolean( index ); bitVector.clear( index ); return oldValue; }
public int encode( final int symbol, final OutputBitStream obs ) throws IOException { final BitVector w = codeWord[ symbol ]; final int size = w.size(); for( int i = 0; i < size; i++ ) obs.writeBit( w.getBoolean( i ) ); return size; }
public boolean remove( final long index ) { final int size = bitVector.size(); if ( index >= size ) return false; final boolean oldValue = bitVector.getBoolean( index ); bitVector.clear( index ); return oldValue; }
public int encode( final int symbol, final OutputBitStream obs ) throws IOException { final BitVector w = codeWord[ symbol ]; final int size = w.size(); for( int i = 0; i < size; i++ ) obs.writeBit( w.getBoolean( i ) ); return size; }
public boolean add( final long index ) { if ( index < 0 ) throw new IllegalArgumentException( "The provided index (" + index + ") is negative" ); if ( index < from || index >= to ) return false; final int size = bitVector.size(); if ( index >= size ) bitVector.length( index + 1 ); final boolean oldValue = bitVector.getBoolean( index ); bitVector.set( index ); return ! oldValue; }
public boolean add( final long index ) { if ( index < 0 ) throw new IllegalArgumentException( "The provided index (" + index + ") is negative" ); if ( index < from || index >= to ) return false; final int size = bitVector.size(); if ( index >= size ) bitVector.length( index + 1 ); final boolean oldValue = bitVector.getBoolean( index ); bitVector.set( index ); return ! oldValue; }
public BitVector and( final BitVector v ) { for( int i = Math.min( size(), v.size() ); i-- != 0; ) if ( ! v.getBoolean( i ) ) clear( i ); return this; }
public BitVector and( final BitVector v ) { for( int i = Math.min( size(), v.size() ); i-- != 0; ) if ( ! v.getBoolean( i ) ) clear( i ); return this; }
public BitVector or( final BitVector v ) { for( int i = Math.min( size(), v.size() ); i-- != 0; ) if ( v.getBoolean( i ) ) set( i ); return this; }
public BitVector or( final BitVector v ) { for( int i = Math.min( size(), v.size() ); i-- != 0; ) if ( v.getBoolean( i ) ) set( i ); return this; }
public BitVector xor( final BitVector v ) { for( int i = Math.min( size(), v.size() ); i-- != 0; ) if ( v.getBoolean( i ) ) flip( i ); return this; }
public BitVector xor( final BitVector v ) { for( int i = Math.min( size(), v.size() ); i-- != 0; ) if ( v.getBoolean( i ) ) flip( i ); return this; }