Package ucar.array
Class StructureDataStorageBB
- java.lang.Object
-
- ucar.array.StructureDataStorageBB
-
- All Implemented Interfaces:
Iterable<StructureData>
,Storage<StructureData>
public final class StructureDataStorageBB extends Object implements Storage<StructureData>
Storage for StructureDataArray with all data in a single ByteBuffer, using member's offsets and ByteOrder, and a heap for vlen data such as Strings, Vlens, and Sequences. The StructureData are manufactured on the fly, referencing the ByteBuffer and heap for data.
-
-
Constructor Summary
Constructors Constructor Description StructureDataStorageBB(StructureMembers members, ByteBuffer bbuffer, int nelems)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
arraycopy(int srcPos, Object dest, int destPos, long length)
Copies internal data to dest.StructureData
get(long elem)
Get the ith element.int
getStructureSize()
Get the total size of one Structure in bytes.Iterator<StructureData>
iterator()
Fast iterator over StructureData objects.long
length()
Number of elements.int
putOnHeap(Object s)
Put the object on the heap, return heap index.void
setMemberData(int recordOffset, StructureMembers.Member member, Array<?> data)
Copy Array data into ByteBuffer at recordOffset + member.getOffset().void
setMemberDataNested(int recordOffset, StructureMembers.Member member, Array<?> data)
Copy Array data into ByteBuffer at recordOffset + member.getOffset().-
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Constructor Detail
-
StructureDataStorageBB
public StructureDataStorageBB(StructureMembers members, ByteBuffer bbuffer, int nelems)
-
-
Method Detail
-
putOnHeap
public int putOnHeap(Object s)
Put the object on the heap, return heap index.
-
length
public long length()
Description copied from interface:Storage
Number of elements.- Specified by:
length
in interfaceStorage<StructureData>
-
get
public StructureData get(long elem)
Description copied from interface:Storage
Get the ith element.- Specified by:
get
in interfaceStorage<StructureData>
-
arraycopy
public void arraycopy(int srcPos, Object dest, int destPos, long length)
Copies internal data to dest. The parameters are different from the normal case.- Specified by:
arraycopy
in interfaceStorage<StructureData>
- Parameters:
srcPos
- the starting byte offset into dest.dest
- must be a ByteBufferdestPos
- the starting byte offset into dest.length
- number of bytes to copy.
-
getStructureSize
public int getStructureSize()
Get the total size of one Structure in bytes.
-
setMemberDataNested
public void setMemberDataNested(int recordOffset, StructureMembers.Member member, Array<?> data)
Copy Array data into ByteBuffer at recordOffset + member.getOffset().
-
setMemberData
public void setMemberData(int recordOffset, StructureMembers.Member member, Array<?> data)
Copy Array data into ByteBuffer at recordOffset + member.getOffset().
-
iterator
public Iterator<StructureData> iterator()
Fast iterator over StructureData objects.- Specified by:
iterator
in interfaceIterable<StructureData>
-
-