16 static U32
min(
const U32 a,
const U32 b) {
17 return (a < b) ? a : b;
49 this->value = checksum.value;
56 return this->value == checksum.value;
62 return not (*
this == checksum);
81 const U32 offsetMod4 = offset % 4;
82 if (offsetMod4 != 0) {
83 const U8 wordLength =
static_cast<U8>(
min(length, 4 - offsetMod4));
84 this->addWordUnaligned(
86 static_cast<U8>(offset + index),
93 for ( ; index + 4 <= length; index += 4)
94 addWordAligned(&data[index]);
98 const U8 wordLength =
static_cast<U8>(length - index);
99 this->addWordUnaligned(
101 static_cast<U8>(offset + index),
109 addWordAligned(
const U8 *
const word)
111 for (
U8 i = 0; i < 4; ++i)
112 addByteAtOffset(word[i], i);
123 U8 offset = position % 4;
124 for (
U8 i = 0; i < length; ++i) {
125 addByteAtOffset(word[i], offset);
139 const U32 addend =
byte << (8*(3-offset));
140 this->value += addend;