public void ComputeOffset() { if (first.content != null) { offset = 0; var index = this.index; var dim = dimension; var len = first.Array.GetLength(dim); if (dim >= 2) { var parent = this.parent; do { offset += index * len; --dim; len *= first.Array.GetLength(dim); index = parent.index; parent = parent.parent; } while (dim >= 2); } offset += index * len; } }
public MiddleRW(MiddleRW parent, int index) { first = parent.first; this.parent = parent; dimension = parent.dimension + 1; this.index = index; }
public LastRW(MiddleRW parent, int index) { first = parent.first; this.parent = parent; dimension = parent.dimension + 1; this.index = index; ComputeOffset(); }