activemq-cpp-3.6.0
decaf::io::DataInput Class Reference

The DataInput interface provides for reading bytes from a binary stream and reconstructing from them data in any of the C++ primitive types. More...

#include <src/main/decaf/io/DataInput.h>

Public Member Functions

virtual ~DataInput ()
virtual bool readBoolean ()=0
 Reads in one byte and returns true if that byte is nonzero, false if that byte is zero.
virtual char readByte ()=0
 Reads and returns one input byte.
virtual unsigned char readUnsignedByte ()=0
 Reads one input byte, zero-extends it to type int, and returns the result, which is therefore in the range 0 through 255.
virtual char readChar ()=0
 Reads an input char and returns the char value.
virtual double readDouble ()=0
 Reads eight input bytes and returns a double value.
virtual float readFloat ()=0
 Reads four input bytes and returns a float value.
virtual int readInt ()=0
 Reads four input bytes and returns an int value.
virtual long long readLong ()=0
 Reads eight input bytes and returns a long value.
virtual short readShort ()=0
 Reads two input bytes and returns a short value.
virtual unsigned short readUnsignedShort ()=0
 Reads two input bytes and returns an int value in the range 0 through 65535.
virtual std::string readString ()=0
 Reads an NULL terminated ASCII string to the stream and returns the string to the caller.
virtual std::string readLine ()=0
 Reads the next line of text from the input stream.
virtual std::string readUTF ()=0
 Reads a modified UTF-8 encoded string in ASCII format and returns it, this is only useful if you know for sure that the string that is to be read was a string that contained all ASCII values (0-255), if so this method will throw a UTFFormatException.
virtual void readFully (unsigned char *buffer, int size)=0
 Reads some bytes from an input stream and stores them into the buffer array buffer.
virtual void readFully (unsigned char *buffer, int size, int offset, int length)=0
 Reads length bytes from an input stream.
virtual long long skipBytes (long long num)=0
 Makes an attempt to skip over n bytes of data from the input stream, discarding the skipped bytes.

Detailed Description

The DataInput interface provides for reading bytes from a binary stream and reconstructing from them data in any of the C++ primitive types.

There is also a facility for reconstructing Strings from data in the Java standard modified UTF-8 format.

It is generally true of all the reading routines in this interface that if end of file is reached before the desired number of bytes has been read, an EOFException is thrown. If any byte cannot be read for any reason other than end of file, an IOException other than EOFException is thrown. for example, an IOException may be thrown if the underlying input stream has been closed.

See Also
DataOutput
DataInputStream
Since
1.0

Constructor & Destructor Documentation

virtual decaf::io::DataInput::~DataInput ( )
virtual

Member Function Documentation

virtual bool decaf::io::DataInput::readBoolean ( )
pure virtual

Reads in one byte and returns true if that byte is nonzero, false if that byte is zero.

Returns
the boolean value of the read in byte (0=false, 1=true).
Exceptions
IOExceptionif an I/O Error occurs.
EOFExceptionif the end of input is reached.
virtual char decaf::io::DataInput::readByte ( )
pure virtual

Reads and returns one input byte.

The byte is treated as a signed value in the range -128 through 127, inclusive.

Returns
the 8-bit value read.
Exceptions
IOExceptionif an I/O Error occurs.
EOFExceptionif the end of input is reached.
virtual char decaf::io::DataInput::readChar ( )
pure virtual

Reads an input char and returns the char value.

A ascii char is made up of one bytes. This returns the same result as readByte

Returns
the 8 bit char read.
Exceptions
IOExceptionif an I/O Error occurs.
EOFExceptionif the end of input is reached.
virtual double decaf::io::DataInput::readDouble ( )
pure virtual

Reads eight input bytes and returns a double value.

It does this by first constructing a long long value in exactly the manner of the readlong method, then converting this long value to a double in exactly the manner of the method Double::longBitsToDouble.

Returns
the double value read.
Exceptions
IOExceptionif an I/O Error occurs.
EOFExceptionif the end of input is reached.
virtual float decaf::io::DataInput::readFloat ( )
pure virtual

Reads four input bytes and returns a float value.

It does this by first constructing an int value in exactly the manner of the readInt method, then converting this int value to a float in exactly the manner of the method Float::intBitsToFloat.

Returns
the float value read.
Exceptions
IOExceptionif an I/O Error occurs.
EOFExceptionif the end of input is reached.
virtual void decaf::io::DataInput::readFully ( unsigned char *  buffer,
int  size 
)
pure virtual

Reads some bytes from an input stream and stores them into the buffer array buffer.

The number of bytes read is equal to the length of buffer.

This method blocks until one of the following conditions occurs:

  • buffer's size bytes of input data are available, in which case a normal return is made.
  • End of file is detected, in which case an EOFException is thrown.
  • An I/O error occurs, in which case an IOException other than EOFException is thrown.

If buffer size is zero, then no bytes are read. Otherwise, the first byte read is stored into element b[0], the next one into buffer[1], and so on. If an exception is thrown from this method, then it may be that some but not all bytes of buffer have been updated with data from the input stream.

Parameters
bufferThe byte array to insert read data into.
sizeThe size in bytes of the given byte buffer.
Exceptions
IOExceptionif an I/O Error occurs.
EOFExceptionif the end of input is reached.
IndexOutOfBoundsExceptionif the size value is negative.
virtual void decaf::io::DataInput::readFully ( unsigned char *  buffer,
int  size,
int  offset,
int  length 
)
pure virtual

Reads length bytes from an input stream.

This method blocks until one of the following conditions occurs:

  • length bytes of input data are available, in which case a normal return is made.
  • End of file is detected, in which case an EOFException is thrown.
  • An I/O error occurs, in which case an IOException other than EOFException is thrown.

If buffer is NULL, a NullPointerException is thrown. If offset+length is greater than the length of the array buffer, then an IndexOutOfBoundsException is thrown. If length is zero, then no bytes are read. Otherwise, the first byte read is stored into element buffer[off], the next one into buffer[offset+1], and so on. The number of bytes read is, at most, equal to length.

Parameters
bufferThe byte array to insert read data into.
sizeThe size in bytes of the given byte buffer.
offsetThe location in buffer to start writing.
lengthThe number of bytes to read from the buffer.
Exceptions
IOExceptionif an I/O Error occurs.
EOFExceptionif the end of input is reached.
NullPointerExceptionif the buffer is NULL.
IndexOutOfBoundsExceptionif the offset + length > size, or an int param is negative.
virtual int decaf::io::DataInput::readInt ( )
pure virtual

Reads four input bytes and returns an int value.

Let a be the first byte read, b be the second byte, c be the third byte, and d be the fourth byte. The value returned is:

(((a & 0xff) << 24) | ((b & 0xff) << 16) | ((c & 0xff) << 8) | (d & 0xff))

Returns
the int value read.
Exceptions
IOExceptionif an I/O Error occurs.
EOFExceptionif the end of input is reached.
virtual std::string decaf::io::DataInput::readLine ( )
pure virtual

Reads the next line of text from the input stream.

It reads successive bytes, converting each byte to an ASCII char separately, until it encounters a line terminator or end of file; the characters read are then returned as a standard String. Note that because this method processes bytes, it does not support input of the full Unicode character set.

If end of file is encountered before even one byte can be read, then an empty string is returned. Otherwise, each byte that is read is converted to type char. If the character '
' is encountered, it is discarded and reading ceases. If the character '' is encountered, it is discarded and, if the following byte converts to the character '
', then that is discarded also; reading then ceases. If end of file is encountered before either of the characters '
' and '' is encountered, reading ceases. Once reading has ceased, a String is returned that contains all the characters read and not discarded, taken in order.

Returns
the next line of text read from the input stream or empty string if at EOF.
Exceptions
IOExceptionif an I/O Error occurs.
virtual long long decaf::io::DataInput::readLong ( )
pure virtual

Reads eight input bytes and returns a long value.

Let a be the first byte read, b be the second byte, c be the third byte, d be the fourth byte, e be the fifth byte, f be the sixth byte, g be the seventh byte, and h be the eighth byte. The value returned is:

(((long)(a & 0xff) << 56) | ((long)(b & 0xff) << 48) | ((long)(c & 0xff) << 40) | ((long)(d & 0xff) << 32) | ((long)(e & 0xff) << 24) | ((long)(f & 0xff) << 16) | ((long)(g & 0xff) << 8) | ((long)(h & 0xff)))

Returns
the 64 bit long long read.
Exceptions
IOExceptionif an I/O Error occurs.
EOFExceptionif the end of input is reached.
virtual short decaf::io::DataInput::readShort ( )
pure virtual

Reads two input bytes and returns a short value.

Let a be the first byte read and b be the second byte. The value returned is:

(short)((a << 8) | (b & 0xff))

Returns
the 16 bit short value read.
Exceptions
IOExceptionif an I/O Error occurs.
EOFExceptionif the end of input is reached.
virtual std::string decaf::io::DataInput::readString ( )
pure virtual

Reads an NULL terminated ASCII string to the stream and returns the string to the caller.

Returns
string object containing the string read.
Exceptions
IOExceptionif an I/O Error occurs.
EOFExceptionif the end of input is reached.
virtual unsigned char decaf::io::DataInput::readUnsignedByte ( )
pure virtual

Reads one input byte, zero-extends it to type int, and returns the result, which is therefore in the range 0 through 255.

Returns
the 8 bit unsigned value read.
Exceptions
IOExceptionif an I/O Error occurs.
EOFExceptionif the end of input is reached.
virtual unsigned short decaf::io::DataInput::readUnsignedShort ( )
pure virtual

Reads two input bytes and returns an int value in the range 0 through 65535.

Let a be the first byte read and b be the second byte. The value returned is:

(((a & 0xff) << 8) | (b & 0xff))

Returns
the 16 bit unsigned short read.
Exceptions
IOExceptionif an I/O Error occurs.
EOFExceptionif the end of input is reached.
virtual std::string decaf::io::DataInput::readUTF ( )
pure virtual

Reads a modified UTF-8 encoded string in ASCII format and returns it, this is only useful if you know for sure that the string that is to be read was a string that contained all ASCII values (0-255), if so this method will throw a UTFFormatException.

This method reads String value written from a Java DataOutputStream and assumes that the length prefix the precedes the encoded UTF-8 bytes is an unsigned short, which implies that the String will be no longer than 65535 characters.

Returns
The decoded string read from stream.
Exceptions
IOExceptionif an I/O Error occurs.
EOFExceptionif the end of input is reached.
UTFDataFormatExceptionif the bytes are not valid modified UTF-8 values.
virtual long long decaf::io::DataInput::skipBytes ( long long  num)
pure virtual

Makes an attempt to skip over n bytes of data from the input stream, discarding the skipped bytes.

However, it may skip over some smaller number of bytes, possibly zero. This may result from any of a number of conditions; reaching end of file before n bytes have been skipped is only one possibility. This method never throws an EOFException. The actual number of bytes skipped is returned.

Parameters
numThe number of bytes to skip over.
Returns
the total number of bytes skipped.
Exceptions
IOExceptionif an I/O Error occurs.

The documentation for this class was generated from the following file: