29 #ifndef __ETL_CHECKSUM__
30 #define __ETL_CHECKSUM__
34 #include "static_assert.h"
49 template <
typename TSum, const
int ENDIANNESS = endian::little>
56 typedef TSum value_type;
71 template<
typename TIterator>
89 template<
typename TValue>
94 if (ENDIANNESS == endian::little)
96 for (
int i = 0; i <
sizeof(TValue); ++i)
98 add(uint8_t((value >> (i * 8)) & 0xFF));
103 for (
int i =
sizeof(TValue) - 1; i >= 0; --i)
105 add(uint8_t((value >> (i * 8)) & 0xFF));
123 template<
typename TIterator>
143 template<
typename TValue>
154 operator value_type ()
const
void reset()
Resets the CRC to the initial state.
Definition: checksum.h:81
Definition: type_traits.h:130
checksum(TIterator begin, const TIterator end)
Definition: checksum.h:72
checksum< TSum, ENDIANNESS > & operator+=(TValue value)
Definition: checksum.h:144
Definition: type_traits.h:169
checksum()
Default constructor.
Definition: checksum.h:61
Definition: algorithm.h:43
TContainer::iterator end(TContainer &container)
Definition: container.h:95
TContainer::iterator begin(TContainer &container)
Definition: container.h:45
void add(TIterator begin, const TIterator end)
Definition: checksum.h:124
Definition: checksum.h:50
value_type value() const
Gets the checksum value.
Definition: checksum.h:135
void add(TValue value)
Definition: checksum.h:90
void add(uint8_t value)
Definition: checksum.h:113