private ArrayStructureBBsection(StructureMembers members, int[] shape, ByteBuffer bbuffer, Section section) { super(members, shape, bbuffer, 0); int n = (int) section.computeSize(); Section.Iterator iter = section.getIterator(shape); orgRecnum = new int[n]; int count = 0; while (iter.hasNext()) { orgRecnum[count++] = iter.next(null); } }
Section.Iterator iter = section.getIterator(prevSA.getShape()); while (iter.hasNext()) { int oldTrackIdx = iter.next(prevIndex); // gets both the oldTrackIdx (1D) and prevIndex (nD)
@Override public Array sectionNoReduce(List<Range> ranges) throws InvalidRangeException { Section viewSection = new Section(ranges); ArrayStructureW result = new ArrayStructureW(this.members, viewSection.getShape()); int count = 0; Section.Iterator iter = viewSection.getIterator(getShape()); while (iter.hasNext()) { int recno = iter.next(null); StructureData sd = getStructureData(recno); result.setStructureData(sd, count++); } return result; }
@Override public Array sectionNoReduce(List<Range> ranges) throws InvalidRangeException { Section viewSection = new Section(ranges); ArrayStructureW result = new ArrayStructureW(this.members, viewSection.getShape()); int count = 0; Section.Iterator iter = viewSection.getIterator(getShape()); while (iter.hasNext()) { int recno = iter.next(null); StructureData sd = getStructureData(recno); result.setStructureData(sd, count++); } return result; }
static private ArrayStructure sectionArrayStructure(ParsedSectionSpec child, ArrayStructure innerData, StructureMembers.Member m) throws IOException, InvalidRangeException { StructureMembers membersw = new StructureMembers(m.getStructureMembers()); // no data arrays get propagated ArrayStructureW result = new ArrayStructureW(membersw, child.section.getShape()); int count = 0; Section.Iterator iter = child.section.getIterator(child.v.getShape()); while (iter.hasNext()) { int recno = iter.next(); StructureData sd = innerData.getStructureData(recno); result.setStructureData(sd, count++); } return result; }
static private ArrayStructure sectionArrayStructure(ParsedSectionSpec child, ArrayStructure innerData, StructureMembers.Member m) throws IOException, InvalidRangeException { StructureMembers membersw = new StructureMembers(m.getStructureMembers()); // no data arrays get propagated ArrayStructureW result = new ArrayStructureW(membersw, child.section.getShape()); int count = 0; Section.Iterator iter = child.section.getIterator(child.v.getShape()); while (iter.hasNext()) { int recno = iter.next(null); StructureData sd = innerData.getStructureData(recno); result.setStructureData(sd, count++); } return result; }
static private ArrayStructure sectionArrayStructure(ParsedSectionSpec child, ArrayStructure innerData, StructureMembers.Member m) throws IOException, InvalidRangeException { StructureMembers membersw = new StructureMembers(m.getStructureMembers()); // no data arrays get propagated ArrayStructureW result = new ArrayStructureW(membersw, child.section.getShape()); int count = 0; Section.Iterator iter = child.section.getIterator(child.v.getShape()); while (iter.hasNext()) { int recno = iter.next(null); StructureData sd = innerData.getStructureData(recno); result.setStructureData(sd, count++); } return result; }
Section.Iterator iter = section.getIterator(prevSA.getShape()); while (iter.hasNext()) { int oldTrackIdx = iter.next(prevIndex); // gets both the oldTrackIdx (1D) and prevIndex (nD)
@Test public void testStride() throws InvalidRangeException { int nx = 1237; Range r = new Range(0,nx-1,9); System.out.printf("%s%n",r); System.out.printf("%d %d %d %d%n", r.first(), r.last(), r.stride(), r.length()); Assert.assertEquals(0, r.first()); Assert.assertEquals(9, r.stride()); Assert.assertEquals(138, r.length()); Assert.assertEquals(1233, r.last()); Section s = new Section( r, r); Section.Iterator iter = s.getIterator(new int[] {nx, nx}); int[] iterResult = new int[2]; int count = 0; for (int y = r.first(); y <= r.last(); y += r.stride()) { for (int x = r.first(); x <= r.last(); x += r.stride()) { assert iter.hasNext(); int iterN = iter.next(iterResult); assert iterResult[0] == y; assert iterResult[1] == x; assert iterN == y * nx + x; count++; } } Assert.assertEquals(138*138, count); } }