Package ucar.ma2
Class ArrayStructureBB
java.lang.Object
ucar.ma2.Array
ucar.ma2.ArrayStructure
ucar.ma2.ArrayStructureBB
- All Implemented Interfaces:
Iterable<StructureData>
- Direct Known Subclasses:
ArrayStructureBBpos,ArrayStructureBBsection
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.- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class ucar.ma2.ArrayStructure
ArrayStructure.ArrayStructureIterator -
Constructor Summary
ConstructorsConstructorDescriptionArrayStructureBB(StructureMembers members, int[] shape) Create a new Array of type StructureData and the given members and shape.ArrayStructureBB(StructureMembers members, int[] shape, ByteBuffer bbuffer, int offset) Construct an ArrayStructureBB with the given ByteBuffer. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddObjectToHeap(int recnum, StructureMembers.Member m, Object s) intgetArray(int recnum, StructureMembers.Member m) Get member data of any type for a specific record as an Array.getArraySequence(int recnum, StructureMembers.Member m) Get member data of type ArraySequencegetArrayStructure(int recnum, StructureMembers.Member m) Get member data of type array of Structure.Return backing storage as a ByteBuffergetHeap()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.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.getScalarString(int recnum, StructureMembers.Member m) Get member data of type String or char.getScalarStructure(int recnum, StructureMembers.Member m) Get member data of type Structure.static intsetOffsets(StructureMembers members) Set the offsets, based on m.getSizeBytes().voidshowInternal(Formatter f, Indent indent) static intshowOffsets(StructureMembers members, Indent indent, Formatter f) Methods inherited from class ucar.ma2.ArrayStructure
convertScalarDouble, convertScalarFloat, convertScalarInt, convertScalarLong, copy, createView, extractMemberArray, findMember, 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, iterator, sectionNoReduce, setBoolean, setBoolean, setByte, setByte, setChar, setChar, setDouble, setDouble, setFloat, setFloat, setInt, setInt, setLong, setLong, setMemberArray, setObject, setObject, setShort, setShort, showInternalMembersMethods inherited from class ucar.ma2.Array
arraycopy, copyTo1DJavaArray, copyToNDJavaArray, factory, factory, factory, factory, factoryConstant, factoryCopy, flip, get1DJavaArray, get1DJavaArray, getDataAsByteBuffer, getDataAsByteBuffer, getDataAsByteBuffer, getDataType, getIndex, getIndexIterator, getRangeIterator, getRank, getShape, getSize, hasNext, isConstant, isUnsigned, isVlen, makeArray, makeArray, makeArray, makeArrayRankPlusOne, makeFromJavaArray, makeFromJavaArray, makeObjectArray, makeVlenArray, next, nextBoolean, nextByte, nextChar, nextDouble, nextFloat, nextInt, nextLong, nextShort, permute, reduce, reduce, resetLocalIterator, reshape, reshapeNoCopy, section, section, section, sectionNoReduce, shapeToString, slice, toString, transposeMethods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliterator
-
Constructor Details
-
ArrayStructureBB
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
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.
-
-
Method Details
-
setOffsets
Set the offsets, based on m.getSizeBytes(). Also sets members.setStructureSize().- Parameters:
members- set offsets for these members- Returns:
- the total size
-
showOffsets
-
getByteBuffer
Return backing storage as a ByteBuffer- Returns:
- backing storage as a ByteBuffer
-
getScalarDouble
Description copied from class:ArrayStructureGet scalar member data of type double.- Overrides:
getScalarDoublein classArrayStructure- 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
Description copied from class:ArrayStructureGet member data of type double as a 1D array. The member data may be any rank.- Overrides:
getJavaArrayDoublein classArrayStructure- 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
Description copied from class:ArrayStructureGet scalar member data of type float.- Overrides:
getScalarFloatin classArrayStructure- 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
-
getArray
Description copied from class:ArrayStructureGet 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).- Overrides:
getArrayin classArrayStructure- Parameters:
recnum- get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize();m- get data from this StructureMembers.Member.- Returns:
- Array values.
-
getJavaArrayFloat
Description copied from class:ArrayStructureGet member data of type float as a 1D array.- Overrides:
getJavaArrayFloatin classArrayStructure- 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
Description copied from class:ArrayStructureGet scalar member data of type byte.- Overrides:
getScalarBytein classArrayStructure- 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
Description copied from class:ArrayStructureGet member data of type byte as a 1D array.- Overrides:
getJavaArrayBytein classArrayStructure- 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
Description copied from class:ArrayStructureGet scalar member data of type short.- Overrides:
getScalarShortin classArrayStructure- 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
Description copied from class:ArrayStructureGet member data of type short as a 1D array.- Overrides:
getJavaArrayShortin classArrayStructure- 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
Description copied from class:ArrayStructureGet scalar member data of type int.- Overrides:
getScalarIntin classArrayStructure- 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
Description copied from class:ArrayStructureGet member data of type int as a 1D array.- Overrides:
getJavaArrayIntin classArrayStructure- 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
Description copied from class:ArrayStructureGet scalar member data of type long.- Overrides:
getScalarLongin classArrayStructure- 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
Description copied from class:ArrayStructureGet member data of type long as a 1D array.- Overrides:
getJavaArrayLongin classArrayStructure- 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
Description copied from class:ArrayStructureGet scalar member data of type char.- Overrides:
getScalarCharin classArrayStructure- 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
Description copied from class:ArrayStructureGet member data of type char as a 1D array.- Overrides:
getJavaArrayCharin classArrayStructure- 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
Description copied from class:ArrayStructureGet member data of type String or char.- Overrides:
getScalarStringin classArrayStructure- 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
Description copied from class:ArrayStructureGet member data of type String as a 1D array.- Overrides:
getJavaArrayStringin classArrayStructure- 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
Description copied from class:ArrayStructureGet member data of type Structure.- Overrides:
getScalarStructurein classArrayStructure- 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
Description copied from class:ArrayStructureGet member data of type array of Structure.- Overrides:
getArrayStructurein classArrayStructure- 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
Description copied from class:ArrayStructureGet member data of type ArraySequence- Overrides:
getArraySequencein classArrayStructure- 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
-
addObjectToHeap
-
getHeap
DO NOT MODIFY- Returns:
- heap
-
showInternal
- Overrides:
showInternalin classArrayStructure
-