|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface Buf
Represents a sequence of bytes along with operations to read
primitive values from it.
This interface abstracts away implementation details such as storage
mechanism, data encoding and pointer length.
It is capable of dealing with 64-bit lengths and offsets.
All of the read*
methods are safe for use from multiple
threads concurrently.
Method Summary | |
---|---|
java.io.InputStream |
createInputStream(long offset)
Returns an input stream consisting of all the bytes in this buf starting from the given offset. |
Buf |
fillNewBuf(long count,
java.io.InputStream in)
Creates a new Buf of a given length populated from a given input stream. |
long |
getLength()
Returns the extent of this buf in bytes. |
boolean |
isBigendian()
Determines the data encoding of this buf. |
boolean |
isBit64()
Determines the 64bit-ness of this buf. |
java.lang.String |
readAsciiString(Pointer ptr,
int nbyte)
Reads a fixed number of bytes interpreting them as ASCII characters and returns the result as a string. |
void |
readDataBytes(long offset,
int count,
byte[] array)
Reads a sequence of byte values from this buf into an array. |
void |
readDataDoubles(long offset,
int count,
double[] array)
Reads a sequence of double values from this buf into an array. |
void |
readDataFloats(long offset,
int count,
float[] array)
Reads a sequence of float values from this buf into an array. |
void |
readDataInts(long offset,
int count,
int[] array)
Reads a sequence of int values from this buf into an array. |
void |
readDataLongs(long offset,
int count,
long[] array)
Reads a sequence of long integer values from this buf into an array. |
void |
readDataShorts(long offset,
int count,
short[] array)
Reads a sequence of short values from this buf into an array. |
int |
readInt(Pointer ptr)
Reads a signed big-endian 4-byte integer from the pointer position. |
long |
readOffset(Pointer ptr)
Reads a file offset or size from the pointer position. |
int |
readUnsignedByte(Pointer ptr)
Reads a single byte from the pointer position, returning a value in the range 0..255. |
void |
setBit64(boolean isBit64)
Sets the 64bit-ness of this buf. |
void |
setEncoding(boolean isBigendian)
Sets the encoding for reading numeric values as performed by the readData* methods. |
Method Detail |
---|
long getLength()
int readUnsignedByte(Pointer ptr) throws java.io.IOException
ptr
- pointer
java.io.IOException
int readInt(Pointer ptr) throws java.io.IOException
ptr
- pointer
java.io.IOException
long readOffset(Pointer ptr) throws java.io.IOException
isBit64()
.
Pointer position is moved on appropriately.
java.io.IOException
java.lang.String readAsciiString(Pointer ptr, int nbyte) throws java.io.IOException
nbyte
bytes have
been read, it is taken as the end of the string.
Pointer position is moved on appropriately.
ptr
- pointernbyte
- maximum number of bytes in string
java.io.IOException
void setBit64(boolean isBit64)
readOffset
reads
4- or 8-byte values.
This method should be called before the readOffset
method is invoked.
isBit64
- true for 8-byte offsets, false for 4-byte offsetsboolean isBit64()
readOffset
reads
4- or 8-byte values.
void setEncoding(boolean isBigendian)
readData*
methods.
As currently specified, there are only two possibiliies, Big-Endian and Little-Endian. Interface and implementation would need to be reworked somewhat to accommodate the (presumably, rarely seen in this day and age) D_FLOAT and G_FLOAT encodings supported by the CDF standard.
This method should be called before any of the readData*
methods are invoked.
isBigendian
- true for big-endian, false for little-endianboolean isBigendian()
void readDataBytes(long offset, int count, byte[] array) throws java.io.IOException
offset
- position sequence start in this buffer in bytescount
- number of byte values to readarray
- array to receive values, starting at array element 0
java.io.IOException
void readDataShorts(long offset, int count, short[] array) throws java.io.IOException
offset
- position sequence start in this buffer in bytescount
- number of short values to readarray
- array to receive values, starting at array element 0
java.io.IOException
void readDataInts(long offset, int count, int[] array) throws java.io.IOException
offset
- position sequence start in this buffer in bytescount
- number of int values to readarray
- array to receive values, starting at array element 0
java.io.IOException
void readDataLongs(long offset, int count, long[] array) throws java.io.IOException
offset
- position sequence start in this buffer in bytescount
- number of long values to readarray
- array to receive values, starting at array element 0
java.io.IOException
void readDataFloats(long offset, int count, float[] array) throws java.io.IOException
offset
- position sequence start in this buffer in bytescount
- number of float values to readarray
- array to receive values, starting at array element 0
java.io.IOException
void readDataDoubles(long offset, int count, double[] array) throws java.io.IOException
offset
- position sequence start in this buffer in bytescount
- number of double values to readarray
- array to receive values, starting at array element 0
java.io.IOException
java.io.InputStream createInputStream(long offset)
offset
- position of first byte in buf that will appear in
the returned stream
Buf fillNewBuf(long count, java.io.InputStream in) throws java.io.IOException
count
- size of new buffer in bytesin
- input stream capable of supplying
(at least) count
bytes
count
filled with bytes
from in
java.io.IOException
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |