public class IndexChunker extends Object
int[] read(IndexChunker index, int[] src) {
int[] dest = new int[index.getTotalNelems()];
while (index.hasNext()) {
Indexer2.Chunk chunk = index.next();
System.arraycopy(src, chunk.getSrcElem(), dest, chunk.getDestElem(), chunk.getNelems());
}
return dest;
}
int[] read(IndexChunker index, RandomAccessFile raf, long start_pos) {
int[] dest = new int[index.getTotalNelems()];
while (index.hasNext()) {
Indexer2.Chunk chunk = index.next();
raf.seek(start_pos + chunk.getSrcElem() * 4);
raf.readInt(dest, chunk.getDestElem(), chunk.getNelems());
}
return dest;
}
// note src and dest misnamed
void write(IndexChunker index, int[] src, RandomAccessFile raf, long start_pos) {
while (index.hasNext()) {
Indexer2.Chunk chunk = index.next();
raf.seek(start_pos + chunk.getSrcElem() * 4);
raf.writeInt(src, chunk.getDestElem(), chunk.getNelems());
}
}
| Modifier and Type | Class and Description |
|---|---|
static class |
IndexChunker.Chunk
A chunk of data that is contiguous in both the source and destination.
|
| Constructor and Description |
|---|
IndexChunker(int[] srcShape,
Section wantSection)
Constructor
|
| Modifier and Type | Method and Description |
|---|---|
long |
getTotalNelems()
Get total number of elements in wantSection
|
boolean |
hasNext()
If there are more chunks to process
|
IndexChunker.Chunk |
next()
Get the next chunk
|
String |
toString() |
public IndexChunker(int[] srcShape,
@Nullable
Section wantSection)
throws InvalidRangeException
srcShape - the shape of the source, eg Variable.getShape()wantSection - the wanted section in srcShape, ie must be subset of srcShape.InvalidRangeException - if wantSection is incorrectpublic long getTotalNelems()
public boolean hasNext()
public IndexChunker.Chunk next()