X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FADT%2FHashExtras.h;h=85abf915e3c5790851fc853b94e39caa273c9fb2;hb=6de603071879bdc5d7d663826354c24a9d176469;hp=da9e3f5cbadd9267d48e4c554fff290413a31454;hpb=417d31c202bf42c1f9db1afa1d2e6730c6fbd566;p=oota-llvm.git diff --git a/include/llvm/ADT/HashExtras.h b/include/llvm/ADT/HashExtras.h index da9e3f5cbad..85abf915e3c 100644 --- a/include/llvm/ADT/HashExtras.h +++ b/include/llvm/ADT/HashExtras.h @@ -1,4 +1,11 @@ -//===-- HashExtras.h - Useful functions for STL hash containers --*- C++ -*--=// +//===-- llvm/ADT/HashExtras.h - Useful functions for STL hash ---*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// // // This file contains some templates that are useful if you are working with the // STL Hashed containers. @@ -7,24 +14,25 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_SUPPORT_HASHEXTRAS_H -#define LLVM_SUPPORT_HASHEXTRAS_H +#ifndef LLVM_ADT_HASHEXTRAS_H +#define LLVM_ADT_HASHEXTRAS_H #include -#include // Cannot specialize hash template from outside of the std namespace. -namespace std { +namespace HASH_NAMESPACE { -template <> struct hash { - size_t operator()(string const &str) const { - return hash()(str.c_str()); +// Provide a hash function for arbitrary pointers... +template struct hash { + inline size_t operator()(const T *Val) const { + return reinterpret_cast(Val); } }; -// Provide a hash function for arbitrary pointers... -template struct hash { - inline size_t operator()(const T *Val) const { return (size_t)Val; } +template <> struct hash { + size_t operator()(std::string const &str) const { + return hash()(str.c_str()); + } }; } // End namespace std