#include <Hashable.h>
Inheritance diagram for ACE_Hashable:
Public Member Functions | |
virtual | ~ACE_Hashable (void) |
Destructor. | |
virtual unsigned long | hash (void) const |
Protected Member Functions | |
ACE_Hashable (void) | |
Protected constructor. | |
virtual unsigned long | hash_i (void) const =0 |
Protected Attributes | |
unsigned long | hash_value_ |
Pre-computed hash-value. |
Definition at line 31 of file Hashable.h.
virtual ACE_Hashable::~ACE_Hashable | ( | void | ) | [virtual] |
Destructor.
ACE_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE ACE_Hashable::ACE_Hashable | ( | void | ) | [protected] |
Protected constructor.
Definition at line 9 of file Hashable.inl.
00010 : hash_value_ (0) 00011 { 00012 }
unsigned long ACE_Hashable::hash | ( | void | ) | const [virtual] |
Computes and returns hash value. This "caches" the hash value to improve performance.
Definition at line 22 of file Hashable.cpp.
References hash_i(), and hash_value_.
00023 { 00024 // In doing the check below, we take chance of paying a performance 00025 // price when the hash value is zero. But, that will (hopefully) 00026 // happen far less often than a non-zero value, so this caching 00027 // strategy should pay off, esp. if hash computation is expensive 00028 // relative to the simple comparison. 00029 00030 if (this->hash_value_ == 0) 00031 this->hash_value_ = this->hash_i (); 00032 00033 return this->hash_value_; 00034 }
virtual unsigned long ACE_Hashable::hash_i | ( | void | ) | const [protected, pure virtual] |
This is the method that actually performs the non-cached hash computation.
Implemented in ACE_Refcounted_Hash_Recyclable< T >.
Referenced by hash().
unsigned long ACE_Hashable::hash_value_ [mutable, protected] |