public class MessageArrayCompressedReader
extends Object
Read data for uncompressed messages.
Can count bits / transfer all or some data to an Array.
Within one message there are n obs (datasets) and s fields in each dataset.
For compressed datasets, storage order is data(fld, obs) (obs varying fastest) :
Ro1, NBINC1, I11, I12, . . . I1n
Ro2, NBINC2, I21, I22, . . . I2n
...
Ros, NBINCs, Is1, Is2, . . . Isn
where Ro1, Ro2, . . . Ros are local reference values (number of bits as Table B) for field i.
NBINC1 . . . NBINCs contain, as 6-bit quantities, the number of bits occupied by the increments that follow.
If NBINC1 = 0, all values of element I are equal to Ro1; in such cases, the increments shall be omitted.
For character data, NBINC shall contain the number of octets occupied by the character element.
However, if the character data in all subsets are identical NBINC=0.
Iij is the increment for the ith field and the jth obs.
A replicated field (structure) takes a group of fields and replicates them.
Let C be the entire compressed block for the ith field, as above.
Ci = Roi, NBINCi, Ii1, Ii2, . . . Iin
data:
C1, (C2, C3)*r, ... Cs
where r is set in the data descriptor, and is the same for all datasets.
A delayed replicated field (sequence) takes a group of fields and replicates them, with the number of replications
in the data :
C1, dr, 6bits, (C2, C3)*dr, ... Cs
where the width (nbits) of dr is set in the data descriptor. This dr must be the same for each dataset in the
message.
--------------------------
LOOK For some reason there is an extra 6 bits after the dr. My guess its a programming mistake that is now needed.
There is no description of this case in the spec or the guide.
For Sequences, inner.length is the same for all datasets in the message. However, it may vary across messages.
However, we only iterate over the inner sequence, never across all messages. So the implementation can be specific to
the
message.