类 ArrayStructureBB
- java.lang.Object
-
- org.meteoinfo.ndarray.Array
-
- org.meteoinfo.ndarray.ArrayStructureBak
-
- org.meteoinfo.ndarray.ArrayStructureBB
-
public class ArrayStructureBB extends ArrayStructureBak
Concrete implementation of ArrayStructure, data storage is in a ByteBuffer, which is converted to member data on the fly. In order to use this, the records must have the same size, and the member offset must be the same for each record. Use StructureMembers.setStructureSize() to set the record size. Use StructureMembers.Member.setDataParam() to set the offset of the member from the start of each record. The member data will then be located in the BB at offset = recnum * getStructureSize() + member.getDataParam(). This defers object creation for efficiency. Use getArray() and getScalar () data accessors if possible. Structure pdata = (Structure) ncfile.findVariable( name); StructureMembers members = pdata.makeStructureMembers(); members.findMember("value").setDataParam(0); // these are the offsets into the record members.findMember("x_start").setDataParam(2); members.findMember("y_start").setDataParam(4); members.findMember("direction").setDataParam(6); members.findMember("speed").setDataParam(8); int recsize = pos[1] - pos[0]; // each record must be all the same size members.setStructureSize( recsize); ArrayStructureBB asbb = new ArrayStructureBB( members, new int[] { size}, bos, pos[0]);For String members, you must store the Strings in the stringHeap. An integer index into the heap is used in the ByteBuffer.- 作者:
- caron
- 另请参阅:
Array
-
-
嵌套类概要
-
从类继承的嵌套类/接口 org.meteoinfo.ndarray.ArrayStructureBak
ArrayStructureBak.ArrayStructureIterator
-
-
构造器概要
构造器 构造器 说明 ArrayStructureBB(StructureMembers members, int[] shape)Create a new Array of type StructureData and the given members and shape.ArrayStructureBB(StructureMembers members, int[] shape, java.nio.ByteBuffer bbuffer, int offset)Construct an ArrayStructureBB with the given ByteBuffer.
-
方法概要
所有方法 静态方法 实例方法 具体方法 修饰符和类型 方法 说明 voidaddObjectToHeap(int recnum, StructureMembers.Member m, java.lang.Object s)intaddObjectToHeap(java.lang.Object s)protected intcalcOffsetSetOrder(int recnum, StructureMembers.Member m)protected voidcopyBytes(int recnum, StructureMembers.Member m, IndexIterator result)protected voidcopyChars(int recnum, StructureMembers.Member m, IndexIterator result)protected voidcopyDoubles(int recnum, StructureMembers.Member m, IndexIterator result)protected voidcopyFloats(int recnum, StructureMembers.Member m, IndexIterator result)protected voidcopyInts(int recnum, StructureMembers.Member m, IndexIterator result)protected voidcopyLongs(int recnum, StructureMembers.Member m, IndexIterator result)protected voidcopyObjects(int recnum, StructureMembers.Member m, IndexIterator result)protected voidcopyShorts(int recnum, StructureMembers.Member m, IndexIterator result)ArraygetArray(int recnum, StructureMembers.Member m)Get member data of any type for a specific record as an Array.ArraySequencegetArraySequence(int recnum, StructureMembers.Member m)Get member data of type ArraySequenceArrayStructureBakgetArrayStructure(int recnum, StructureMembers.Member m)Get member data of type array of Structure.java.nio.ByteBuffergetByteBuffer()Return backing storage as a ByteBufferjava.util.List<java.lang.Object>getHeap()DO NOT MODIFYbyte[]getJavaArrayByte(int recnum, StructureMembers.Member m)Get member data of type byte as a 1D array.char[]getJavaArrayChar(int recnum, StructureMembers.Member m)Get member data of type char as a 1D array.double[]getJavaArrayDouble(int recnum, StructureMembers.Member m)Get member data of type double as a 1D array.float[]getJavaArrayFloat(int recnum, StructureMembers.Member m)Get member data of type float as a 1D array.int[]getJavaArrayInt(int recnum, StructureMembers.Member m)Get member data of type int as a 1D array.long[]getJavaArrayLong(int recnum, StructureMembers.Member m)Get member data of type long as a 1D array.short[]getJavaArrayShort(int recnum, StructureMembers.Member m)Get member data of type short as a 1D array.java.lang.String[]getJavaArrayString(int recnum, StructureMembers.Member m)Get member data of type String as a 1D array.bytegetScalarByte(int recnum, StructureMembers.Member m)Get scalar member data of type byte.chargetScalarChar(int recnum, StructureMembers.Member m)Get scalar member data of type char.doublegetScalarDouble(int recnum, StructureMembers.Member m)Get scalar member data of type double.floatgetScalarFloat(int recnum, StructureMembers.Member m)Get scalar member data of type float.intgetScalarInt(int recnum, StructureMembers.Member m)Get scalar member data of type int.longgetScalarLong(int recnum, StructureMembers.Member m)Get scalar member data of type long.shortgetScalarShort(int recnum, StructureMembers.Member m)Get scalar member data of type short.java.lang.StringgetScalarString(int recnum, StructureMembers.Member m)Get member data of type String or char.StructureDatagetScalarStructure(int recnum, StructureMembers.Member m)Get member data of type Structure.static voidmain(java.lang.String[] argv)protected StructureDatamakeStructureData(ArrayStructureBak as, int index)static intsetOffsets(StructureMembers members)Set the offsets, based on m.getSizeBytes().voidshowInternal(java.util.Formatter f, Indent indent)static intshowOffsets(StructureMembers members, Indent indent, java.util.Formatter f)-
从类继承的方法 org.meteoinfo.ndarray.ArrayStructureBak
convertScalarDouble, convertScalarFloat, convertScalarInt, convertScalarLong, copy, copyFrom1DJavaArray, copySequences, copyStructures, copyTo1DJavaArray, createView, extractMemberArray, findMember, getArrayObject, getBoolean, getBoolean, getByte, getByte, getChar, getChar, getComplex, getComplex, getDouble, getDouble, getElementType, getFloat, getFloat, getInt, getInt, getLong, getLong, getMembers, getObject, getObject, getScalarObject, getShort, getShort, getSizeBytes, getStorage, getString, getString, getStructureData, getStructureData, getStructureDataIterator, getStructureMemberNames, getStructureMembers, getStructureSize, sectionNoReduce, setBoolean, setBoolean, setByte, setByte, setChar, setChar, setComplex, setComplex, setDouble, setDouble, setFloat, setFloat, setInt, setInt, setLong, setLong, setMemberArray, setObject, setObject, setShort, setShort, setString, setString, showInternalMembers
-
从类继承的方法 org.meteoinfo.ndarray.Array
arraycopy, copyIfView, copyTo1DJavaArray, copyToNDJavaArray, factory, factory, factory, factory, factory, factory, factory, factoryConstant, flip, get1DJavaArray, getDataAsByteBuffer, getDataAsByteBuffer, getDataAsByteBuffer, getDataType, getIndex, getIndexIterator, getIndexIteratorFast, getIndexPrivate, getRangeIterator, getRank, getShape, getSize, hasNext, isConstant, isUnsigned, isView, makeArray, makeArray, makeArray, makeArray, makeArrayRankPlusOne, next, nextBoolean, nextByte, nextChar, nextDouble, nextFloat, nextInt, nextLong, nextShort, permute, reduce, reduce, resetLocalIterator, reshape, reshapeNoCopy, reshapeVLen, section, section, section, sectionNoReduce, setUnsigned, shapeToString, slice, toString, transpose
-
-
-
-
构造器详细资料
-
ArrayStructureBB
public ArrayStructureBB(StructureMembers members, int[] shape)
Create a new Array of type StructureData and the given members and shape. Generally, you extract the byte array and fill it:byte [] result = (byte []) structureArray.getStorage();- 参数:
members- a description of the structure membersshape- the shape of the Array.
-
ArrayStructureBB
public ArrayStructureBB(StructureMembers members, int[] shape, java.nio.ByteBuffer bbuffer, int offset)
Construct an ArrayStructureBB with the given ByteBuffer.- 参数:
members- the list of structure members.shape- the shape of the structure arraybbuffer- the data is stored in this ByteBuffer. bbuffer.order must already be set.offset- offset from the start of the ByteBufffer to the first record.
-
-
方法详细资料
-
setOffsets
public static int setOffsets(StructureMembers members)
Set the offsets, based on m.getSizeBytes(). Also sets members.setStructureSize().- 参数:
members- set offsets for these members- 返回:
- the total size
-
showOffsets
public static int showOffsets(StructureMembers members, Indent indent, java.util.Formatter f)
-
makeStructureData
protected StructureData makeStructureData(ArrayStructureBak as, int index)
- 指定者:
makeStructureData在类中ArrayStructureBak
-
getByteBuffer
public java.nio.ByteBuffer getByteBuffer()
Return backing storage as a ByteBuffer- 返回:
- backing storage as a ByteBuffer
-
getScalarDouble
public double getScalarDouble(int recnum, StructureMembers.Member m)从类复制的说明:ArrayStructureBakGet scalar member data of type double.- 覆盖:
getScalarDouble在类中ArrayStructureBak- 参数:
recnum- get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m- get data from this StructureMembers.Member. Must be of type double.- 返回:
- scalar double value
-
getJavaArrayDouble
public double[] getJavaArrayDouble(int recnum, StructureMembers.Member m)从类复制的说明:ArrayStructureBakGet member data of type double as a 1D array. The member data may be any rank.- 覆盖:
getJavaArrayDouble在类中ArrayStructureBak- 参数:
recnum- get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m- get data from this StructureMembers.Member. Must be of type double.- 返回:
- double[]
-
copyDoubles
protected void copyDoubles(int recnum, StructureMembers.Member m, IndexIterator result)- 覆盖:
copyDoubles在类中ArrayStructureBak
-
getScalarFloat
public float getScalarFloat(int recnum, StructureMembers.Member m)从类复制的说明:ArrayStructureBakGet scalar member data of type float.- 覆盖:
getScalarFloat在类中ArrayStructureBak- 参数:
recnum- get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m- get data from this StructureMembers.Member. Must be of type float.- 返回:
- scalar double value
-
getArray
public Array getArray(int recnum, StructureMembers.Member m)
从类复制的说明:ArrayStructureBakGet member data of any type for a specific record as an Array. This may avoid the overhead of creating the StructureData object, but is equivilent to getStructure(recno).getArray( Member m).- 覆盖:
getArray在类中ArrayStructureBak- 参数:
recnum- get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m- get data from this StructureMembers.Member.- 返回:
- Array values.
-
getJavaArrayFloat
public float[] getJavaArrayFloat(int recnum, StructureMembers.Member m)从类复制的说明:ArrayStructureBakGet member data of type float as a 1D array.- 覆盖:
getJavaArrayFloat在类中ArrayStructureBak- 参数:
recnum- get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m- get data from this StructureMembers.Member. Must be of type float.- 返回:
- float[]
-
copyFloats
protected void copyFloats(int recnum, StructureMembers.Member m, IndexIterator result)- 覆盖:
copyFloats在类中ArrayStructureBak
-
getScalarByte
public byte getScalarByte(int recnum, StructureMembers.Member m)从类复制的说明:ArrayStructureBakGet scalar member data of type byte.- 覆盖:
getScalarByte在类中ArrayStructureBak- 参数:
recnum- get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m- get data from this StructureMembers.Member. Must be of type byte.- 返回:
- scalar double value
-
getJavaArrayByte
public byte[] getJavaArrayByte(int recnum, StructureMembers.Member m)从类复制的说明:ArrayStructureBakGet member data of type byte as a 1D array.- 覆盖:
getJavaArrayByte在类中ArrayStructureBak- 参数:
recnum- get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m- get data from this StructureMembers.Member. Must be of type byte.- 返回:
- byte[]
-
copyBytes
protected void copyBytes(int recnum, StructureMembers.Member m, IndexIterator result)- 覆盖:
copyBytes在类中ArrayStructureBak
-
getScalarShort
public short getScalarShort(int recnum, StructureMembers.Member m)从类复制的说明:ArrayStructureBakGet scalar member data of type short.- 覆盖:
getScalarShort在类中ArrayStructureBak- 参数:
recnum- get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m- get data from this StructureMembers.Member. Must be of type short.- 返回:
- scalar double value
-
getJavaArrayShort
public short[] getJavaArrayShort(int recnum, StructureMembers.Member m)从类复制的说明:ArrayStructureBakGet member data of type short as a 1D array.- 覆盖:
getJavaArrayShort在类中ArrayStructureBak- 参数:
recnum- get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m- get data from this StructureMembers.Member. Must be of type float.- 返回:
- short[]
-
copyShorts
protected void copyShorts(int recnum, StructureMembers.Member m, IndexIterator result)- 覆盖:
copyShorts在类中ArrayStructureBak
-
getScalarInt
public int getScalarInt(int recnum, StructureMembers.Member m)从类复制的说明:ArrayStructureBakGet scalar member data of type int.- 覆盖:
getScalarInt在类中ArrayStructureBak- 参数:
recnum- get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m- get data from this StructureMembers.Member. Must be of type int.- 返回:
- scalar double value
-
getJavaArrayInt
public int[] getJavaArrayInt(int recnum, StructureMembers.Member m)从类复制的说明:ArrayStructureBakGet member data of type int as a 1D array.- 覆盖:
getJavaArrayInt在类中ArrayStructureBak- 参数:
recnum- get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m- get data from this StructureMembers.Member. Must be of type int.- 返回:
- int[]
-
copyInts
protected void copyInts(int recnum, StructureMembers.Member m, IndexIterator result)- 覆盖:
copyInts在类中ArrayStructureBak
-
getScalarLong
public long getScalarLong(int recnum, StructureMembers.Member m)从类复制的说明:ArrayStructureBakGet scalar member data of type long.- 覆盖:
getScalarLong在类中ArrayStructureBak- 参数:
recnum- get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m- get data from this StructureMembers.Member. Must be of type long.- 返回:
- scalar double value
-
getJavaArrayLong
public long[] getJavaArrayLong(int recnum, StructureMembers.Member m)从类复制的说明:ArrayStructureBakGet member data of type long as a 1D array.- 覆盖:
getJavaArrayLong在类中ArrayStructureBak- 参数:
recnum- get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m- get data from this StructureMembers.Member. Must be of type long.- 返回:
- long[]
-
copyLongs
protected void copyLongs(int recnum, StructureMembers.Member m, IndexIterator result)- 覆盖:
copyLongs在类中ArrayStructureBak
-
getScalarChar
public char getScalarChar(int recnum, StructureMembers.Member m)从类复制的说明:ArrayStructureBakGet scalar member data of type char.- 覆盖:
getScalarChar在类中ArrayStructureBak- 参数:
recnum- get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m- get data from this StructureMembers.Member. Must be of type char.- 返回:
- scalar double value
-
getJavaArrayChar
public char[] getJavaArrayChar(int recnum, StructureMembers.Member m)从类复制的说明:ArrayStructureBakGet member data of type char as a 1D array.- 覆盖:
getJavaArrayChar在类中ArrayStructureBak- 参数:
recnum- get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m- get data from this StructureMembers.Member. Must be of type char.- 返回:
- char[]
-
copyChars
protected void copyChars(int recnum, StructureMembers.Member m, IndexIterator result)- 覆盖:
copyChars在类中ArrayStructureBak
-
getScalarString
public java.lang.String getScalarString(int recnum, StructureMembers.Member m)从类复制的说明:ArrayStructureBakGet member data of type String or char.- 覆盖:
getScalarString在类中ArrayStructureBak- 参数:
recnum- get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m- get data from this StructureMembers.Member. Must be of type String or char.- 返回:
- scalar String value
-
getJavaArrayString
public java.lang.String[] getJavaArrayString(int recnum, StructureMembers.Member m)从类复制的说明:ArrayStructureBakGet member data of type String as a 1D array.- 覆盖:
getJavaArrayString在类中ArrayStructureBak- 参数:
recnum- get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m- get data from this StructureMembers.Member. Must be of type String.- 返回:
- String[]
-
copyObjects
protected void copyObjects(int recnum, StructureMembers.Member m, IndexIterator result)- 覆盖:
copyObjects在类中ArrayStructureBak
-
getScalarStructure
public StructureData getScalarStructure(int recnum, StructureMembers.Member m)
从类复制的说明:ArrayStructureBakGet member data of type Structure.- 覆盖:
getScalarStructure在类中ArrayStructureBak- 参数:
recnum- get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m- get data from this StructureMembers.Member. Must be of type Structure.- 返回:
- scalar StructureData
-
getArrayStructure
public ArrayStructureBak getArrayStructure(int recnum, StructureMembers.Member m)
从类复制的说明:ArrayStructureBakGet member data of type array of Structure.- 覆盖:
getArrayStructure在类中ArrayStructureBak- 参数:
recnum- get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m- get data from this StructureMembers.Member. Must be of type Structure.- 返回:
- nested ArrayStructure.
-
getArraySequence
public ArraySequence getArraySequence(int recnum, StructureMembers.Member m)
从类复制的说明:ArrayStructureBakGet member data of type ArraySequence- 覆盖:
getArraySequence在类中ArrayStructureBak- 参数:
recnum- get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m- get data from this StructureMembers.Member. Must be of type Structure.- 返回:
- nested ArrayStructure.
-
calcOffsetSetOrder
protected int calcOffsetSetOrder(int recnum, StructureMembers.Member m)
-
addObjectToHeap
public int addObjectToHeap(java.lang.Object s)
-
addObjectToHeap
public void addObjectToHeap(int recnum, StructureMembers.Member m, java.lang.Object s)
-
getHeap
public java.util.List<java.lang.Object> getHeap()
DO NOT MODIFY- 返回:
- heap
-
showInternal
public void showInternal(java.util.Formatter f, Indent indent)- 覆盖:
showInternal在类中ArrayStructureBak
-
main
public static void main(java.lang.String[] argv)
-
-