Go to the documentation of this file.
32 #ifndef DRIVER_SVH_BYTE_ORDER_CONVERISON_H_INCLUDED
33 #define DRIVER_SVH_BYTE_ORDER_CONVERISON_H_INCLUDED
47 size_t toLittleEndian(
const T& data, std::vector<uint8_t>& array,
size_t& write_pos)
50 if (write_pos +
sizeof(T) > array.size())
56 array.resize(write_pos +
sizeof(T));
60 for (
size_t i = 0; i <
sizeof(T); ++i)
64 array[write_pos + i] =
static_cast<uint8_t
>((data >> (i * 8)) & 0xFF);
67 return write_pos +
sizeof(T);
73 std::vector<uint8_t>& array,
79 std::vector<uint8_t>& array,
96 if (read_pos +
sizeof(T) > array.size())
104 for (
size_t i = 0; i <
sizeof(T); ++i)
107 data |= (array[read_pos + i] & 0xFF) << (i * 8);
116 return read_pos +
sizeof(T);
122 std::vector<uint8_t>& array,
128 std::vector<uint8_t>& array,
152 ,
array(array_size, 0)
169 void reset(
size_t array_size = 1);
172 template <
typename T>
187 template <
typename T>
191 for (
typename std::vector<T>::const_iterator it = data.begin(); it != data.end(); ++it)
198 template <
typename T>
203 template <
typename T>
208 template <
typename T>
212 template <
typename T>
217 template <
typename T>
223 template <
typename T>
239 template <
typename T>
243 for (
typename std::vector<T>::const_iterator it = data.begin(); it != data.end(); ++it)
256 template <
typename T>
265 template <
typename T>
271 for (
typename std::vector<T>::iterator it = data.begin(); it != data.end(); ++it)
280 template <
typename T>
284 size_t read_back_pos =
write_pos -
sizeof(T);
285 fromLittleEndian<T>(data,
array, read_back_pos);
std::vector< uint8_t > array
array of template type TArray
ArrayBuilder & operator<<(const T &data)
Write any type into ArrayBuilder, convert to LittleEndian in process.
size_t write_pos
current write position in array
size_t read_pos
current read position in array
void appendWithoutConversion(const std::vector< T > &data)
add data in vectors without any byte conversion
size_t toLittleEndian(const T &data, std::vector< uint8_t > &array, size_t &write_pos)
template function for adding data to an array while converting everything into correct endianess
size_t fromLittleEndian(T &data, std::vector< uint8_t > &array, size_t &read_pos)
DRIVER_SVH_IMPORT_EXPORT size_t toLittleEndian< double >(const double &data, std::vector< uint8_t > &array, size_t &write_pos)
Template specialization for float as these have to be handled seperately.
DRIVER_SVH_IMPORT_EXPORT size_t toLittleEndian< float >(const float &data, std::vector< uint8_t > &array, size_t &write_pos)
Template specialization for float as these have to be handled seperately.
DRIVER_SVH_IMPORT_EXPORT size_t fromLittleEndian< float >(float &data, std::vector< uint8_t > &array, size_t &read_pos)
Template specialization for float as these have to be handled seperately.
#define DRIVER_SVH_IMPORT_EXPORT
DRIVER_SVH_IMPORT_EXPORT size_t fromLittleEndian< double >(double &data, std::vector< uint8_t > &array, size_t &read_pos)
Template specialization for float as these have to be handled seperately.
ArrayBuilder(size_t array_size=1)
void reset(size_t array_size=1)
Resets the Arraybuilder to initial state, all values will be deleted.
void appendWithoutConversion(const T &data)
add data without any byte conversion
driver_svh::ArrayBuilder & operator<<(driver_svh::ArrayBuilder &ab, const SVHControlCommand &data)
ArrayBuilder & operator>>(T &data)
Read a generic data type from the array builder, Endianess is converted to system architecture.
schunk_svh_library
Author(s): Georg Heppner, Lars Pfotzer, Felix Exner, Johannes Mangler, Stefan Scherzinger, Pascal Becker
autogenerated on Fri Apr 14 2023 02:53:52