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