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