flipperzero-firmware/lib/fnv1a-hash/fnv1a-hash.h
DrZlo13 714d732745
FL-78 Microsd test application (#230)
* variable cluster size, label info functions for targets
* app record
* init, mount, get label, get sn, get space
* enable exfat
* more stack for the stack god
* remove c app and add cpp app
* remove MULTI_PARTITION
* fix 4gb bug
* update app to new template lib, add animated waiting
* tiny buffer configuration
* write speed benchmark
* fnv1a hash library
* make DEFAULT_STACK_SIZE and MAX_TASK_COUNT defined per target
* fully functional sd card app
* build sd test app to release firmware
* cpp, not c
* light up red led if error
* flags for c++
* linking with g++
* suppres snprintf warning
* move format work area to heap

Co-authored-by: coreglitch <mail@s3f.ru>
2020-11-14 19:24:38 +03:00

39 lines
749 B
C

#pragma once
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
#define FNV_1A_INIT 2166136261UL
// FNV-1a hash, 32-bit
uint32_t fnv1a_buffer_hash(const uint8_t* buffer, uint32_t length, uint32_t hash);
#ifdef __cplusplus
}
#endif
#ifdef __cplusplus
// constexpr FNV-1a hash for strings, 32-bit
inline constexpr uint32_t fnv1a_string_hash(const char* str) {
uint32_t hash = FNV_1A_INIT;
while(*str) {
hash = (hash ^ *str) * 16777619ULL;
str += 1;
}
return hash;
}
#else
// FNV-1a hash for strings, 32-bit
inline uint32_t fnv1a_string_hash(const char* str) {
uint32_t hash = FNV_1A_INIT;
while(*str) {
hash = (hash ^ *str) * 16777619ULL;
str += 1;
}
return hash;
}
#endif