Program Listing for File ReadWriteHelper.hpp
↰ Return to documentation for file (/tmp/ws/src/sick_safetyscanners_base/include/sick_safetyscanners_base/data_processing/ReadWriteHelper.hpp
)
// this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*-
// -- BEGIN LICENSE BLOCK ----------------------------------------------
// -- END LICENSE BLOCK ------------------------------------------------
//----------------------------------------------------------------------
//----------------------------------------------------------------------
#ifndef SICK_SAFETYSCANNERS_BASE_DATA_PROCESSING_READWRITEHELPER_HPP
#define SICK_SAFETYSCANNERS_BASE_DATA_PROCESSING_READWRITEHELPER_HPP
#include <stdint.h>
namespace sick {
namespace read_write_helper {
inline void writeUint8(std::vector<uint8_t>::iterator it, const uint8_t v)
{
*(it + 0) = v;
}
inline void writeUint8BigEndian(std::vector<uint8_t>::iterator it, const uint8_t v)
{
writeUint8(it, v);
}
inline void writeUint8LittleEndian(std::vector<uint8_t>::iterator it, const uint8_t v)
{
writeUint8(it, v);
}
inline void writeInt8(std::vector<uint8_t>::iterator it, const uint8_t v)
{
writeUint8(it, v);
}
inline void writeInt8BigEndian(std::vector<uint8_t>::iterator it, const uint8_t v)
{
writeInt8(it, v);
}
inline void writeInt8LittleEndian(std::vector<uint8_t>::iterator it, const uint8_t v)
{
writeInt8(it, v);
}
inline void writeUint16BigEndian(std::vector<uint8_t>::iterator it, const uint16_t v)
{
*(it + 0) = (v & 0xff00) >> 8;
*(it + 1) = v & 0xff;
}
inline void writeUint16LittleEndian(std::vector<uint8_t>::iterator it, const uint16_t v)
{
*(it + 0) = v & 0xff;
*(it + 1) = (v & 0xff00) >> 8;
}
inline void writeUint32BigEndian(std::vector<uint8_t>::iterator it, const uint32_t v)
{
*(it + 0) = (v & 0xff000000) >> 24;
*(it + 1) = (v & 0xff0000) >> 16;
*(it + 2) = (v & 0xff00) >> 8;
*(it + 3) = v & 0xff;
}
inline void writeUint32LittleEndian(std::vector<uint8_t>::iterator it, const uint32_t v)
{
*(it + 3) = (v & 0xff000000) >> 24;
*(it + 2) = (v & 0xff0000) >> 16;
*(it + 1) = (v & 0xff00) >> 8;
*(it + 0) = v & 0xff;
}
inline void writeInt32LittleEndian(std::vector<uint8_t>::iterator it, const int32_t v)
{
*(it + 3) = (v & 0xff000000) >> 24;
*(it + 2) = (v & 0xff0000) >> 16;
*(it + 1) = (v & 0xff00) >> 8;
*(it + 0) = v & 0xff;
}
inline uint8_t readUint8(std::vector<uint8_t>::const_iterator it)
{
return *(it + 0);
}
inline uint8_t readUint8BigEndian(std::vector<uint8_t>::const_iterator it)
{
return readUint8(it);
}
inline uint8_t readUint8LittleEndian(std::vector<uint8_t>::const_iterator it)
{
return readUint8(it);
}
inline int8_t readInt8(std::vector<uint8_t>::const_iterator it)
{
return readUint8(it);
}
inline int8_t readInt8BigEndian(std::vector<uint8_t>::const_iterator it)
{
return readInt8(it);
}
inline int8_t readInt8LittleEndian(std::vector<uint8_t>::const_iterator it)
{
return readInt8(it);
}
inline uint16_t readUint16BigEndian(std::vector<uint8_t>::const_iterator it)
{
return (*(it + 0) << 8) + *(it + 1);
}
inline uint16_t readUint16LittleEndian(std::vector<uint8_t>::const_iterator it)
{
return (*(it + 1) << 8) + *(it + 0);
}
inline int16_t readInt16BigEndian(std::vector<uint8_t>::const_iterator it)
{
return readUint16BigEndian(it);
}
inline int16_t readInt16LittleEndian(std::vector<uint8_t>::const_iterator it)
{
return readUint16LittleEndian(it);
}
inline uint32_t readUint32BigEndian(std::vector<uint8_t>::const_iterator it)
{
return (*(it + 0) << 24) + (*(it + 1) << 16) + (*(it + 2) << 8) + *(it + 3);
}
inline uint32_t readUint32LittleEndian(std::vector<uint8_t>::const_iterator it)
{
return (*(it + 3) << 24) + (*(it + 2) << 16) + (*(it + 1) << 8) + *(it + 0);
}
inline int32_t readInt32BigEndian(std::vector<uint8_t>::const_iterator it)
{
return readUint32BigEndian(it);
}
inline int32_t readInt32LittleEndian(std::vector<uint8_t>::const_iterator it)
{
return readUint32LittleEndian(it);
}
} // namespace read_write_helper
} // namespace sick
#endif // SICK_SAFETYSCANNERS_BASE_DATA_PROCESSING_READWRITEHELPER_HPP