| 
 | 
 | ||||||||||||||||
A template class for aligning buffer data with a particular data type.
The technically correct solution is to allocate (using malloc()) new buffer and copy the original data to it. By definition, the malloc()-ed data is aligned, and therefore it can be casted to the desired type.
The more efficient solution (but probably technically incorrect), is to assume that the first byte of "vector<uint8_t>" buffer is aligned similar to malloc()-ed data, and therefore it can be casted to the desired type without creating a copy of it.
The desired behavior can be chosen by setting the AlignData::_data_is_copied constant to true or false. Note that the constant is predefined for all AlignData instances. If necessary, the constant can become a variable that can have different value for each AlignData instance.
| AlignData (const vector<uint8_t>& buffer) | AlignData | 
Constructor.
Parameters:
| buffer | the buffer with the data. | 
| ~AlignData () | ~AlignData | 
| const A*  payload () | payload | 
[const]
Get the aligned payload from the beginning of the buffer.
Returns: the aligned payload from the beginning of the buffer.
| const A*  payload_by_offset (size_t offset) | payload_by_offset | 
[const]
Get the aligned payload by given offset from the beginning of the buffer.
Note that the given offset itself is suppose to point to aligned location.
Parameters:
| offset | the offset from the beginning of the buffer. | 
Returns: the aligned payload by given offset from the beginning of the buffer.