Yate

- Main Page
- Namespaces
- Classes
- Files

- Class List
- Class Hierarchy
- Class Members

Public Member Functions | Static Public Member Functions | List of all members
DataBlock Class Reference

A class that holds just a block of raw data. More...

`#include <yateclass.h>`

Inheritance diagram for DataBlock:

## Public Member Functions
| DataBlock (unsigned int overAlloc=0)
| DataBlock (const DataBlock &value)
| DataBlock (const DataBlock &value, unsigned int overAlloc)
| DataBlock (void *value, unsigned int len, bool copyData=true, unsigned int overAlloc=0)
virtual | ~DataBlock ()
virtual void * | getObject (const String &name) const
void * | data () const
unsigned char * | data (unsigned int offs, unsigned int len=1) const
int | at (unsigned int offs, int defvalue=-1) const
bool | null () const
unsigned int | length () const
unsigned int | overAlloc () const
void | overAlloc (unsigned int bytes)
void | clear (bool deleteData=true)
DataBlock & | assign (void *value, unsigned int len, bool copyData=true, unsigned int allocated=0)
void | append (void *value, unsigned int len)
void | append (const DataBlock &value)
void | append (const String &value)
void | insert (const DataBlock &value)
void | resize (unsigned int len)
void | truncate (unsigned int len)
void | cut (int len)
int | operator[] (signed int index) const
int | operator[] (unsigned int index) const
DataBlock & | operator= (const DataBlock &value)
DataBlock & | operator+= (const DataBlock &value)
DataBlock & | operator+= (const String &value)
bool | convert (const DataBlock &src, const String &sFormat, const String &dFormat, unsigned maxlen=0)
bool | unHexify (const char *data, unsigned int len, char sep)
bool | unHexify (const char *data, unsigned int len)
bool | unHexify (const String &data)
String | sqlEscape (char extraEsc) const
Public Member Functions inherited from GenObject
| GenObject ()
virtual | ~GenObject ()
virtual bool | alive () const
virtual void | destruct ()
virtual const String & | toString () const
virtual const String & | traceId () const
NamedCounter * | getObjCounter () const
NamedCounter * | setObjCounter (NamedCounter *counter)

## Static Public Member Functions
static const DataBlock & | empty ()
Static Public Member Functions inherited from GenObject
static void * | getObject (const String &name, const GenObject *obj)
static bool | getObjCounting ()
static void | setObjCounting (bool enable)
static NamedCounter * | getObjCounter (const String &name, bool create=true)
static ObjList & | getObjCounters ()

## Detailed Description

A class that holds just a block of raw data.

The DataBlock holds a data buffer with no specific formatting.

## Constructor & Destructor Documentation

DataBlock | ( | unsigned int | overAlloc = `0` | ) |

Constructs an empty data block

Parameters

  overAlloc | How many bytes of memory to overallocate

DataBlock | ( | const DataBlock & | value | ) |

Copy constructor

Parameters

  value | Data block to copy from

DataBlock | ( | const DataBlock & | value,
|  | unsigned int | overAlloc
| ) |  |

Copy constructor with overallocation

Parameters

  value | Data block to copy from
  overAlloc | How many bytes of memory to overallocate

DataBlock | ( | void * | value,
|  | unsigned int | len,
|  | bool | copyData = `true`,
|  | unsigned int | overAlloc = `0`
| ) |  |

Constructs an initialized data block

Parameters

  value | Data to assign, may be NULL to fill with zeros
  len | Length of data, may be zero (then value is ignored)
  copyData | True to make a copy of the data, false to just insert the pointer
  overAlloc | How many bytes of memory to overallocate

virtual ~DataBlock | ( |  | ) |
| virtual

Destroys the data, disposes the memory.

## Member Function Documentation

void append | ( | void * | value,
|  | unsigned int | len
| ) |  |
| inline

Append data to the current block

Parameters

  value | Data to append
  len | Length of data

References DataBlock::clear().

Referenced by DataBlock::operator+=(), and Base64::operator<<().

void append | ( | const DataBlock & | value | ) |

Append data to the current block

Parameters

  value | Data to append

void append | ( | const String & | value | ) |

Append a String to the current block

Parameters

  value | String to append

DataBlock& assign | ( | void * | value,
|  | unsigned int | len,
|  | bool | copyData = `true`,
|  | unsigned int | allocated = `0`
| ) |  |

Assign data to the object

Parameters

  value | Data to assign, may be NULL to fill with zeros
  len | Length of data, may be zero (then value is ignored)
  copyData | True to make a copy of the data, false to just insert the pointer
  allocated | Real allocated data length in case it should not be copied

Referenced by DataBlock::resize().

int at | ( | unsigned int | offs,
|  | int | defvalue = `-1`
| ) |  | const
| inline

Get the value of a single byte inside the stored data

Parameters

  offs | Byte offset inside the stored data
  defvalue | Default value to return if offset is outside data

Returns
  Byte value at offset (0-255) or defvalue if offset outside data

Referenced by DataBlock::operator[]().

void clear | ( | bool | deleteData = `true` | ) |

Clear the data and optionally free the memory

Parameters

  deleteData | True to free the deta block, false to just forget it

Referenced by DataBlock::append().

bool convert | ( | const DataBlock & | src,
|  | const String & | sFormat,
|  | const String & | dFormat,
|  | unsigned | maxlen = `0`
| ) |  |

Convert data from a different format

Parameters

  src | Source data block
  sFormat | Name of the source format
  dFormat | Name of the destination format
  maxlen | Maximum amount to convert, 0 to use source

Returns
  True if converted successfully, false on failure

void cut | ( | int | len | ) |

Cut off a number of bytes from the data block

Parameters

  len | Amount to cut, positive to cut from end, negative to cut from start of block

void* data | ( |  | ) | const
| inline

Get a pointer to the stored data.

Returns
  A pointer to the data or NULL.

Referenced by RefStorage::data(), Cipher::decrypt(), Cipher::encrypt(), Hasher::hmac(), Hasher::hmacStart(), Cipher::initVector(), Cipher::setKey(), SliceVector< Obj >::unHexify(), Hasher::update(), Compressor::writeComp(), Stream::writeData(), and Compressor::writeDecomp().

unsigned char* data | ( | unsigned int | offs,
|  | unsigned int | len = `1`
| ) |  | const
| inline

Get a pointer to a byte range inside the stored data.

Parameters

  offs | Byte offset inside the stored data
  len | Number of bytes that must be valid starting at offset

Returns
  A pointer to the data or NULL if the range is not available.

static const DataBlock& empty | ( |  | ) |
| static

A static empty data block

virtual void* getObject | ( | const String & | name | ) | const
| virtual

Get a pointer to a derived class given that class name

Parameters

  name | Name of the class we are asking for

Returns
  Pointer to the requested class or NULL if this object doesn't implement it

Reimplemented from GenObject.

void insert | ( | const DataBlock & | value | ) |

Insert data before the current block

Parameters

  value | Data to insert

unsigned int length | ( |  | ) | const
| inline

Get the length of the stored data.

Returns
  The length of the stored data, zero for NULL.

Referenced by Cipher::decrypt(), Cipher::encrypt(), Hasher::hmac(), Hasher::hmacStart(), Cipher::initVector(), RefStorage::length(), MemoryStream::length(), DataBlock::resize(), Cipher::setKey(), SliceVector< Obj >::unHexify(), Hasher::update(), Compressor::writeComp(), Stream::writeData(), and Compressor::writeDecomp().

bool null | ( |  | ) | const
| inline

Checks if the block holds a NULL pointer.

Returns
  True if the block holds NULL, false otherwise.

DataBlock& operator+= | ( | const DataBlock & | value | ) |
| inline

Appending operator.

References DataBlock::append().

DataBlock& operator+= | ( | const String & | value | ) |
| inline

Appending operator for Strings.

References DataBlock::append().

DataBlock& operator= | ( | const DataBlock & | value | ) |

Assignment operator.

int operator[] | ( | signed int | index | ) | const
| inline

Byte indexing operator with signed parameter

Parameters

  index | Index of the byte to retrieve

Returns
  Byte value at offset (0-255) or -1 if index outside data

References DataBlock::at().

int operator[] | ( | unsigned int | index | ) | const
| inline

Byte indexing operator with unsigned parameter

Parameters

  index | Index of the byte to retrieve

Returns
  Byte value at offset (0-255) or -1 if index outside data

References DataBlock::at().

unsigned int overAlloc | ( |  | ) | const
| inline

Get the memory overallocation setting.

Returns
  Amount of memory that will be overallocated.

void overAlloc | ( | unsigned int | bytes | ) |
| inline

Set the memory overallocation.

Parameters

  bytes | How many bytes of memory to overallocate

void resize | ( | unsigned int | len | ) |
| inline

Resize (re-alloc or free) this block if required size is not the same as the current one

Parameters

  len | Required block size

References DataBlock::assign(), and DataBlock::length().

String sqlEscape | ( | char | extraEsc | ) | const

Create an escaped string suitable for use in SQL queries

Parameters

  extraEsc | Character to escape other than the default ones

Returns
  A string with binary zeros and other special characters escaped

void truncate | ( | unsigned int | len | ) |

Truncate the data block

Parameters

  len | The maximum length to keep

bool unHexify | ( | const char * | data,
|  | unsigned int | len,
|  | char | sep
| ) |  |

Build this data block from a hexadecimal string representation. Each octet must be represented in the input string with 2 hexadecimal characters. If a separator is specified, the octets in input string must be separated using exactly 1 separator. Only 1 leading or 1 trailing separators are allowed.

Parameters

  data | Input character string
  len | Length of the input string
  sep | Separator character used between octets. 0 if no separator is expected

Returns
  True if the input string was succesfully parsed, false otherwise

Referenced by SliceVector< Obj >::unHexify(), and DataBlock::unHexify().

bool unHexify | ( | const char * | data,
|  | unsigned int | len
| ) |  |

Build this data block from a hexadecimal string representation. Each octet must be represented in the input string with 2 hexadecimal characters. This method guesses if separators are used. If so the octets in input string must be separated using exactly 1 separator. Only 1 leading or 1 trailing separators are allowed.

Parameters

  data | Input character string
  len | Length of the input string

Returns
  True if the input string was succesfully parsed, false otherwise

bool unHexify | ( | const String & | data | ) |
| inline

Build this data block from a hexadecimal string representation. This version parses a String and guesses separators presence.

Parameters

  data | Input character string

Returns
  True if the input string was succesfully parsed, false otherwise

References String::c_str(), String::length(), and DataBlock::unHexify().

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

- yateclass.h