Class IteratingBufferedRunningLengthWord32

java.lang.Object
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 Details

    • 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 Details

    • 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
    • discardLiteralWords

      public void discardLiteralWords(int x)
      Description copied from interface: IteratingRLW32
      Discard x literal words (assumes that there is no running word)
      Specified by:
      discardLiteralWords in interface IteratingRLW32
      Parameters:
      x - the number of words to discard
    • 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

      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