31#ifndef ETL_PEARSON_INCLUDED
32#define ETL_PEARSON_INCLUDED
35#include "static_assert.h"
43ETL_STATIC_ASSERT(ETL_USING_8BIT_TYPES,
"This file does not currently support targets with no 8bit type");
45#if defined(ETL_COMPILER_KEIL)
46#pragma diag_suppress 1300
59 template <
size_t HASH_LENGTH>
80 template<
typename TIterator>
84 ETL_STATIC_ASSERT(
sizeof(
typename etl::iterator_traits<TIterator>::value_type) == 1,
"Type not supported");
103 template<
typename TIterator>
106 ETL_STATIC_ASSERT(
sizeof(
typename etl::iterator_traits<TIterator>::value_type) == 1,
"Type not supported");
120 static ETL_CONSTANT uint8_t PEARSON_LOOKUP[] =
122 228, 39, 61, 95, 227, 187, 0, 197, 31, 189, 161, 222, 34, 15, 221, 246,
123 19, 234, 6, 50, 113, 3, 91, 63, 77, 245, 144, 2, 183, 196, 25, 226,
124 97, 126, 48, 59, 217, 4, 100, 145, 12, 88, 203, 149, 80, 154, 38, 27,
125 224, 218, 158, 115, 202, 79, 53, 83, 242, 36, 139, 131, 136, 191, 42, 170,
126 23, 99, 156, 51, 143, 60, 233, 206, 62, 108, 17, 67, 81, 71, 93, 195,
127 26, 231, 247, 96, 24, 200, 176, 209, 152, 212, 138, 165, 75, 185, 130, 248,
128 125, 110, 10, 116, 201, 90, 69, 204, 85, 251, 78, 157, 47, 184, 169, 141,
129 134, 230, 89, 21, 146, 46, 55, 128, 148, 207, 216, 11, 114, 199, 103, 102,
130 166, 244, 5, 104, 225, 160, 132, 28, 172, 65, 121, 140, 153, 119, 198, 210,
131 58, 87, 117, 177, 33, 22, 13, 37, 49, 174, 109, 40, 73, 211, 18, 167,
132 164, 252, 168, 74, 30, 173, 35, 98, 66, 193, 94, 175, 86, 54, 179, 122,
133 220, 151, 192, 29, 133, 254, 155, 127, 240, 232, 190, 180, 8, 68, 236, 20,
134 137, 92, 219, 208, 52, 250, 147, 142, 111, 112, 120, 45, 135, 255, 123, 229,
135 57, 182, 243, 124, 186, 253, 7, 237, 9, 16, 70, 171, 235, 107, 223, 118,
136 215, 178, 194, 181, 43, 188, 106, 105, 64, 241, 84, 238, 159, 44, 32, 76,
137 213, 163, 150, 101, 129, 14, 249, 205, 214, 1, 41, 56, 162, 72, 239, 82
142 for (
size_t i = 0UL; i < HASH_LENGTH; ++i)
144 hash[i] = PEARSON_LOOKUP[(uint32_t(value_) + i) % 256];
151 for (
size_t i = 0UL; i < HASH_LENGTH; ++i)
153 hash[i] = PEARSON_LOOKUP[hash[i] ^ value_];
ETL_CONSTEXPR14 void fill(parameter_t value)
Definition: array.h:369
void add(uint8_t value_)
Definition: pearson.h:118
void reset()
Resets the hash to the initial state.
Definition: pearson.h:93
value_type value() const
Gets the hash value.
Definition: pearson.h:161
void add(TIterator begin, const TIterator end)
Definition: pearson.h:104
pearson(TIterator begin, const TIterator end)
Definition: pearson.h:81
pearson()
Default constructor.
Definition: pearson.h:69
bitset_ext
Definition: absolute.h:38
ETL_CONSTEXPR TContainer::iterator begin(TContainer &container)
Definition: iterator.h:931
ETL_CONSTEXPR TContainer::iterator end(TContainer &container)
Definition: iterator.h:961