类 ArrayStructureBB

  • 直接已知子类:
    ArrayStructureBBpos, ArrayStructureBBsection

    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
    • 字段详细资料

      • bbuffer

        protected java.nio.ByteBuffer bbuffer
      • bb_offset

        protected int bb_offset
    • 构造器详细资料

      • 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 members
        shape - 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 array
        bbuffer - 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)
      • 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)
        从类复制的说明: ArrayStructureBak
        Get 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)
        从类复制的说明: ArrayStructureBak
        Get 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[]
      • getScalarFloat

        public float getScalarFloat​(int recnum,
                                    StructureMembers.Member m)
        从类复制的说明: ArrayStructureBak
        Get 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)
        从类复制的说明: ArrayStructureBak
        Get 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)
        从类复制的说明: ArrayStructureBak
        Get 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[]
      • getScalarByte

        public byte getScalarByte​(int recnum,
                                  StructureMembers.Member m)
        从类复制的说明: ArrayStructureBak
        Get 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)
        从类复制的说明: ArrayStructureBak
        Get 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[]
      • getScalarShort

        public short getScalarShort​(int recnum,
                                    StructureMembers.Member m)
        从类复制的说明: ArrayStructureBak
        Get 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)
        从类复制的说明: ArrayStructureBak
        Get 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[]
      • getScalarInt

        public int getScalarInt​(int recnum,
                                StructureMembers.Member m)
        从类复制的说明: ArrayStructureBak
        Get 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)
        从类复制的说明: ArrayStructureBak
        Get 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[]
      • getScalarLong

        public long getScalarLong​(int recnum,
                                  StructureMembers.Member m)
        从类复制的说明: ArrayStructureBak
        Get 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)
        从类复制的说明: ArrayStructureBak
        Get 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[]
      • getScalarChar

        public char getScalarChar​(int recnum,
                                  StructureMembers.Member m)
        从类复制的说明: ArrayStructureBak
        Get 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)
        从类复制的说明: ArrayStructureBak
        Get 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[]
      • getScalarString

        public java.lang.String getScalarString​(int recnum,
                                                StructureMembers.Member m)
        从类复制的说明: ArrayStructureBak
        Get 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)
        从类复制的说明: ArrayStructureBak
        Get 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[]
      • getScalarStructure

        public StructureData getScalarStructure​(int recnum,
                                                StructureMembers.Member m)
        从类复制的说明: ArrayStructureBak
        Get 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)
        从类复制的说明: ArrayStructureBak
        Get 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)
        从类复制的说明: ArrayStructureBak
        Get 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.
      • addObjectToHeap

        public int addObjectToHeap​(java.lang.Object s)
      • getHeap

        public java.util.List<java.lang.Object> getHeap()
        DO NOT MODIFY
        返回:
        heap
      • main

        public static void main​(java.lang.String[] argv)