ucar.ma2
Class ArrayStructureBB
java.lang.Object
ucar.ma2.Array
ucar.ma2.ArrayStructure
ucar.ma2.ArrayStructureBB
- Direct Known Subclasses:
- ArrayStructureBBpos
public class ArrayStructureBB
- extends ArrayStructure
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.
- Author:
- caron
- See Also:
Array
Method Summary |
int |
addObjectToHeap(java.lang.Object s)
|
ArraySequence |
getArraySequence(int recnum,
StructureMembers.Member m)
Get member data of type ArraySequence |
ArrayStructure |
getArrayStructure(int recnum,
StructureMembers.Member m)
Get member data of type array of Structure. |
java.nio.ByteBuffer |
getByteBuffer()
Return backing storage as a ByteBuffer |
byte[] |
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. |
byte |
getScalarByte(int recnum,
StructureMembers.Member m)
Get scalar member data of type byte. |
char |
getScalarChar(int recnum,
StructureMembers.Member m)
Get scalar member data of type char. |
double |
getScalarDouble(int recnum,
StructureMembers.Member m)
Get scalar member data of type double. |
float |
getScalarFloat(int recnum,
StructureMembers.Member m)
Get scalar member data of type float. |
int |
getScalarInt(int recnum,
StructureMembers.Member m)
Get scalar member data of type int. |
long |
getScalarLong(int recnum,
StructureMembers.Member m)
Get scalar member data of type long. |
short |
getScalarShort(int recnum,
StructureMembers.Member m)
Get scalar member data of type short. |
java.lang.String |
getScalarString(int recnum,
StructureMembers.Member m)
Get member data of type String or char. |
StructureData |
getScalarStructure(int recnum,
StructureMembers.Member m)
Get member data of type Structure. |
static void |
main(java.lang.String[] argv)
|
static int |
setOffsets(StructureMembers members)
Set the offsets, based on m.getSizeBytes() |
Methods inherited from class ucar.ma2.ArrayStructure |
convertScalarDouble, convertScalarFloat, convertScalarInt, copy, createView, extractMemberArray, findMember, getArray, getArrayObject, getBoolean, getBoolean, getByte, getByte, getChar, getChar, getDouble, getDouble, getElementType, getFloat, getFloat, getInt, getInt, getLong, getLong, getMembers, getObject, getObject, getScalarObject, getShort, getShort, getSizeBytes, getStorage, getStructureData, getStructureData, getStructureDataIterator, getStructureMemberNames, getStructureMembers, getStructureSize, setBoolean, setBoolean, setByte, setByte, setChar, setChar, setDouble, setDouble, setFloat, setFloat, setInt, setInt, setLong, setLong, setMemberArray, setObject, setObject, setShort, setShort |
Methods inherited from class ucar.ma2.Array |
arraycopy, copyTo1DJavaArray, copyToNDJavaArray, factory, factory, factory, factory, factory, factory, factoryConstant, flip, get1DJavaArray, getDataAsByteBuffer, getIndex, getIndexIterator, getIndexIteratorFast, getIndexPrivate, getRangeIterator, getRank, getShape, getSize, hasNext, isUnsigned, makeArray, makeArray, makeArray, next, nextBoolean, nextByte, nextChar, nextDouble, nextFloat, nextInt, nextLong, nextShort, permute, reduce, reduce, resetLocalIterator, reshape, section, section, section, sectionNoReduce, sectionNoReduce, setUnsigned, shapeToString, slice, toString, transpose |
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
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();
- Parameters:
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.
- Parameters:
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()
- Parameters:
members
- set offsets for these members
- Returns:
- the total size
getByteBuffer
public java.nio.ByteBuffer getByteBuffer()
- Return backing storage as a ByteBuffer
- Returns:
- backing storage as a ByteBuffer
getScalarDouble
public double getScalarDouble(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get scalar member data of type double.
- Overrides:
getScalarDouble
in class ArrayStructure
- Parameters:
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.
- Returns:
- scalar double value
getJavaArrayDouble
public double[] getJavaArrayDouble(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get member data of type double as a 1D array. The member data may be any rank.
- Overrides:
getJavaArrayDouble
in class ArrayStructure
- Parameters:
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.
- Returns:
- double[]
getScalarFloat
public float getScalarFloat(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get scalar member data of type float.
- Overrides:
getScalarFloat
in class ArrayStructure
- Parameters:
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.
- Returns:
- scalar double value
getJavaArrayFloat
public float[] getJavaArrayFloat(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get member data of type float as a 1D array.
- Overrides:
getJavaArrayFloat
in class ArrayStructure
- Parameters:
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.
- Returns:
- float[]
getScalarByte
public byte getScalarByte(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get scalar member data of type byte.
- Overrides:
getScalarByte
in class ArrayStructure
- Parameters:
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.
- Returns:
- scalar double value
getJavaArrayByte
public byte[] getJavaArrayByte(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get member data of type byte as a 1D array.
- Overrides:
getJavaArrayByte
in class ArrayStructure
- Parameters:
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.
- Returns:
- byte[]
getScalarShort
public short getScalarShort(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get scalar member data of type short.
- Overrides:
getScalarShort
in class ArrayStructure
- Parameters:
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.
- Returns:
- scalar double value
getJavaArrayShort
public short[] getJavaArrayShort(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get member data of type short as a 1D array.
- Overrides:
getJavaArrayShort
in class ArrayStructure
- Parameters:
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.
- Returns:
- short[]
getScalarInt
public int getScalarInt(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get scalar member data of type int.
- Overrides:
getScalarInt
in class ArrayStructure
- Parameters:
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.
- Returns:
- scalar double value
getJavaArrayInt
public int[] getJavaArrayInt(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get member data of type int as a 1D array.
- Overrides:
getJavaArrayInt
in class ArrayStructure
- Parameters:
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.
- Returns:
- int[]
getScalarLong
public long getScalarLong(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get scalar member data of type long.
- Overrides:
getScalarLong
in class ArrayStructure
- Parameters:
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.
- Returns:
- scalar double value
getJavaArrayLong
public long[] getJavaArrayLong(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get member data of type long as a 1D array.
- Overrides:
getJavaArrayLong
in class ArrayStructure
- Parameters:
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.
- Returns:
- long[]
getScalarChar
public char getScalarChar(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get scalar member data of type char.
- Overrides:
getScalarChar
in class ArrayStructure
- Parameters:
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.
- Returns:
- scalar double value
getJavaArrayChar
public char[] getJavaArrayChar(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get member data of type char as a 1D array.
- Overrides:
getJavaArrayChar
in class ArrayStructure
- Parameters:
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.
- Returns:
- char[]
getScalarString
public java.lang.String getScalarString(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get member data of type String or char.
- Overrides:
getScalarString
in class ArrayStructure
- Parameters:
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.
- Returns:
- scalar String value
getJavaArrayString
public java.lang.String[] getJavaArrayString(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get member data of type String as a 1D array.
- Overrides:
getJavaArrayString
in class ArrayStructure
- Parameters:
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.
- Returns:
- String[]
getScalarStructure
public StructureData getScalarStructure(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get member data of type Structure.
- Overrides:
getScalarStructure
in class ArrayStructure
- Parameters:
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.
- Returns:
- scalar StructureData
getArrayStructure
public ArrayStructure getArrayStructure(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get member data of type array of Structure.
- Overrides:
getArrayStructure
in class ArrayStructure
- Parameters:
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.
- Returns:
- nested ArrayStructure.
getArraySequence
public ArraySequence getArraySequence(int recnum,
StructureMembers.Member m)
- Description copied from class:
ArrayStructure
- Get member data of type ArraySequence
- Overrides:
getArraySequence
in class ArrayStructure
- Parameters:
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.
- Returns:
- nested ArrayStructure.
addObjectToHeap
public int addObjectToHeap(java.lang.Object s)
main
public static void main(java.lang.String[] argv)