34 #include "static_assert.h"
54 template <const
int ENDIANNESS = endian::little>
59 typedef uint32_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));
118 crc = (crc >> 8) ^ CRC32[(crc ^ value) & 0xFF];
125 template<
typename TIterator>
140 return crc ^ 0xFFFFFFFF;
146 template<
typename TValue>
157 operator value_type ()
const
159 return crc ^ 0xFFFFFFFF;
crc32()
Default constructor.
Definition: crc32.h:64
const uint32_t CRC32[]
Definition: crc32.h:47
crc32(TIterator begin, const TIterator end)
Definition: crc32.h:75
Definition: type_traits.h:130
void reset()
Resets the CRC to the initial state.
Definition: crc32.h:84
void add(uint8_t value)
Definition: crc32.h:116
void add(TIterator begin, const TIterator end)
Definition: crc32.h:126
Definition: algorithm.h:43
value_type value() const
Gets the CRC value.
Definition: crc32.h:138
TContainer::iterator end(TContainer &container)
Definition: container.h:95
TContainer::iterator begin(TContainer &container)
Definition: container.h:45
crc32< ENDIANNESS > & operator+=(TValue value)
Definition: crc32.h:147
void add(TValue value)
Definition: crc32.h:93