package mikera.vectorz.impl;
import mikera.matrixx.impl.AStridedMatrix;
import mikera.vectorz.AVector;
import mikera.vectorz.Op;
import mikera.vectorz.Tools;
import mikera.vectorz.Vectorz;
import mikera.vectorz.util.DoubleArrays;
public final class StridedMatrixViewVector extends AArrayVector {
private static final long serialVersionUID = 5807998427323932401L;
private final int offset;
private final int rowStride;
private final int colStride;
private final int rows;
private final int cols;
private StridedMatrixViewVector(double[] data, int offset, int rows, int cols, int rowStride, int colStride) {
super(Tools.toInt(rows*cols),data);
this.offset=offset;
this.rows=rows;
this.cols=cols;
this.rowStride=rowStride;
this.colStride=colStride;
}
public StridedMatrixViewVector(AStridedMatrix m) {
this(m.getArray(),m.getArrayOffset(),m.rowCount(),m.columnCount(),m.rowStride(),m.columnStride());
}
@Override
public boolean isView() {
return true;
}
@Override
public boolean isFullyMutable() {
return true;
}
@Override
public boolean isMutable() {
return true;
}
@Override
public StridedMatrixViewVector exactClone() {
double[] data=this.data.clone();
return new StridedMatrixViewVector(data,offset,rows,cols,rowStride,colStride);
}
@Override
protected int index(int i) {
int r=i/cols;
int c=i%cols;
return offset+r*rowStride+c*colStride;
}
@Override
public double get(int i) {
checkIndex(i);
return unsafeGet(i);
}
@Override
public void set(int i, double value) {
checkIndex(i);
unsafeSet(i,value);
}
@Override
public void set(AVector v) {
v.checkLength(length);
for (int i=0; i
Ads help maintain this website.