package mikera.vectorz.impl;
import mikera.vectorz.AVector;
import mikera.vectorz.util.ErrorMessages;
/**
* Unmodifiable wrapped for arbitrary vectors
*
* @author Mike
*
*/
public class UnmodifiableVector extends BaseDerivedVector {
private static final long serialVersionUID = 2709404707262677811L;
private UnmodifiableVector(AVector source) {
super(source);
}
public UnmodifiableVector wrap(AVector v) {
return new UnmodifiableVector(v);
}
@Override
public void set(int i, double value) {
throw new UnsupportedOperationException(ErrorMessages.immutable(this));
}
@Override
public void unsafeSet(int i, double value) {
throw new UnsupportedOperationException(ErrorMessages.immutable(this));
}
@Override
public boolean isMutable() {
return false;
}
@Override
public boolean isFullyMutable() {
return false;
}
@Override
public UnmodifiableVector exactClone() {
return new UnmodifiableVector(source.exactClone());
}
@Override
public AVector subVector(int offset, int length) {
AVector ssv=source.subVector(offset, length);
if (ssv==source) return this;
return new UnmodifiableVector(ssv);
}
@Override
public AVector sparse() {
return SparseImmutableVector.create(source);
}
}