All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.undefinedlabs.scope.deps.com.googlecode.javaewah32.EWAHIterator32 Maven / Gradle / Ivy

Go to download

Scope is a APM for tests to give engineering teams unprecedented visibility into their CI process to quickly identify, troubleshoot and fix failed builds. This artifact contains dependencies for Scope.

There is a newer version: 0.14.0-beta.2
Show newest version
package com.undefinedlabs.scope.deps.com.googlecode.javaewah32;


/*
 * Copyright 2009-2013, Daniel Lemire, Cliff Moon, David McIntosh, Robert Becho, Google Inc., Veronika Zenz and Owen Kaser
 * Licensed under the Apache License, Version 2.0.
 */

/**
 * The class EWAHIterator represents a special type of
 * efficient iterator iterating over (uncompressed) words of bits.
 *
 * @author Daniel Lemire
 * @since 0.5.0
 *
 */
public final class EWAHIterator32 implements Cloneable {
  
  /**
   * Instantiates a new eWAH iterator.
   *
   * @param a the array of words
   * @param sizeinwords the number of words that are significant in the array of words
   */
  public EWAHIterator32(final EWAHCompressedBitmap32 a, final int sizeinwords) {
    this.rlw = new RunningLengthWord32(a, 0);
    this.size = sizeinwords;
    this.pointer = 0;
  }

  /**
   * Allow expert developers to instantiate an EWAHIterator.
   * 
   * @param bitmap we want to iterate over
   * @return an iterator
   */
  public static EWAHIterator32 getEWAHIterator(EWAHCompressedBitmap32 bitmap) {
    return bitmap.getEWAHIterator();
  }
  
  /**
   * Access to the array of words
   *
   * @return the int[]
   */
  public int[] buffer() {
    return this.rlw.parent.buffer;
  }
  
  /**
   * Position of the literal words represented by this running length word.
   *
   * @return the int
   */
  public int literalWords() {
    return this.pointer - this.rlw.getNumberOfLiteralWords();
  }

  /**
   * Checks for next.
   *
   * @return true, if successful
   */
  public boolean hasNext() {
    return this.pointer < this.size;
  }

  /**
   * Next running length word.
   *
   * @return the running length word
   */
  public RunningLengthWord32 next() {
    this.rlw.position = this.pointer;
    this.pointer += this.rlw.getNumberOfLiteralWords() + 1;
    return this.rlw;
  }

	@Override
	public EWAHIterator32 clone() throws CloneNotSupportedException {
		EWAHIterator32 ans = (EWAHIterator32) super.clone();
		ans.rlw = this.rlw.clone();
		ans.size = this.size;
		ans.pointer = this.pointer;
		return ans;
	}

  /** The pointer represent the location of the current running length
   *  word in the array of words (embedded in the rlw attribute). */
  int pointer;

  /** The current running length word. */
  RunningLengthWord32 rlw;

  /** The size in words. */
  int size;

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy