| 
Public Member Functions | 
|  | CBlobT () | 
|  | Default constructor - makes new Blob ready to accept any data. 
 | 
|  | CBlobT (const OnTransfer &ot) | 
|  | Take ownership constructor. 
 | 
|  | ~CBlobT () | 
|  | Destructor - ensures that allocated memory (if any) is freed. 
 | 
| void | CheckIdx (size_t index) const | 
|  | Check the validity of item index (only in debug mode) 
 | 
| T * | Data () | 
|  | Return pointer to the first data item - non-const version. 
 | 
| const T * | Data () const | 
|  | Return pointer to the first data item - const version. 
 | 
| T * | Data (size_t index) | 
|  | Return pointer to the index-th data item - non-const version. 
 | 
| const T * | Data (size_t index) const | 
|  | Return pointer to the index-th data item - const version. 
 | 
| size_t | Size () const | 
|  | Return number of items in the Blob. 
 | 
| size_t | MaxSize () const | 
|  | Return total number of items that can fit in the Blob without buffer reallocation. 
 | 
| size_t | GetReserve () const | 
|  | Return number of additional items that can fit in the Blob without buffer reallocation. 
 | 
| T * | GrowSizeNC (size_t num_items) | 
|  | Grow number of data items in Blob by given number - doesn't construct items. 
 | 
| T * | MakeFreeSpace (size_t num_items) | 
|  | Ensures that given number of items can be added to the end of Blob. 
 | 
| OnTransfer | Transfer () | 
|  | ByteBlob () | 
|  | default constructor - initializes empty blob 
 | 
|  | ByteBlob (const ByteBlob &src) | 
|  | copy constructor 
 | 
|  | ByteBlob (BlobHeader *const &src) | 
|  | move constructor - take ownership of blob data 
 | 
|  | ~ByteBlob () | 
|  | destructor 
 | 
| bool | IsEmpty () const | 
|  | return true if blob doesn't contain valid data 
 | 
| size_t | Length () const | 
|  | return the number of valid data bytes in the blob 
 | 
| size_t | Capacity () const | 
|  | return the current blob capacity in bytes 
 | 
| byte * | Begin () | 
|  | return pointer to the first byte of data - non-const version 
 | 
| const byte * | Begin () const | 
|  | return pointer to the first byte of data - const version 
 | 
| void | Clear () | 
|  | invalidate blob's data - doesn't free buffer 
 | 
| void | Free () | 
|  | free the blob's memory 
 | 
| void | AppendRaw (const void *p, size_t num_bytes) | 
|  | append new bytes at the end of existing data bytes - reallocates if necessary 
 | 
| void | AppendRaw (const ByteBlob &src) | 
|  | append bytes from given source blob to the end of existing data bytes - reallocates if necessary 
 | 
| byte * | Prepare (size_t num_bytes) | 
|  | Reallocate if there is no free space for num_bytes bytes. 
 | 
| byte * | Append (size_t num_bytes) | 
|  | Increase Length() by num_bytes. 
 | 
| void | SmartAlloc (size_t new_size) | 
|  | reallocate blob data if needed 
 | 
| void | FixTail () const | 
|  | fixing the four bytes at the end of blob data - useful when blob is used to hold string 
 | 
| 
Additional Inherited Members | 
| void | InitEmpty () | 
|  | initialize the empty blob 
 | 
| void | Init (BlobHeader *src) | 
|  | initialize blob by attaching it to the given header followed by data 
 | 
| BlobHeader & | Hdr () | 
|  | blob header accessor - use it rather than using the pointer arithmetics directly - non-const version 
 | 
| const BlobHeader & | Hdr () const | 
|  | blob header accessor - use it rather than using the pointer arithmetics directly - const version 
 | 
| size_t & | LengthRef () | 
|  | return reference to the actual blob size - used when the size needs to be modified 
 | 
| static BlobHeader * | RawAlloc (size_t num_bytes) | 
|  | all allocation should happen here 
 | 
| static BlobHeader * | Zero () | 
|  | Return header pointer to the static BlobHeader with both items and capacity containing zero. 
 | 
| static size_t | AllocPolicy (size_t min_alloc) | 
|  | simple allocation policy - can be optimized later 
 | 
| static void | RawFree (BlobHeader *p) | 
|  | all deallocations should happen here 
 | 
| union { | 
| byte *   data | 
|  | ptr to the first byte of data 
 | 
| BlobHeader *   header | 
|  | ptr just after the BlobHeader holding items and capacity 
 | 
| }; |  | 
|  | type used as class member 
 | 
template<typename T>
class CBlobT< T >
Blob - simple dynamic T array. 
T (template argument) is a placeholder for any type. T can be any integral type, pointer, or structure. Using Blob instead of just plain C array simplifies the resource management in several ways:
- When adding new item(s) it automatically grows capacity if needed.
- When variable of type Blob comes out of scope it automatically frees the data buffer.
- Takes care about the actual data size (number of used items).
- Dynamically constructs only used items (as opposite of static array which constructs all items) 
Definition at line 308 of file blob.hpp.