Package mikera.vectorz.impl

Source Code of mikera.vectorz.impl.VectorIndexScalar

package mikera.vectorz.impl;

import mikera.vectorz.AScalar;
import mikera.vectorz.AVector;
import mikera.vectorz.Scalar;
import mikera.vectorz.util.ErrorMessages;
import mikera.vectorz.util.VectorzException;

public class VectorIndexScalar extends AScalar {
  private static final long serialVersionUID = -5999714886554631904L;

  final AVector vector;
  final int index;
 
  private VectorIndexScalar(AVector vector, int index) {
    // don't check index - should be checked by caller
    this.vector=vector;
    this.index=index;
  }
 
  public static VectorIndexScalar wrap(AVector vector, int index) {
    if ((index<0)||(index>=vector.length())) throw new IndexOutOfBoundsException(ErrorMessages.invalidIndex(vector, index));
    return new VectorIndexScalar(vector,index);
  }
 
  @Override
  public double get() {
    return vector.unsafeGet(index);
  }
 
  @Override
  public void set(double value) {
    vector.unsafeSet(index,value);
  }
 
  @Override
  public boolean isMutable() {
    return vector.isMutable();
  }
 
  @Override
  public boolean isFullyMutable() {
    return vector.isFullyMutable();
  }
 
  @Override
  public boolean isView() {
    return true;
  }
 
  @Override
  public Scalar clone() {
    return new Scalar(get());
  }
 
  @Override
  public VectorIndexScalar exactClone() {
    return new VectorIndexScalar(vector.clone(),index);
  }
 
  @Override
  public AScalar mutable() {
    if (vector.isFullyMutable()) {
      return this;
    } else {
      return Scalar.create(get());
    }
  }

  @Override
  public AScalar immutable() {
    if (vector.isMutable()) {
      return ImmutableScalar.create(get());
    } else {
      return this;
    }
  }
 
  @Override
  public void validate() {
    if ((index<0)||(index>=vector.length())) throw new VectorzException("Index out of bounds");
    super.validate();
  }
}
TOP

Related Classes of mikera.vectorz.impl.VectorIndexScalar

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.