34 #include "static_assert.h"
48 template <const
int ENDIANNESS = endian::little>
53 typedef uint64_t value_type;
68 template<
typename TIterator>
86 template<
typename TValue>
91 if (ENDIANNESS == endian::little)
93 for (
int i = 0; i <
sizeof(TValue); ++i)
95 add(uint8_t((value >> (i * 8)) & 0xFF));
100 for (
int i =
sizeof(TValue) - 1; i >= 0; --i)
102 add(uint8_t((value >> (i * 8)) & 0xFF));
121 template<
typename TIterator>
141 template<
typename TValue>
152 operator value_type ()
const
161 static const uint64_t OFFSET_BASIS = 0xCBF29CE484222325;
162 static const uint64_t PRIME = 0x00000100000001b3;
170 template <const
int ENDIANNESS = endian::little>
175 typedef uint64_t value_type;
190 template<
typename TIterator>
208 template<
typename TValue>
213 if (ENDIANNESS == endian::little)
215 for (
int i = 0; i <
sizeof(TValue); ++i)
217 add(uint8_t((value >> (i * 8)) & 0xFF));
222 for (
int i =
sizeof(TValue) - 1; i >= 0; --i)
224 add(uint8_t((value >> (i * 8)) & 0xFF));
242 template<
typename TIterator>
262 template<
typename TValue>
273 operator value_type ()
const
282 static const uint64_t OFFSET_BASIS = 0xCBF29CE484222325;
283 static const uint64_t PRIME = 0x00000100000001b3;
291 template <const
int ENDIANNESS = endian::little>
296 typedef uint32_t value_type;
311 template<
typename TIterator>
329 template<
typename TValue>
334 if (ENDIANNESS == endian::little)
336 for (
int i = 0; i <
sizeof(TValue); ++i)
338 add(uint8_t((value >> (i * 8)) & 0xFF));
343 for (
int i =
sizeof(TValue) - 1; i >= 0; --i)
345 add(uint8_t((value >> (i * 8)) & 0xFF));
363 template<
typename TIterator>
383 template<
typename TValue>
394 operator value_type ()
const
403 static const uint32_t OFFSET_BASIS = 0x811C9DC5;
404 static const uint32_t PRIME = 0x01000193;
412 template <const
int ENDIANNESS = endian::little>
417 typedef uint32_t value_type;
432 template<
typename TIterator>
450 template<
typename TValue>
455 if (ENDIANNESS == endian::little)
457 for (
int i = 0; i <
sizeof(TValue); ++i)
459 add(uint8_t((value >> (i * 8)) & 0xFF));
464 for (
int i =
sizeof(TValue) - 1; i >= 0; --i)
466 add(uint8_t((value >> (i * 8)) & 0xFF));
484 template<
typename TIterator>
504 template<
typename TValue>
515 operator value_type ()
const
524 static const uint32_t OFFSET_BASIS = 0x811C9DC5;
525 static const uint32_t PRIME = 0x01000193;
void add(TValue value)
Definition: fnv_1.h:330
fnv_1a_32()
Default constructor.
Definition: fnv_1.h:422
fnv_1_32()
Default constructor.
Definition: fnv_1.h:301
fnv_1_64(TIterator begin, const TIterator end)
Definition: fnv_1.h:69
fnv_1a_64()
Default constructor.
Definition: fnv_1.h:180
value_type value() const
Gets the fnv_1a_64 value.
Definition: fnv_1.h:254
Definition: type_traits.h:130
value_type value() const
Gets the fnv_1a_32 value.
Definition: fnv_1.h:496
void add(uint8_t value)
Definition: fnv_1.h:110
fnv_1a_64(TIterator begin, const TIterator end)
Definition: fnv_1.h:191
fnv_1a_32(TIterator begin, const TIterator end)
Definition: fnv_1.h:433
Definition: algorithm.h:43
fnv_1_32< ENDIANNESS > & operator+=(TValue value)
Definition: fnv_1.h:384
void reset()
Resets the CRC to the initial state.
Definition: fnv_1.h:200
void add(TIterator begin, const TIterator end)
Definition: fnv_1.h:364
TContainer::iterator end(TContainer &container)
Definition: container.h:95
TContainer::iterator begin(TContainer &container)
Definition: container.h:45
fnv_1a_64< ENDIANNESS > & operator+=(TValue value)
Definition: fnv_1.h:263
void add(TIterator begin, const TIterator end)
Definition: fnv_1.h:243
void add(uint8_t value)
Definition: fnv_1.h:474
fnv_1_64< ENDIANNESS > & operator+=(TValue value)
Definition: fnv_1.h:142
void reset()
Resets the CRC to the initial state.
Definition: fnv_1.h:78
value_type value() const
Gets the fnv_1_32 value.
Definition: fnv_1.h:375
fnv_1_64()
Default constructor.
Definition: fnv_1.h:58
void add(TValue value)
Definition: fnv_1.h:87
fnv_1_32(TIterator begin, const TIterator end)
Definition: fnv_1.h:312
void reset()
Resets the CRC to the initial state.
Definition: fnv_1.h:442
void add(TValue value)
Definition: fnv_1.h:451
void add(TIterator begin, const TIterator end)
Definition: fnv_1.h:122
void add(uint8_t value)
Definition: fnv_1.h:232
void add(TValue value)
Definition: fnv_1.h:209
void add(TIterator begin, const TIterator end)
Definition: fnv_1.h:485
value_type value() const
Gets the fnv_1_64 value.
Definition: fnv_1.h:133
fnv_1a_32< ENDIANNESS > & operator+=(TValue value)
Definition: fnv_1.h:505
void add(uint8_t value)
Definition: fnv_1.h:353
void reset()
Resets the CRC to the initial state.
Definition: fnv_1.h:321