34 #include "static_assert.h"
54 template <const
int ENDIANNESS = endian::little>
59 typedef uint16_t value_type;
74 template<
typename TIterator>
92 template<
typename TValue>
97 if (ENDIANNESS == endian::little)
99 for (
int i = 0; i <
sizeof(TValue); ++i)
101 add(uint8_t((value >> (i * 8)) & 0xFF));
106 for (
int i =
sizeof(TValue) - 1; i >= 0; --i)
108 add(uint8_t((value >> (i * 8)) & 0xFF));
119 crc = (crc >> 8) ^ CRC16[(crc ^ value) & 0xFF];
126 template<
typename TIterator>
147 template<
typename TValue>
158 operator value_type ()
const
crc16< ENDIANNESS > & operator+=(TValue value)
Definition: crc16.h:148
void add(uint8_t value)
Definition: crc16.h:117
void add(TValue value)
Definition: crc16.h:93
Definition: type_traits.h:130
const uint16_t CRC16[]
Definition: crc16.h:47
crc16()
Default constructor.
Definition: crc16.h:64
Definition: algorithm.h:43
void add(TIterator begin, const TIterator end)
Definition: crc16.h:127
crc16(TIterator begin, const TIterator end)
Definition: crc16.h:75
TContainer::iterator end(TContainer &container)
Definition: container.h:95
TContainer::iterator begin(TContainer &container)
Definition: container.h:45
void reset()
Resets the CRC to the initial state.
Definition: crc16.h:84
value_type value() const
Gets the CRC value.
Definition: crc16.h:139