stl_hash_fun.h
上传用户:sichengcw
上传日期:2009-02-17
资源大小:202k
文件大小:3k
源码类别:

STL

开发平台:

Visual C++

  1. /*
  2.  * Copyright (c) 1996
  3.  * Silicon Graphics Computer Systems, Inc.
  4.  *
  5.  * Permission to use, copy, modify, distribute and sell this software
  6.  * and its documentation for any purpose is hereby granted without fee,
  7.  * provided that the above copyright notice appear in all copies and
  8.  * that both that copyright notice and this permission notice appear
  9.  * in supporting documentation.  Silicon Graphics makes no
  10.  * representations about the suitability of this software for any
  11.  * purpose.  It is provided "as is" without express or implied warranty.
  12.  *
  13.  *
  14.  * Copyright (c) 1994
  15.  * Hewlett-Packard Company
  16.  *
  17.  * Permission to use, copy, modify, distribute and sell this software
  18.  * and its documentation for any purpose is hereby granted without fee,
  19.  * provided that the above copyright notice appear in all copies and
  20.  * that both that copyright notice and this permission notice appear
  21.  * in supporting documentation.  Hewlett-Packard Company makes no
  22.  * representations about the suitability of this software for any
  23.  * purpose.  It is provided "as is" without express or implied warranty.
  24.  *
  25.  */
  26. /* NOTE: This is an internal header file, included by other STL headers.
  27.  *   You should not attempt to use it directly.
  28.  */
  29. #ifndef __SGI_STL_HASH_FUN_H
  30. #define __SGI_STL_HASH_FUN_H
  31. #include <stddef.h>
  32. __STL_BEGIN_NAMESPACE
  33. template <class Key> struct hash { };
  34. inline size_t __stl_hash_string(const char* s)
  35. {
  36.   unsigned long h = 0; 
  37.   for ( ; *s; ++s)
  38.     h = 5*h + *s;
  39.   
  40.   return size_t(h);
  41. }
  42. __STL_TEMPLATE_NULL struct hash<char*>
  43. {
  44.   size_t operator()(const char* s) const { return __stl_hash_string(s); }
  45. };
  46. __STL_TEMPLATE_NULL struct hash<const char*>
  47. {
  48.   size_t operator()(const char* s) const { return __stl_hash_string(s); }
  49. };
  50. __STL_TEMPLATE_NULL struct hash<char> {
  51.   size_t operator()(char x) const { return x; }
  52. };
  53. __STL_TEMPLATE_NULL struct hash<unsigned char> {
  54.   size_t operator()(unsigned char x) const { return x; }
  55. };
  56. __STL_TEMPLATE_NULL struct hash<signed char> {
  57.   size_t operator()(unsigned char x) const { return x; }
  58. };
  59. __STL_TEMPLATE_NULL struct hash<short> {
  60.   size_t operator()(short x) const { return x; }
  61. };
  62. __STL_TEMPLATE_NULL struct hash<unsigned short> {
  63.   size_t operator()(unsigned short x) const { return x; }
  64. };
  65. __STL_TEMPLATE_NULL struct hash<int> {
  66.   size_t operator()(int x) const { return x; }
  67. };
  68. __STL_TEMPLATE_NULL struct hash<unsigned int> {
  69.   size_t operator()(unsigned int x) const { return x; }
  70. };
  71. __STL_TEMPLATE_NULL struct hash<long> {
  72.   size_t operator()(long x) const { return x; }
  73. };
  74. __STL_TEMPLATE_NULL struct hash<unsigned long> {
  75.   size_t operator()(unsigned long x) const { return x; }
  76. };
  77. __STL_END_NAMESPACE
  78. #endif /* __SGI_STL_HASH_FUN_H */
  79. // Local Variables:
  80. // mode:C++
  81. // End: