예제 #1
0
  /**
   * Check whether an entry is set.
   *
   * @param entry The entry.
   * @return {@code true} if the entry is set in this vector.
   * @throws IllegalArgumentException if the entry is not from this vector or another vector sharing
   *     the same key domain. Only vectors and their side channels share key domains for the
   *     purposes of this check.
   */
  public boolean isSet(VectorEntry entry) {
    final SparseVector evec = entry.getVector();
    final int eind = entry.getIndex();

    if (evec == null) {
      throw new IllegalArgumentException("entry is not associated with a vector");
    } else if (!keys.isCompatibleWith(evec.keys)) {
      throw new IllegalArgumentException("entry does not have safe key domain");
    }
    assert entry.getKey() == keys.getKey(eind);
    return keys.indexIsActive(eind);
  }
예제 #2
0
  /**
   * Get the value for the entry's key.
   *
   * @param entry A {@code VectorEntry} with the key to look up
   * @return the key's value
   * @throws IllegalArgumentException if the entry is unset, or if it is not from this vector or
   *     another vector sharing the same key domain. Only vectors and their side channels share key
   *     domains for the purposes of this check.
   */
  public double get(VectorEntry entry) {
    final SparseVector evec = entry.getVector();
    final int eind = entry.getIndex();

    if (evec == null) {
      throw new IllegalArgumentException("entry is not associated with a vector");
    } else if (!evec.keys.isCompatibleWith(keys)) {
      throw new IllegalArgumentException("entry does not have safe key domain");
    }
    assert entry.getKey() == keys.getKey(eind);
    if (keys.indexIsActive(eind)) {
      return values[eind];
    } else {
      throw new IllegalArgumentException("Key " + entry.getKey() + " is not set");
    }
  }