Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "HashFNV.h"
00011
00012 #define FNV_INIT_32 ((uint32_t)0x811c9dc5)
00013 #define FNV_INIT_64 ((uint64_t)0xcbf29ce484222325ULL)
00014
00015
00016 ATSHash32FNV1a::ATSHash32FNV1a(void)
00017 {
00018 this->clear();
00019 }
00020
00021 void
00022 ATSHash32FNV1a::update(const void *data, size_t len)
00023 {
00024 uint8_t *bp = (uint8_t *) data;
00025 uint8_t *be = bp + len;
00026
00027 while (bp < be) {
00028 hval ^= (uint32_t) *bp++;
00029 hval += (hval << 1) + (hval << 4) + (hval << 7) + (hval << 8) + (hval << 24);
00030 }
00031 }
00032
00033 void
00034 ATSHash32FNV1a::final(void)
00035 {
00036 }
00037
00038 uint32_t
00039 ATSHash32FNV1a::get(void) const
00040 {
00041 return hval;
00042 }
00043
00044 void
00045 ATSHash32FNV1a::clear(void)
00046 {
00047 hval = FNV_INIT_32;
00048 }
00049
00050
00051 ATSHash64FNV1a::ATSHash64FNV1a(void)
00052 {
00053 this->clear();
00054 }
00055
00056 void
00057 ATSHash64FNV1a::update(const void *data, size_t len)
00058 {
00059 uint8_t *bp = (uint8_t *) data;
00060 uint8_t *be = bp + len;
00061
00062 while (bp < be) {
00063 hval ^= (uint64_t) *bp++;
00064 hval += (hval << 1) + (hval << 4) + (hval << 5) + (hval << 7) + (hval << 8) + (hval << 40);
00065 }
00066 }
00067
00068 void
00069 ATSHash64FNV1a::final(void)
00070 {
00071 }
00072
00073 uint64_t
00074 ATSHash64FNV1a::get(void) const
00075 {
00076 return hval;
00077 }
00078
00079 void
00080 ATSHash64FNV1a::clear(void)
00081 {
00082 hval = FNV_INIT_64;
00083 }