#include <data.h>

Public Member Functions | |
| rock_data () | |
| Construct a rock_data object. | |
| virtual void | accomodate (size_t bytes)=0 |
| Attempt to resize the buffer so that it can fit more bytes after its current size value. | |
| virtual void | write (const void *data, size_t size)=0 |
| Write data bytes to the array. | |
| virtual void | read (void *data, size_t size)=0 |
| Read data bytes from the array. | |
| void | writeNumber (const void *data, size_t size) |
| This calls write() directly if the byte order is little_endian, else it calls write() for each byte, in reverse order. | |
| void | readNumber (void *data, size_t size) |
| This calls read() directly if the byte order is little_endian, else it calls read() for each byte, in reverse order. | |
| void | writeU8 (const uint8_t &data) |
| This calls writeNumber(), passing the correct data size = 1. | |
| void | writeU16 (const uint16_t &data) |
| This calls writeNumber(), passing the correct data size = 2. | |
| void | writeU32 (const uint32_t &data) |
| This calls writeNumber(), passing the correct data size = 4. | |
| void | writeU64 (const uint64_t &data) |
| This calls writeNumber(), passing the correct data size = 8. | |
| void | writeI8 (const int8_t &data) |
| This calls writeNumber(), passing the correct data size = 1. | |
| void | writeI16 (const int16_t &data) |
| This calls writeNumber(), passing the correct data size = 2. | |
| void | writeI32 (const int32_t &data) |
| This calls writeNumber(), passing the correct data size = 4. | |
| void | writeI64 (const int64_t &data) |
| This calls writeNumber(), passing the correct data size = 8. | |
| void | writeF (const float &data) |
| This calls writeNumber(), passing the correct data size = 4. | |
| void | writeD (const double &data) |
| This calls writeNumber(), passing the correct data size = 8. | |
| void | writeLD (const long double &data) |
| This writes the fraction first as 8 bytes little_endian, then writes the exponent as 4 bytes little_endian. | |
| void | readU8 (uint8_t &data) |
| This calls readNumber(), passing the correct data size = 1. | |
| void | readU16 (uint16_t &data) |
| This calls readNumber(), passing the correct data size = 2. | |
| void | readU32 (uint32_t &data) |
| This calls readNumber(), passing the correct data size = 4. | |
| void | readU64 (uint64_t &data) |
| This calls readNumber(), passing the correct data size = 8. | |
| void | readI8 (int8_t &data) |
| This calls readNumber(), passing the correct data size = 1. | |
| void | readI16 (int16_t &data) |
| This calls readNumber(), passing the correct data size = 2. | |
| void | readI32 (int32_t &data) |
| This calls readNumber(), passing the correct data size = 4. | |
| void | readI64 (int64_t &data) |
| This calls readNumber(), passing the correct data size = 8. | |
| void | readF (float &data) |
| This calls readNumber(), passing the correct data size = 4. | |
| void | readD (double &data) |
| This calls readNumber(), passing the correct data size = 8. | |
| void | readLD (long double &data) |
| Reads the 8 bytes fractional part and the 4 byte exponent, and converts to a long double. | |
| void | writeS (const text &str) |
| Writes the string length as 4 a byte unsigned integer, then writes the characters that form the string. | |
| void | readS (text &str) |
| Reads the 4 byte string length, then reads that many bytes and forms a character string. | |
Its used really just to get data into a datagram, or to read it from a datagram. The format is Little Endian. Long Double format is also supported, using a 64 bit fractional part and 32 bit exponent.
This class has two pure virtuals which you must be implemented
| karoo::rock_data::rock_data | ( | ) | [inline] |
Construct a rock_data object.
This class has pure virtuals, and no storage data, so the constructor does nothing.
| virtual void karoo::rock_data::accomodate | ( | size_t | bytes | ) | [pure virtual] |
Attempt to resize the buffer so that it can fit more bytes after its current size value.
Note that if the buffer is already large enough, nothing will happen.
| bytes | the number of extra bytes to resize the buffer to |
| bad_alloc | if the buffer could not be resized |
Implemented in karoo::rock_datagram_message.
| virtual void karoo::rock_data::read | ( | void * | data, | |
| size_t | size | |||
| ) | [pure virtual] |
Read data bytes from the array.
| data | the data bytes to read. | |
| size | the number of bytes of data. |
| rock_exception_read | if there was an array bounds error. |
Implemented in karoo::rock_datagram_message.
| void karoo::rock_data::readD | ( | double & | data | ) | [inline] |
This calls readNumber(), passing the correct data size = 8.
| data | the 64 bit double floating point real number to read |
| rock_exception_read | may be thrown by read() |
References readNumber().
| void karoo::rock_data::readF | ( | float & | data | ) | [inline] |
This calls readNumber(), passing the correct data size = 4.
| data | the 32 bit floating point real number to read |
| rock_exception_read | may be thrown by read() |
References readNumber().
| void karoo::rock_data::readI16 | ( | int16_t & | data | ) | [inline] |
This calls readNumber(), passing the correct data size = 2.
| data | the signed 16 bit short integer to read |
| rock_exception_read | may be thrown by read() |
References readNumber().
| void karoo::rock_data::readI32 | ( | int32_t & | data | ) | [inline] |
This calls readNumber(), passing the correct data size = 4.
| data | the signed 32 bit integer to read |
| rock_exception_read | may be thrown by read() |
References readNumber().
| void karoo::rock_data::readI64 | ( | int64_t & | data | ) | [inline] |
This calls readNumber(), passing the correct data size = 8.
| data | the signed 64 bit integer to read |
| rock_exception_read | may be thrown by read() |
References readNumber().
| void karoo::rock_data::readI8 | ( | int8_t & | data | ) | [inline] |
This calls readNumber(), passing the correct data size = 1.
| data | the signed byte to read |
| rock_exception_read | may be thrown by read() |
References readNumber().
| void karoo::rock_data::readLD | ( | long double & | data | ) |
Reads the 8 bytes fractional part and the 4 byte exponent, and converts to a long double.
| data | the 96 bit long double floating point real number to read |
| rock_exception_read | may be thrown by read() |
| void karoo::rock_data::readNumber | ( | void * | data, | |
| size_t | size | |||
| ) |
This calls read() directly if the byte order is little_endian, else it calls read() for each byte, in reverse order.
| data | the data bytes to read | |
| size | the number of bytes of data. |
| rock_exception_read | may be thrown by read() |
Referenced by readD(), readF(), readI16(), readI32(), readI64(), readI8(), readU16(), readU32(), readU64(), and readU8().
| void karoo::rock_data::readS | ( | text & | str | ) |
Reads the 4 byte string length, then reads that many bytes and forms a character string.
| str | the string to read. |
| rock_exception_read | may be thrown by read() |
| void karoo::rock_data::readU16 | ( | uint16_t & | data | ) | [inline] |
This calls readNumber(), passing the correct data size = 2.
| data | the unsigned 16 bit integer to read |
| rock_exception_read | may be thrown by read() |
References readNumber().
| void karoo::rock_data::readU32 | ( | uint32_t & | data | ) | [inline] |
This calls readNumber(), passing the correct data size = 4.
| data | the unsigned 32 bit integer to read |
| rock_exception_read | may be thrown by read() |
References readNumber().
| void karoo::rock_data::readU64 | ( | uint64_t & | data | ) | [inline] |
This calls readNumber(), passing the correct data size = 8.
| data | the unsigned 64 bit integer to read |
| rock_exception_read | may be thrown by read() |
References readNumber().
| void karoo::rock_data::readU8 | ( | uint8_t & | data | ) | [inline] |
This calls readNumber(), passing the correct data size = 1.
| data | the unsigned byte to read |
| rock_exception_read | may be thrown by read() |
References readNumber().
| virtual void karoo::rock_data::write | ( | const void * | data, | |
| size_t | size | |||
| ) | [pure virtual] |
Write data bytes to the array.
| data | the data bytes to write. | |
| size | the number of bytes of data. |
| bad_alloc | if the buffer could not be resized |
Implemented in karoo::rock_datagram_message.
| void karoo::rock_data::writeD | ( | const double & | data | ) | [inline] |
This calls writeNumber(), passing the correct data size = 8.
| data | the 64 bit double floating point real number to write |
| bad_alloc | may be thrown by write() |
References writeNumber().
| void karoo::rock_data::writeF | ( | const float & | data | ) | [inline] |
This calls writeNumber(), passing the correct data size = 4.
| data | the 32 bit floating point real number to write |
| bad_alloc | may be thrown by write() |
References writeNumber().
| void karoo::rock_data::writeI16 | ( | const int16_t & | data | ) | [inline] |
This calls writeNumber(), passing the correct data size = 2.
| data | the signed 16 bit short integer to write |
| bad_alloc | may be thrown by write() |
References writeNumber().
| void karoo::rock_data::writeI32 | ( | const int32_t & | data | ) | [inline] |
This calls writeNumber(), passing the correct data size = 4.
| data | the signed 32 bit integer to write |
| bad_alloc | may be thrown by write() |
References writeNumber().
| void karoo::rock_data::writeI64 | ( | const int64_t & | data | ) | [inline] |
This calls writeNumber(), passing the correct data size = 8.
| data | the signed 64 bit long integer to write |
| bad_alloc | may be thrown by write() |
References writeNumber().
| void karoo::rock_data::writeI8 | ( | const int8_t & | data | ) | [inline] |
This calls writeNumber(), passing the correct data size = 1.
| data | the signed byte to write |
| bad_alloc | may be thrown by write() |
References writeNumber().
| void karoo::rock_data::writeLD | ( | const long double & | data | ) |
This writes the fraction first as 8 bytes little_endian, then writes the exponent as 4 bytes little_endian.
The fraction is written as a 64 bit signed integer, and the exponent is a 32 bit signed integer. To convert back to a long double, frac * (((UINT64_MAX)>>1)-1) * 2^exp.
| data | the 96 bit long double floating point real number to write |
| bad_alloc | may be thrown by write() |
| void karoo::rock_data::writeNumber | ( | const void * | data, | |
| size_t | size | |||
| ) |
This calls write() directly if the byte order is little_endian, else it calls write() for each byte, in reverse order.
| data | the data bytes to write | |
| size | the number of bytes of data. |
| bad_alloc | may be thrown by write() |
Referenced by writeD(), writeF(), writeI16(), writeI32(), writeI64(), writeI8(), writeU16(), writeU32(), writeU64(), and writeU8().
| void karoo::rock_data::writeS | ( | const text & | str | ) |
Writes the string length as 4 a byte unsigned integer, then writes the characters that form the string.
| str | the string to write. |
| bad_alloc | may be thrown by write() |
| void karoo::rock_data::writeU16 | ( | const uint16_t & | data | ) | [inline] |
This calls writeNumber(), passing the correct data size = 2.
| data | the unsigned 16 bit short integer to write |
| bad_alloc | may be thrown by write() |
References writeNumber().
| void karoo::rock_data::writeU32 | ( | const uint32_t & | data | ) | [inline] |
This calls writeNumber(), passing the correct data size = 4.
| data | the unsigned 32 bit integer to write |
| bad_alloc | may be thrown by write() |
References writeNumber().
| void karoo::rock_data::writeU64 | ( | const uint64_t & | data | ) | [inline] |
This calls writeNumber(), passing the correct data size = 8.
| data | the unsigned 64 bit long integer to write |
| bad_alloc | may be thrown by write() |
References writeNumber().
| void karoo::rock_data::writeU8 | ( | const uint8_t & | data | ) | [inline] |
This calls writeNumber(), passing the correct data size = 1.
| data | the unsigned byte to write |
| bad_alloc | may be thrown by write() |
References writeNumber().
1.5.8