void convertHeap(ArrayStructureBB asbb, int pos, StructureMembers sm) throws java.io.IOException, InvalidRangeException { ByteBuffer bb = asbb.getByteBuffer(); for (StructureMembers.Member m : sm.getMembers()) { if (m.getDataType() == DataType.STRING) { m.setDataObject(ByteOrder.nativeOrder()); // the index is always written in "native order" int size = m.getSize(); int destPos = pos + m.getDataParam(); String[] result = new String[size]; for (int i = 0; i < size; i++) result[i] = headerParser.readHeapString(bb, destPos + i * 16); // 16 byte "heap ids" are in the ByteBuffer int index = asbb.addObjectToHeap(result); bb.order(ByteOrder.nativeOrder()); // the string index is always written in "native order" bb.putInt(destPos, index); // overwrite with the index into the StringHeap } else if (m.isVariableLength()) { int destPos = pos + m.getDataParam(); bb.order(ByteOrder.LITTLE_ENDIAN); ByteOrder bo = (ByteOrder) m.getDataObject(); int endian = bo.equals(ByteOrder.LITTLE_ENDIAN) ? RandomAccessFile.LITTLE_ENDIAN : RandomAccessFile.BIG_ENDIAN; Array vlenArray = headerParser.readHeapVlen(bb, destPos, m.getDataType(), endian); int index = asbb.addObjectToHeap(vlenArray); bb.order(ByteOrder.nativeOrder()); // the string index is always written in "native order" bb.putInt(destPos, index); // overwrite with the index into the StringHeap } } }
for (StructureMembers.Member m : sm.getMembers()) { if (m.getDataType() == DataType.STRING) { m.setDataObject(ByteOrder.nativeOrder()); // the index is always written in "native order" int size = m.getSize(); int destPos = pos + m.getDataParam();
for (StructureMembers.Member m : sm.getMembers()) { if (m.getDataType() == DataType.STRING) { m.setDataObject(ByteOrder.nativeOrder()); // the index is always written in "native order" int size = m.getSize(); int destPos = pos + m.getDataParam();
m.setDataObject(h5sm.mdt.endian == RandomAccessFile.LITTLE_ENDIAN ? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN);
m.setDataObject( data.getIndexIterator());
m.setDataObject( data.getIndexIterator());
for (StructureMembers.Member m : memberList) { Array data = m.getDataArray(); m.setDataObject(data.getIndexIterator()); // for setting values
m.setDataObject( data.getIndexIterator());
public static void setIterators(ArrayStructureMA ama) { StructureMembers sms = ama.getStructureMembers(); for (StructureMembers.Member sm : sms.getMembers()) { //System.out.printf("doin %s%n", sm.getName()); //if (sm.getName().startsWith("first")) // System.out.println("HEY"); Array data = sm.getDataArray(); if (data instanceof ArrayStructureMA) { setIterators( (ArrayStructureMA) data); } else { int[] shape = data.getShape(); if ((shape.length > 1) && (sm.getDataType() != DataType.CHAR)) { Array datap; if (shape.length == 2) datap = data.transpose(0, 1); else { int[] pdims = new int[shape.length]; // (0,1,2,3...) -> (1,2,3...,0) for (int i=0; i< shape.length-1; i++) pdims[i] = i+1; datap = data.permute( pdims); } sm.setDataObject(datap.getIndexIterator()); } else { sm.setDataObject(data.getIndexIterator()); } } } }
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 static void setIterators(ArrayStructureMA ama) { StructureMembers sms = ama.getStructureMembers(); for (StructureMembers.Member sm : sms.getMembers()) { //System.out.printf("doin %s%n", sm.getName()); //if (sm.getName().startsWith("first")) // System.out.println("HEY"); Array data = sm.getDataArray(); if (data instanceof ArrayStructureMA) { setIterators( (ArrayStructureMA) data); } else { int[] shape = data.getShape(); if ((shape.length > 1) && (sm.getDataType() != DataType.CHAR)) { Array datap; if (shape.length == 2) datap = data.transpose(0, 1); else { int[] pdims = new int[shape.length]; // (0,1,2,3...) -> (1,2,3...,0) for (int i=0; i< shape.length-1; i++) pdims[i] = i+1; datap = data.permute( pdims); } sm.setDataObject(datap.getIndexIterator()); } else { sm.setDataObject(data.getIndexIterator()); } } } }
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 StructureDataRegexp.Vinfo setVinfo(RandomAccessFile raff, NetcdfFile ncfile, Pattern p, String seqName) { Sequence seq = (Sequence) ncfile.findVariable(seqName); StructureMembers sm = seq.makeStructureMembers(); StructureDataRegexp.Vinfo result = new StructureDataRegexp.Vinfo(raff, sm, p); seq.setSPobject(result); int fldno = 1; for (StructureMembers.Member m : sm.getMembers()) { StructureDataRegexp.VinfoField vf = new StructureDataRegexp.VinfoField(fldno++); Variable v = seq.findVariable(m.getName()); Attribute att = v.findAttribute("iosp_scale"); if (att != null) { vf.hasScale = true; vf.scale = att.getNumericValue().floatValue(); v.remove(att); } m.setDataObject( vf); } return result; }
private StructureDataRegexp.Vinfo setVinfo(RandomAccessFile raff, NetcdfFile ncfile, Pattern p, String seqName) { Sequence seq = (Sequence) ncfile.findVariable(seqName); StructureMembers sm = seq.makeStructureMembers(); StructureDataRegexp.Vinfo result = new StructureDataRegexp.Vinfo(raff, sm, p); seq.setSPobject(result); int fldno = 1; for (StructureMembers.Member m : sm.getMembers()) { StructureDataRegexp.VinfoField vf = new StructureDataRegexp.VinfoField(fldno++); Variable v = seq.findVariable(m.getName()); Attribute att = v.findAttribute("iosp_scale"); if (att != null) { vf.hasScale = true; vf.scale = att.getNumericValue().floatValue(); //v.remove(att); } m.setDataObject(vf); } return result; }
private StructureDataRegexp.Vinfo setVinfo(RandomAccessFile raff, NetcdfFile ncfile, Pattern p, String seqName) { Sequence seq = (Sequence) ncfile.findVariable(seqName); StructureMembers sm = seq.makeStructureMembers(); StructureDataRegexp.Vinfo result = new StructureDataRegexp.Vinfo(raff, sm, p); seq.setSPobject(result); int fldno = 1; for (StructureMembers.Member m : sm.getMembers()) { StructureDataRegexp.VinfoField vf = new StructureDataRegexp.VinfoField(fldno++); Variable v = seq.findVariable(m.getName()); Attribute att = v.findAttribute("iosp_scale"); if (att != null) { vf.hasScale = true; vf.scale = att.getNumericValue().floatValue(); //v.remove(att); } m.setDataObject(vf); } return result; }
private StructureDataRegexp.Vinfo setVinfo(RandomAccessFile raff, NetcdfFile ncfile, Pattern p, String seqName) { Sequence seq = (Sequence) ncfile.findVariable(seqName); StructureMembers sm = seq.makeStructureMembers(); StructureDataRegexp.Vinfo result = new StructureDataRegexp.Vinfo(raff, sm, p); seq.setSPobject(result); int fldno = 1; for (StructureMembers.Member m : sm.getMembers()) { StructureDataRegexp.VinfoField vf = new StructureDataRegexp.VinfoField(fldno++); Variable v = seq.findVariable(m.getName()); Attribute att = v.findAttribute("iosp_scale"); if (att != null) { vf.hasScale = true; vf.scale = att.getNumericValue().floatValue(); v.remove(att); } m.setDataObject( vf); } return result; }
private StructureDataRegexp.Vinfo setVinfo(RandomAccessFile raff, NetcdfFile ncfile, Pattern p, String seqName) { Sequence seq = (Sequence) ncfile.findVariable(seqName); StructureMembers sm = seq.makeStructureMembers(); StructureDataRegexp.Vinfo result = new StructureDataRegexp.Vinfo(raff, sm, p); seq.setSPobject(result); int fldno = 1; for (StructureMembers.Member m : sm.getMembers()) { StructureDataRegexp.VinfoField vf = new StructureDataRegexp.VinfoField(fldno++); Variable v = seq.findVariable(m.getName()); Attribute att = v.findAttribute("iosp_scale"); if (att != null) { vf.hasScale = true; vf.scale = att.getNumericValue().floatValue(); //v.remove(att); } m.setDataObject(vf); } return result; }
private StructureDataRegexp.Vinfo setVinfo(RandomAccessFile raff, NetcdfFile ncfile, Pattern p, String seqName) { Sequence seq = (Sequence) ncfile.findVariable(seqName); StructureMembers sm = seq.makeStructureMembers(); StructureDataRegexp.Vinfo result = new StructureDataRegexp.Vinfo(raff, sm, p); seq.setSPobject(result); int fldno = 1; for (StructureMembers.Member m : sm.getMembers()) { StructureDataRegexp.VinfoField vf = new StructureDataRegexp.VinfoField(fldno++); Variable v = seq.findVariable(m.getName()); Attribute att = v.findAttribute("iosp_scale"); if (att != null) { vf.hasScale = true; vf.scale = att.getNumericValue().floatValue(); v.remove(att); } m.setDataObject( vf); } return result; }
private ArrayStructure makeArrayStructure(DodsV dataV) { StructureMembers members = new StructureMembers( dataV.getNetcdfShortName()); for (DodsV dodsV : dataV.children) { StructureMembers.Member m = members.addMember(dodsV.getNetcdfShortName(), null, null, dodsV.getDataType(), dodsV.getShape()); Array data; if ((dodsV.bt instanceof DStructure) || (dodsV.bt instanceof DGrid)) { data = makeArrayStructure(dodsV); } else if (dodsV.bt instanceof DSequence) { data = makeArrayNestedSequence(dodsV); m.setShape(data.getShape()); // fix the shape based on the actual data LOOK } else { data = Array.factory(dodsV.getDataType(), dodsV.getShapeAll()); } m.setDataArray(data); m.setDataObject(data.getIndexIterator()); // for setting values } return new ArrayStructureMA( members, dataV.getShapeAll()); }