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 Array readStation(Variable v, Section section) throws IOException, InvalidRangeException { Structure s = (Structure) v; StructureMembers members = s.makeStructureMembers(); for (Variable v2 : s.getVariables()) { Vinfo vinfo = (Vinfo) v2.getSPobject(); StructureMembers.Member m = members.findMember(v2.getShortName()); if (vinfo != null) { m.setDataParam(vinfo.offset); //m.setVariableInfo( vinfo.size); } } int size = (int) section.computeSize(); ArrayStructureBB abb = new ArrayStructureBB(members, new int[]{size}); ByteBuffer bb = abb.getByteBuffer(); Range range = section.getRange(0); for (int idx : range) { Station station = stations.get(idx); bb.put(station.r.stationId.getBytes(CDM.utf8Charset)); bb.putFloat(station.r.lat); bb.putFloat(station.r.lon); bb.putFloat(station.r.elevMeters); bb.putInt(station.nreports); } return abb; }
private Array readStation(Variable v, Section section) throws IOException, InvalidRangeException { Structure s = (Structure) v; StructureMembers members = s.makeStructureMembers(); for (Variable v2 : s.getVariables()) { Vinfo vinfo = (Vinfo) v2.getSPobject(); StructureMembers.Member m = members.findMember(v2.getShortName()); if (vinfo != null) { m.setDataParam(vinfo.offset); //m.setVariableInfo( vinfo.size); } } int size = (int) section.computeSize(); ArrayStructureBB abb = new ArrayStructureBB(members, new int[]{size}); ByteBuffer bb = abb.getByteBuffer(); Range r = section.getRange(0); for (int i = r.first(); i <= r.last(); i += r.stride()) { Station station = stations.get(i); bb.put(station.r.stationId.getBytes(CDM.utf8Charset)); bb.putFloat(station.r.lat); bb.putFloat(station.r.lon); bb.putFloat(station.r.elevMeters); bb.putInt(station.nreports); } return abb; }
private boolean convertStructure(Structure s, StructureMembers sm ) { boolean hasHeap = false; for (StructureMembers.Member m : sm.getMembers()) { Variable v2 = s.findVariable(m.getName()); assert v2 != null; H5header.Vinfo vm = (H5header.Vinfo) v2.getSPobject(); // apparently each member may have seperate byte order (!!!??) if (vm.typeInfo.endian >= 0) m.setDataObject(vm.typeInfo.endian == RandomAccessFile.LITTLE_ENDIAN ? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN); // vm.dataPos : offset since start of Structure m.setDataParam((int) vm.dataPos); // track if there is a heap if (v2.getDataType() == DataType.STRING || v2.isVariableLength()) hasHeap = true; // recurse if (v2 instanceof Structure) { Structure nested = (Structure) v2; StructureMembers nestSm = nested.makeStructureMembers(); m.setStructureMembers(nestSm); hasHeap |= convertStructure(nested, nestSm); } } return hasHeap; }
private boolean convertStructure(Structure s, StructureMembers sm ) { boolean hasHeap = false; for (StructureMembers.Member m : sm.getMembers()) { Variable v2 = s.findVariable(m.getName()); assert v2 != null; H5header.Vinfo vm = (H5header.Vinfo) v2.getSPobject(); // apparently each member may have seperate byte order (!!!??) if (vm.typeInfo.endian >= 0) m.setDataObject(vm.typeInfo.endian == RandomAccessFile.LITTLE_ENDIAN ? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN); // vm.dataPos : offset since start of Structure m.setDataParam((int) vm.dataPos); // track if there is a heap if (v2.getDataType() == DataType.STRING || v2.isVariableLength()) hasHeap = true; // recurse if (v2 instanceof Structure) { Structure nested = (Structure) v2; StructureMembers nestSm = nested.makeStructureMembers(); m.setStructureMembers(nestSm); hasHeap |= convertStructure(nested, nestSm); } } return hasHeap; }
private boolean convertStructure(Structure s, StructureMembers sm ) { boolean hasHeap = false; for (StructureMembers.Member m : sm.getMembers()) { Variable v2 = s.findVariable(m.getName()); assert v2 != null; H5header.Vinfo vm = (H5header.Vinfo) v2.getSPobject(); // apparently each member may have seperate byte order (!!!??) if (vm.typeInfo.endian >= 0) m.setDataObject(vm.typeInfo.endian == RandomAccessFile.LITTLE_ENDIAN ? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN); // vm.dataPos : offset since start of Structure m.setDataParam((int) vm.dataPos); // track if there is a heap if (v2.getDataType() == DataType.STRING || v2.isVariableLength()) hasHeap = true; // recurse if (v2 instanceof Structure) { Structure nested = (Structure) v2; StructureMembers nestSm = nested.makeStructureMembers(); m.setStructureMembers(nestSm); hasHeap |= convertStructure(nested, nestSm); } } return hasHeap; }
public Array readReport(Variable v, Section section) throws IOException, InvalidRangeException { //coverity[FB.BC_UNCONFIRMED_CAST] Structure s = (Structure) v; StructureMembers members = s.makeStructureMembers(); for (Variable v2 : s.getVariables()) { Vinfo vinfo = (Vinfo) v2.getSPobject(); StructureMembers.Member m = members.findMember(v2.getShortName()); m.setDataParam(vinfo.offset); } int size = (int) section.computeSize(); ArrayStructureBB abb = new ArrayStructureBB(members, new int[]{size}); ByteBuffer bb = abb.getByteBuffer(); Range range = section.getRange(0); for (int idx : range) { Report report = reports.get(idx); report.loadStructureData(abb, bb); } return abb; }
public Array readReport(Variable v, Section section) throws IOException, InvalidRangeException { //coverity[FB.BC_UNCONFIRMED_CAST] Structure s = (Structure) v; StructureMembers members = s.makeStructureMembers(); for (Variable v2 : s.getVariables()) { Vinfo vinfo = (Vinfo) v2.getSPobject(); StructureMembers.Member m = members.findMember(v2.getShortName()); m.setDataParam(vinfo.offset); } int size = (int) section.computeSize(); ArrayStructureBB abb = new ArrayStructureBB(members, new int[]{size}); ByteBuffer bb = abb.getByteBuffer(); Range r = section.getRange(0); for (int i = r.first(); i <= r.last(); i += r.stride()) { Report report = reports.get(i); report.loadStructureData(abb, bb); } return abb; }
public Array readReportIndex(Variable v, Section section) throws IOException, InvalidRangeException { //coverity[FB.BC_UNCONFIRMED_CAST] Structure s = (Structure) v; StructureMembers members = s.makeStructureMembers(); for (Variable v2 : s.getVariables()) { Vinfo vinfo = (Vinfo) v2.getSPobject(); StructureMembers.Member m = members.findMember(v2.getShortName()); m.setDataParam(vinfo.offset); } int size = (int) section.computeSize(); ArrayStructureBB abb = new ArrayStructureBB(members, new int[]{size}); ByteBuffer bb = abb.getByteBuffer(); Range r = section.getRange(0); for (int i = r.first(); i <= r.last(); i += r.stride()) { Report report = reports.get(i); report.loadIndexData(bb); } return abb; }
public Array readReportIndex(Variable v, Section section) throws IOException, InvalidRangeException { //coverity[FB.BC_UNCONFIRMED_CAST] Structure s = (Structure) v; StructureMembers members = s.makeStructureMembers(); for (Variable v2 : s.getVariables()) { Vinfo vinfo = (Vinfo) v2.getSPobject(); StructureMembers.Member m = members.findMember(v2.getShortName()); m.setDataParam(vinfo.offset); } int size = (int) section.computeSize(); ArrayStructureBB abb = new ArrayStructureBB(members, new int[]{size}); ByteBuffer bb = abb.getByteBuffer(); Range range = section.getRange(0); for (int idx : range) { Report report = reports.get(idx); report.loadIndexData(bb); } return abb; }
/** * 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; }
public Array readReport(Variable v, Section section) throws IOException, InvalidRangeException { Structure s = (Structure) v; StructureMembers members = s.makeStructureMembers(); for (Variable v2 : s.getVariables()) { Vinfo vinfo = (Vinfo) v2.getSPobject(); StructureMembers.Member m = members.findMember(v2.getShortName()); m.setDataParam(vinfo.offset); } int size = (int) section.computeSize(); ArrayStructureBB abb = new ArrayStructureBB(members, new int[]{size}); ByteBuffer bb = abb.getByteBuffer(); Range r = section.getRange(0); for (int i = r.first(); i <= r.last(); i += r.stride()) { Report report = reports.get(i); report.loadStructureData(abb, bb); } return abb; }
/** * 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; }
public Array readReportIndex(Variable v, Section section) throws IOException, InvalidRangeException { Structure s = (Structure) v; StructureMembers members = s.makeStructureMembers(); for (Variable v2 : s.getVariables()) { Vinfo vinfo = (Vinfo) v2.getSPobject(); StructureMembers.Member m = members.findMember(v2.getShortName()); m.setDataParam(vinfo.offset); } int size = (int) section.computeSize(); ArrayStructureBB abb = new ArrayStructureBB(members, new int[]{size}); ByteBuffer bb = abb.getByteBuffer(); Range r = section.getRange(0); for (int i = r.first(); i <= r.last(); i += r.stride()) { Report report = reports.get(i); report.loadIndexData(bb); } return abb; }
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 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; }
/** * 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; }
CatIterator(Entry[] entries, Structure useStructure) { this.entries = entries; members = useStructure.makeStructureMembers(); for (Variable v2 : useStructure.getVariables()) { Vinfo vinfo = (Vinfo) v2.getSPobject(); StructureMembers.Member m = members.findMember(v2.getShortName()); m.setDataParam(vinfo.offset); } }
CatIterator(Entry[] entries, Structure useStructure) { this.entries = entries; members = useStructure.makeStructureMembers(); for (Variable v2 : useStructure.getVariables()) { Vinfo vinfo = (Vinfo) v2.getSPobject(); StructureMembers.Member m = members.findMember(v2.getShortName()); m.setDataParam(vinfo.offset); } }
CatIterator(Entry[] entries, Structure useStructure) { this.entries = entries; members = useStructure.makeStructureMembers(); for (Variable v2 : useStructure.getVariables()) { Vinfo vinfo = (Vinfo) v2.getSPobject(); StructureMembers.Member m = members.findMember(v2.getShortName()); m.setDataParam(vinfo.offset); } }