Yate
|
A class that holds just a block of raw data. More...
#include <yateclass.h>
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 |
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 () |
A class that holds just a block of raw data.
The DataBlock holds a data buffer with no specific formatting.
DataBlock | ( | unsigned int | overAlloc = 0 | ) |
Constructs an empty data block
overAlloc | How many bytes of memory to overallocate |
Copy constructor with overallocation
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
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 |
Destroys the data, disposes the memory.
|
inline |
Append data to the current block
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
value | Data to append |
void append | ( | const String & | value | ) |
DataBlock& assign | ( | void * | value, |
unsigned int | len, | ||
bool | copyData = true , |
||
unsigned int | allocated = 0 |
||
) |
Assign data to the object
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().
|
inline |
Get the value of a single byte inside the stored data
offs | Byte offset inside the stored data |
defvalue | Default value to return if offset is outside data |
Referenced by DataBlock::operator[]().
void clear | ( | bool | deleteData = true | ) |
Clear the data and optionally free the memory
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
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 |
void cut | ( | int | len | ) |
Cut off a number of bytes from the data block
len | Amount to cut, positive to cut from end, negative to cut from start of block |
|
inline |
Get a pointer to the stored data.
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().
|
inline |
Get a pointer to a byte range inside the stored data.
offs | Byte offset inside the stored data |
len | Number of bytes that must be valid starting at offset |
|
static |
A static empty data block
|
virtual |
Get a pointer to a derived class given that class name
name | Name of the class we are asking for |
Reimplemented from GenObject.
void insert | ( | const DataBlock & | value | ) |
Insert data before the current block
value | Data to insert |
|
inline |
Get the length of the stored data.
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().
|
inline |
Checks if the block holds a NULL pointer.
Appending operator.
References DataBlock::append().
Appending operator for Strings.
References DataBlock::append().
|
inline |
Byte indexing operator with signed parameter
index | Index of the byte to retrieve |
References DataBlock::at().
|
inline |
Byte indexing operator with unsigned parameter
index | Index of the byte to retrieve |
References DataBlock::at().
|
inline |
Get the memory overallocation setting.
|
inline |
Set the memory overallocation.
bytes | How many bytes of memory to overallocate |
|
inline |
Resize (re-alloc or free) this block if required size is not the same as the current one
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
extraEsc | Character to escape other than the default ones |
void truncate | ( | unsigned int | len | ) |
Truncate the data block
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.
data | Input character string |
len | Length of the input string |
sep | Separator character used between octets. 0 if no separator is expected |
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.
data | Input character string |
len | Length of the input string |
|
inline |
Build this data block from a hexadecimal string representation. This version parses a String and guesses separators presence.
data | Input character string |
References String::c_str(), String::length(), and DataBlock::unHexify().