1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef BASE_HASH_H_
6#define BASE_HASH_H_
7
8#include <limits>
9#include <string>
10
11#include "base/base_export.h"
12#include "base/basictypes.h"
13#include "base/logging.h"
14
15namespace base {
16
17// WARNING: This hash function should not be used for any cryptographic purpose.
18BASE_EXPORT uint32 SuperFastHash(const char* data, int len);
19
20// Computes a hash of a memory buffer |data| of a given |length|.
21// WARNING: This hash function should not be used for any cryptographic purpose.
22inline uint32 Hash(const char* data, size_t length) {
23  if (length > static_cast<size_t>(std::numeric_limits<int>::max())) {
24    NOTREACHED();
25    return 0;
26  }
27  return SuperFastHash(data, static_cast<int>(length));
28}
29
30// Computes a hash of a string |str|.
31// WARNING: This hash function should not be used for any cryptographic purpose.
32inline uint32 Hash(const std::string& str) {
33  return Hash(str.data(), str.size());
34}
35
36}  // namespace base
37
38#endif  // BASE_HASH_H_
39