1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 #ifndef CacheHashUtils__h__
6 #define CacheHashUtils__h__
8 #include "nsISupports.h"
9 #include "mozilla/Types.h"
11 #include "nsPrintfCString.h"
14 PR_htonl((reinterpret_cast<const uint32_t *>(x))[0]), \
15 PR_htonl((reinterpret_cast<const uint32_t *>(x))[1]), \
16 PR_htonl((reinterpret_cast<const uint32_t *>(x))[2]), \
17 PR_htonl((reinterpret_cast<const uint32_t *>(x))[3]), \
18 PR_htonl((reinterpret_cast<const uint32_t *>(x))[4])
20 #define SHA1STRING(x) \
21 (nsPrintfCString("%08x%08x%08x%08x%08x", LOGSHA1(x)).get())
26 class CacheHash
: public nsISupports
29 NS_DECL_THREADSAFE_ISUPPORTS
31 typedef uint16_t Hash16_t
;
32 typedef uint32_t Hash32_t
;
34 static Hash32_t
Hash(const char* aData
, uint32_t aSize
, uint32_t aInitval
=0);
35 static Hash16_t
Hash16(const char* aData
, uint32_t aSize
,
38 explicit CacheHash(uint32_t aInitval
=0);
40 void Update(const char *aData
, uint32_t aLen
);
45 virtual ~CacheHash() {}
47 void Feed(uint32_t aVal
, uint8_t aLen
= 4);