|
Gaudi Framework, version v21r8 |
| Home | Generated: 17 Mar 2010 |
#include <GaudiKernel/Hash.h>


Public Member Functions | |
| std::size_t | operator() (const T &key) const |
| the hash-function | |
| template<> | |
| size_t | operator() (const GaudiAlg::ID &key) const |
| template<> | |
| std::size_t | operator() (const char *key) const |
The default implementation is based on boost::hash
To provide own specialization for type TYPE or TYPE* there are four ways:
The first and the last ways are recommended. The second way can be needed if e.g. TYPE has non trivial properties, e.g. one need to use non-const or non-ref forms of hashing value For the last way the function must reside in the same namespace, where TYPE is defines, therefore if TYPE is in a global namespace it is better to avoid this way. The most natural place for this function is a "friend function" of the class. In this way it can have access to some useful internals of the class. However this is a bit intrusive way. The third way is not recommended, since sooner or later we'll need to migrate from boost::hash to std::tr1::hash.
Comparing the previous Gaudi implementation of GaudiUtils::Hash and boost::bash specializations, one can expect:
Probably the first two items are compensated by better "hashing"-performance
Definition at line 98 of file Hash.h.
| std::size_t GaudiUtils::Hash< T >::operator() | ( | const T & | key | ) | const [inline] |
the hash-function
the generic implementations of hash-function
Definition at line 152 of file Hash.h.
00153 { 00154 using namespace boost ; 00155 return hash_value ( key ) ; 00156 }
| size_t GaudiUtils::Hash< GaudiAlg::ID >::operator() | ( | const GaudiAlg::ID & | key | ) | const [inline] |
| std::size_t GaudiUtils::Hash< char * >::operator() | ( | const char * | key | ) | const [inline] |