hash.hh
Go to the documentation of this file.
00001 /* -*- C++ -*-
00002  * $Id: hash.hh 957 2005-03-07 16:01:20Z sjoyeux $
00003  */
00004 #ifndef UTILMM_HASH_HEADER
00005 # define UTILMM_HASH_HEADER
00006 #include "utilmm/config/config.h"
00007 
00008 # include <string>
00009 
00010 #include "utilmm/hash/hash_fwd.hh"
00011 
00012 namespace utilmm {
00013 
00029   template<typename Ty>
00030   struct hash
00031     :public std::unary_function<Ty, size_t> {
00032 
00041     size_t operator()(Ty const &arg) const; 
00042 
00043   }; // struct utilmm::hash<>
00044   
00045 
00046   template<>
00047   struct hash<bool>
00048     :public std::unary_function<bool, size_t> {
00049     size_t operator()(bool x) const {
00050       return size_t(x?1:0);
00051     }
00052   }; // struct utilmm::hash<bool>
00053 
00054   template<>
00055   struct hash<char>
00056     :public std::unary_function<char, size_t> {
00057     size_t operator()(char x) const {
00058       return static_cast<size_t>(x);
00059     }
00060   }; // struct utilmm::hash<char>
00061 
00062   template<>
00063   struct hash<signed char>
00064     :public std::unary_function<signed char, size_t> {
00065     size_t operator()(signed char x) const {
00066       return static_cast<size_t>(x);
00067     }
00068   }; // struct utilmm::hash<signed char>
00069 
00070   template<>
00071   struct hash<unsigned char>
00072     :public std::unary_function<unsigned char, size_t> {
00073     size_t operator()(unsigned char x) const {
00074       return static_cast<size_t>(x);
00075     }
00076   }; // struct utilmm::hash<unsigned char>
00077 
00078   template<>
00079   struct hash<signed int>
00080     :public std::unary_function<signed int, size_t> {
00081     size_t operator()(signed int x) const {
00082       return static_cast<size_t>(x);
00083     }
00084   }; // struct utilmm::hash<signed int>
00085 
00086   template<>
00087   struct hash<unsigned int>
00088     :public std::unary_function<unsigned int, size_t> {
00089     size_t operator()(unsigned int x) const {
00090       return static_cast<size_t>(x);
00091     }
00092   }; // struct utilmm::hash<unsigned int>
00093 
00094   template<>
00095   struct hash<signed short int>
00096     :public std::unary_function<signed short int, size_t> {
00097     size_t operator()(signed short int x) const {
00098       return static_cast<size_t>(x);
00099     }
00100   }; // struct utilmm::hash<signed short int>
00101 
00102   template<>
00103   struct hash<unsigned short int>
00104     :public std::unary_function<unsigned short int, size_t> {
00105     size_t operator()(unsigned short int x) const {
00106       return static_cast<size_t>(x);
00107     }
00108   }; // struct utilmm::hash<unsigned short int>
00109 
00110   template<>
00111   struct hash<signed long int>
00112     :public std::unary_function<signed long int, size_t> {
00113     size_t operator()(signed long int x) const {
00114       return static_cast<size_t>(x);
00115     }
00116   }; // struct utilmm::hash<signed long int>
00117 
00118   template<>
00119   struct hash<unsigned long int>
00120     :public std::unary_function<unsigned long int, size_t> {
00121     size_t operator()(unsigned long int x) const {
00122       return static_cast<size_t>(x);
00123     }
00124   }; // struct utilmm::hash<unsigned long int>
00125 
00126   template<>
00127   struct hash<float>
00128     :public std::unary_function<float, size_t> {
00129     size_t operator()(float x) const;
00130   }; // struct utilmm::hash<float>
00131 
00132   template<>
00133   struct hash<double>
00134     :public std::unary_function<double, size_t> {
00135     size_t operator()(double x) const;
00136   }; // struct utilmm::hash<double>
00137 
00138   template<>
00139   struct hash<long double>
00140     :public std::unary_function<long double, size_t> {
00141     size_t operator()(long double x) const;
00142   }; // struct utilmm::hash<long double>
00143 
00144   template<typename Ty>
00145   struct hash<Ty *>
00146     :public std::unary_function<Ty *, size_t> {
00147     size_t operator()(Ty *x) const {
00148       return reinterpret_cast<size_t>(x);
00149     }
00150   }; // struct utilmm::hash<Ty *>
00151 
00152   template<class CharT, class Traits, class Alloc>
00153   struct hash< std::basic_string<CharT, Traits, Alloc> >
00154     :public std::unary_function<std::basic_string<CharT, Traits, Alloc>, 
00155                                 size_t> {
00156     size_t operator()(std::basic_string<CharT, Traits, Alloc> const &x) const;
00157   }; // struct utilmm::hash< std::basic_string<> >
00158 
00159 } // namespace utilmm
00160 
00161 # define IN_UTILMM_HASH_HEADER
00162 #include "utilmm/hash/bits/hash.tcc"
00163 # undef IN_UTILMM_HASH_HEADER
00164 #endif // UTILMM_HASH_HEADER
00165 


utilmm
Author(s): Sylvain Joyeux/sylvain.joyeux@m4x.org
autogenerated on Wed Sep 16 2015 07:05:43