com.googlecode.javaewah32
Class IteratingBufferedRunningLengthWord32

java.lang.Object
  extended by com.googlecode.javaewah32.IteratingBufferedRunningLengthWord32
All Implemented Interfaces:
IteratingRLW32, Cloneable

public final class IteratingBufferedRunningLengthWord32
extends Object
implements IteratingRLW32, Cloneable

Mostly for internal use. Similar to BufferedRunningLengthWord32, but automatically advances to the next BufferedRunningLengthWord32 as words are discarded.

Since:
0.5.0
Author:
Daniel Lemire and David McIntosh

Constructor Summary
IteratingBufferedRunningLengthWord32(EWAHCompressedBitmap32 bitmap)
          Instantiates a new iterating buffered running length word.
IteratingBufferedRunningLengthWord32(EWAHIterator32 iterator)
          Instantiates a new iterating buffered running length word.
 
Method Summary
 IteratingBufferedRunningLengthWord32 clone()
           
 void discardFirstWords(int x)
          Discard first words, iterating to the next running length word if needed.
 void discardRunningWords()
          Discard all running words
 void discharge(BitmapStorage32 container)
          Write out the remaining words
 int discharge(BitmapStorage32 container, int max)
          Write out up to max words, returns how many were written
protected static void discharge(BufferedRunningLengthWord32 initialWord, EWAHIterator32 iterator, BitmapStorage32 container)
          For internal use.
 void dischargeAsEmpty(BitmapStorage32 container)
          Write out the remain words, transforming them to zeroes.
 int dischargeNegated(BitmapStorage32 container, int max)
          Write out up to max words (negated), returns how many were written
 int getLiteralWordAt(int index)
          Get the nth literal word for the current running length word
 int getNumberOfLiteralWords()
          Gets the number of literal words for the current running length word.
 boolean getRunningBit()
          Gets the running bit.
 int getRunningLength()
          Gets the running length.
 boolean next()
          Move to the next RunningLengthWord
 int size()
          Size in uncompressed words of the current running length word.
 void writeLiteralWords(int numWords, BitmapStorage32 container)
          write the first N literal words to the target bitmap.
 void writeNegatedLiteralWords(int numWords, BitmapStorage32 container)
          write the first N literal words (negated) to the target bitmap.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

IteratingBufferedRunningLengthWord32

public IteratingBufferedRunningLengthWord32(EWAHIterator32 iterator)
Instantiates a new iterating buffered running length word.

Parameters:
iterator - iterator

IteratingBufferedRunningLengthWord32

public IteratingBufferedRunningLengthWord32(EWAHCompressedBitmap32 bitmap)
Instantiates a new iterating buffered running length word.

Parameters:
bitmap - over which we want to iterate
Method Detail

discardFirstWords

public void discardFirstWords(int x)
Discard first words, iterating to the next running length word if needed.

Specified by:
discardFirstWords in interface IteratingRLW32
Parameters:
x - the x

discardRunningWords

public void discardRunningWords()
Description copied from interface: IteratingRLW32
Discard all running words

Specified by:
discardRunningWords in interface IteratingRLW32

discharge

public int discharge(BitmapStorage32 container,
                     int max)
Write out up to max words, returns how many were written

Parameters:
container - target for writes
max - maximal number of writes
Returns:
how many written

dischargeNegated

public int dischargeNegated(BitmapStorage32 container,
                            int max)
Write out up to max words (negated), returns how many were written

Parameters:
container - target for writes
max - maximal number of writes
Returns:
how many written

next

public boolean next()
Move to the next RunningLengthWord

Specified by:
next in interface IteratingRLW32
Returns:
whether the move was possible

dischargeAsEmpty

public void dischargeAsEmpty(BitmapStorage32 container)
Write out the remain words, transforming them to zeroes.

Parameters:
container - target for writes

discharge

public void discharge(BitmapStorage32 container)
Write out the remaining words

Parameters:
container - target for writes

getLiteralWordAt

public int getLiteralWordAt(int index)
Get the nth literal word for the current running length word

Specified by:
getLiteralWordAt in interface IteratingRLW32
Parameters:
index - zero based index
Returns:
the literal word

getNumberOfLiteralWords

public int getNumberOfLiteralWords()
Gets the number of literal words for the current running length word.

Specified by:
getNumberOfLiteralWords in interface IteratingRLW32
Returns:
the number of literal words

getRunningBit

public boolean getRunningBit()
Gets the running bit.

Specified by:
getRunningBit in interface IteratingRLW32
Returns:
the running bit

getRunningLength

public int getRunningLength()
Gets the running length.

Specified by:
getRunningLength in interface IteratingRLW32
Returns:
the running length

size

public int size()
Size in uncompressed words of the current running length word.

Specified by:
size in interface IteratingRLW32
Returns:
the int

writeLiteralWords

public void writeLiteralWords(int numWords,
                              BitmapStorage32 container)
write the first N literal words to the target bitmap. Does not discard the words or perform iteration.

Parameters:
numWords - number of words to be written
container - where we write the data

writeNegatedLiteralWords

public void writeNegatedLiteralWords(int numWords,
                                     BitmapStorage32 container)
write the first N literal words (negated) to the target bitmap. Does not discard the words or perform iteration.

Parameters:
numWords - number of words to be written
container - where we write the data

discharge

protected static void discharge(BufferedRunningLengthWord32 initialWord,
                                EWAHIterator32 iterator,
                                BitmapStorage32 container)
For internal use. (One could use the non-static discharge method instead, but we expect them to be slower.)

Parameters:
initialWord - the initial word
iterator - the iterator
container - the container

clone

public IteratingBufferedRunningLengthWord32 clone()
                                           throws CloneNotSupportedException
Specified by:
clone in interface IteratingRLW32
Overrides:
clone in class Object
Returns:
a copy of the iterator
Throws:
CloneNotSupportedException - this should not be thrown in theory


Copyright © 2014. All Rights Reserved.