private StructureMembers createStructureMembers(UserType userType, String varname) { // Incorrect: StructureMembers sm = new StructureMembers(userType.name); StructureMembers sm = new StructureMembers(varname); for (Field fld : userType.flds) { StructureMembers.Member m = sm.addMember(fld.name, null, null, fld.ctype.dt, fld.dims); m.setDataParam(fld.offset); /* This should already have been taken care of if(fld.ctype.isVlen) {m.setShape(new int[]{-1}); } */ if (fld.ctype.dt == DataType.STRUCTURE) { UserType nested_utype = userTypes.get(fld.fldtypeid); StringBuilder partfqn = new StringBuilder(); partfqn.append(EscapeStrings.backslashEscapeCDMString(varname,".")); partfqn.append("."); partfqn.append(EscapeStrings.backslashEscapeCDMString(fld.name,".")); StructureMembers nested_sm = createStructureMembers(nested_utype,partfqn.toString()); m.setStructureMembers(nested_sm); } } sm.setStructureSize(userType.size); return sm; }
private StructureMembers createStructureMembers(UserType userType) { StructureMembers sm = new StructureMembers(userType.name); for (Field fld : userType.flds) { StructureMembers.Member m = sm.addMember(fld.name, null, null, fld.ctype.dt, fld.dims); m.setDataParam(fld.offset); /* This should already have been taken care of if(fld.ctype.isVlen) {m.setShape(new int[]{-1}); } */ if (fld.ctype.dt == DataType.STRUCTURE) { UserType nested_utype = userTypes.get(fld.fldtypeid); StructureMembers nested_sm = createStructureMembers(nested_utype); m.setStructureMembers(nested_sm); } } sm.setStructureSize(userType.size); return sm; }
private StructureMembers createStructureMembers(UserType userType) { StructureMembers sm = new StructureMembers(userType.name); for (Field fld : userType.flds) { StructureMembers.Member m = sm.addMember(fld.name, null, null, fld.ctype.dt, fld.dims); m.setDataParam(fld.offset); if (fld.ctype.isVen) { m.setShape(new int[]{-1}); } if (fld.ctype.dt == DataType.STRUCTURE) { UserType nested_utype = userTypes.get(fld.fldtypeid); StructureMembers nested_sm = createStructureMembers(nested_utype); m.setStructureMembers(nested_sm); } } sm.setStructureSize(userType.size); return sm; }
private ArrayStructure convertStructure(Structure s, Layout layout, int[] shape, byte[] byteArray) throws IOException, InvalidRangeException { // create StructureMembers - must set offsets StructureMembers sm = s.makeStructureMembers(); int calcSize = ArrayStructureBB.setOffsets(sm); // standard //ArrayStructureBB.showOffsets(sm, new Indent(2), new Formatter(System.out)); // special offset setting boolean hasHeap = convertStructure(s, sm); //ArrayStructureBB.showOffsets(sm, new Indent(2), new Formatter(System.out)); int recSize = layout.getElemSize(); if (recSize < calcSize) { log.error("calcSize = %d actualSize = %d%n", calcSize, recSize); throw new IOException("H5iosp illegal structure size " + s.getFullName()); } sm.setStructureSize(recSize); // place data into an ArrayStructureBB ByteBuffer bb = ByteBuffer.wrap(byteArray); ArrayStructureBB asbb = new ArrayStructureBB(sm, shape, bb, 0); // strings are stored on the heap, and must be read separately if (hasHeap) { int destPos = 0; for (int i = 0; i < layout.getTotalNelems(); i++) { // loop over each structure convertHeap(asbb, destPos, sm); destPos += layout.getElemSize(); } } return asbb; }
private ArrayStructure convertStructure(Structure s, Layout layout, int[] shape, byte[] byteArray) throws IOException, InvalidRangeException { // create StructureMembers - must set offsets StructureMembers sm = s.makeStructureMembers(); int calcSize = ArrayStructureBB.setOffsets(sm); // standard //ArrayStructureBB.showOffsets(sm, new Indent(2), new Formatter(System.out)); // special offset setting boolean hasHeap = convertStructure(s, sm); //ArrayStructureBB.showOffsets(sm, new Indent(2), new Formatter(System.out)); int recSize = layout.getElemSize(); if (recSize < calcSize) { log.error("calcSize = %d actualSize = %d%n", calcSize, recSize); throw new IOException("H5iosp illegal structure size " + s.getFullName()); } sm.setStructureSize(recSize); // place data into an ArrayStructureBB ByteBuffer bb = ByteBuffer.wrap(byteArray); ArrayStructureBB asbb = new ArrayStructureBB(sm, shape, bb, 0); // strings are stored on the heap, and must be read separately if (hasHeap) { int destPos = 0; for (int i = 0; i < layout.getTotalNelems(); i++) { // loop over each structure convertHeap(asbb, destPos, sm); destPos += layout.getElemSize(); } } return asbb; }
private ArrayStructure convertStructure(Structure s, Layout layout, int[] shape, byte[] byteArray) throws IOException, InvalidRangeException { // create StructureMembers - must set offsets StructureMembers sm = s.makeStructureMembers(); int calcSize = ArrayStructureBB.setOffsets(sm); // standard //ArrayStructureBB.showOffsets(sm, new Indent(2), new Formatter(System.out)); // special offset setting boolean hasHeap = convertStructure(s, sm); //ArrayStructureBB.showOffsets(sm, new Indent(2), new Formatter(System.out)); int recSize = layout.getElemSize(); if (recSize < calcSize) { log.error("calcSize = %d actualSize = %d%n", calcSize, recSize); throw new IOException("H5iosp illegal structure size " + s.getFullName()); } sm.setStructureSize(recSize); // place data into an ArrayStructureBB ByteBuffer bb = ByteBuffer.wrap(byteArray); ArrayStructureBB asbb = new ArrayStructureBB(sm, shape, bb, 0); // strings and vlens are stored on the heap, and must be read separately if (hasHeap) { int destPos = 0; for (int i = 0; i < layout.getTotalNelems(); i++) { // loop over each structure convertHeap(asbb, destPos, sm); destPos += layout.getElemSize(); } } return asbb; }
/** * Set the offsets, based on m.getSizeBytes(). * Also sets members.setStructureSize(). * @param members set offsets for these members * @return the total size */ public static int setOffsets(StructureMembers members) { int offset = 0; for (StructureMembers.Member m : members.getMembers()) { m.setDataParam(offset); offset += m.getSizeBytes(); // set inner offsets (starts again at 0) if (m.getStructureMembers() != null) setOffsets(m.getStructureMembers()); } members.setStructureSize(offset); return offset; }
/** * Set the offsets, based on m.getSizeBytes(). * Also sets members.setStructureSize(). * @param members set offsets for these members * @return the total size */ public static int setOffsets(StructureMembers members) { int offset = 0; for (StructureMembers.Member m : members.getMembers()) { m.setDataParam(offset); offset += m.getSizeBytes(); // set inner offsets (starts again at 0) if (m.getStructureMembers() != null) setOffsets(m.getStructureMembers()); } members.setStructureSize(offset); return offset; }
/** * Set the offsets, based on m.getSizeBytes(). * Also sets members.setStructureSize(). * @param members set offsets for these members * @return the total size */ public static int setOffsets(StructureMembers members) { int offset = 0; for (StructureMembers.Member m : members.getMembers()) { m.setDataParam(offset); offset += m.getSizeBytes(); // set inner offsets (starts again at 0) if (m.getStructureMembers() != null) setOffsets(m.getStructureMembers()); } members.setStructureSize(offset); return offset; }
/** * Read data * * @param name Variable name, * @param bos Data buffer, * @param vinfo variable info, * @return the arraystructure of circle struct data */ public ArrayStructure readCircleStructData(String name, ByteBuffer bos, Nidsheader.Vinfo vinfo) throws IOException, InvalidRangeException { int[] pos = vinfo.pos; int size = pos.length; Structure pdata = (Structure) ncfile.findVariable(name); int recsize = pos[1] - pos[0]; // each record must be all the same size for (int i = 1; i < size; i++) { int r = pos[i] - pos[i - 1]; if (r != recsize) System.out.println(" PROBLEM at " + i + " == " + r); } StructureMembers members = pdata.makeStructureMembers(); members.findMember("x_center").setDataParam(0); members.findMember("y_center").setDataParam(2); members.findMember("radius").setDataParam(4); members.setStructureSize(recsize); return new ArrayStructureBBpos(members, new int[]{size}, bos, pos); }
/** * Read data * * @param name Variable name, * @param bos Data buffer, * @param vinfo variable info, * @return the arraystructure of circle struct data */ public ArrayStructure readCircleStructData(String name, ByteBuffer bos, Nidsheader.Vinfo vinfo) throws IOException, InvalidRangeException { int[] pos = vinfo.pos; int size = pos.length; Structure pdata = (Structure) ncfile.findVariable(name); int recsize = pos[1] - pos[0]; // each record must be all the same size for (int i = 1; i < size; i++) { int r = pos[i] - pos[i - 1]; if (r != recsize) System.out.println(" PROBLEM at " + i + " == " + r); } StructureMembers members = pdata.makeStructureMembers(); members.findMember("x_center").setDataParam(0); members.findMember("y_center").setDataParam(2); members.findMember("radius").setDataParam(4); members.setStructureSize(recsize); return new ArrayStructureBBpos(members, new int[]{size}, bos, pos); }
/** * Read data * * @param name Variable name, * @param bos Data buffer, * @param vinfo variable info, * @return the arraystructure of circle struct data */ public ArrayStructure readCircleStructData(String name, ByteBuffer bos, Nidsheader.Vinfo vinfo) throws IOException, InvalidRangeException { int[] pos = vinfo.pos; int size = pos.length; Structure pdata = (Structure) ncfile.findVariable(name); int recsize = pos[1] - pos[0]; // each record must be all the same size for (int i = 1; i < size; i++) { int r = pos[i] - pos[i - 1]; if (r != recsize) System.out.println(" PROBLEM at " + i + " == " + r); } StructureMembers members = pdata.makeStructureMembers(); members.findMember("x_center").setDataParam(0); members.findMember("y_center").setDataParam(2); members.findMember("radius").setDataParam(4); members.setStructureSize(recsize); return new ArrayStructureBBpos(members, new int[]{size}, bos, pos); }
throw new IllegalArgumentException("Too large read: nrecs * recsize= "+(nrecs * header.recsize) +"bytes exceeds "+Integer.MAX_VALUE); members.setStructureSize((int) header.recsize); ArrayStructureBB structureArray = new ArrayStructureBB(members, new int[]{recordRange.length()});
throw new IllegalArgumentException("Too large read: nrecs * recsize= "+(nrecs * header.recsize) +"bytes exceeds "+Integer.MAX_VALUE); members.setStructureSize((int) header.recsize); ArrayStructureBB structureArray = new ArrayStructureBB(members, new int[]{recordRange.length()});
throw new IllegalArgumentException("Too large read: nrecs * recsize= "+(nrecs * header.recsize) +"bytes exceeds "+Integer.MAX_VALUE); members.setStructureSize((int) header.recsize); ArrayStructureBB structureArray = new ArrayStructureBB(members, new int[]{recordRange.length()});
members.findMember("direction").setDataParam(6); members.findMember("speed").setDataParam(8); members.setStructureSize(recsize);
members.findMember("direction").setDataParam(6); members.findMember("speed").setDataParam(8); members.setStructureSize(recsize);
members.findMember("direction").setDataParam(6); members.findMember("speed").setDataParam(8); members.setStructureSize(recsize);
m.setDataParam(minfo.offset); members.setStructureSize(recsize); ArrayStructureBB structureArray = new ArrayStructureBB(members, section.getShape()); // LOOK subset
m.setDataParam(minfo.offset); members.setStructureSize(recsize); ArrayStructureBB structureArray = new ArrayStructureBB(members, section.getShape()); // LOOK subset