|  |  | @@ -10,7 +10,7 @@ | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | namespace codedweller { | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | uint32_t primes[256] { | 
		
	
		
			
			|  |  |  | const uint32_t primes[256] { | 
		
	
		
			
			|  |  |  | 1019,   1021,   1031,   1033,   1039,   1049,   1051,   1061, | 
		
	
		
			
			|  |  |  | 1063,   1069,   1087,   1091,   1093,   1097,   1103,   1109, | 
		
	
		
			
			|  |  |  | 1117,   1123,   1129,   1151,   1153,   1163,   1171,   1181, | 
		
	
	
		
			
			|  |  | @@ -49,18 +49,22 @@ uint32_t primes[256] { | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | inline size_t mod256(size_t n) noexcept { return (n & 0xff); } | 
		
	
		
			
			|  |  |  | inline size_t selectedPrime(size_t n) noexcept { return primes[n &0xff]; } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | uint32_t mishmash(const unsigned char* buffer, size_t length) noexcept { | 
		
	
		
			
			|  |  |  | uint64_t accumulator = selectedPrime(length); | 
		
	
		
			
			|  |  |  | uint64_t mishmash(const unsigned char* buffer, size_t length, uint64_t accumulator) noexcept { | 
		
	
		
			
			|  |  |  | for(size_t index = 0; index < length; index++) { | 
		
	
		
			
			|  |  |  | unsigned char byte = buffer[index]; | 
		
	
		
			
			|  |  |  | accumulator += selectedPrime(index + accumulator); | 
		
	
		
			
			|  |  |  | accumulator *= selectedPrime(byte + accumulator); | 
		
	
		
			
			|  |  |  | accumulator += selectedPrime(byte + accumulator); | 
		
	
		
			
			|  |  |  | accumulator *= selectedPrime(accumulator); | 
		
	
		
			
			|  |  |  | accumulator += accumulator >> 32; | 
		
	
		
			
			|  |  |  | accumulator &= 0x00000fffffffffff; | 
		
	
		
			
			|  |  |  | accumulator &= 0x000fffffffffffff; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | return static_cast<uint32_t>(accumulator); | 
		
	
		
			
			|  |  |  | return accumulator; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | uint32_t mishmash(const unsigned char* buffer, size_t length) noexcept { | 
		
	
		
			
			|  |  |  | uint64_t accumulator = mishmash(buffer, length, 0); | 
		
	
		
			
			|  |  |  | return static_cast<uint32_t>(accumulator & 0x00000000ffffffff); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | uint32_t mishmash(const std::string& s) noexcept { |