ACE_Hashable Class Reference

ACE_Hashable. More...

#include <Hashable.h>

Inheritance diagram for ACE_Hashable:

Inheritance graph
[legend]
List of all members.

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.

Detailed Description

ACE_Hashable.

Definition at line 31 of file Hashable.h.


Constructor & Destructor Documentation

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 }


Member Function Documentation

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().


Member Data Documentation

unsigned long ACE_Hashable::hash_value_ [mutable, protected]

Pre-computed hash-value.

Definition at line 53 of file Hashable.h.

Referenced by hash().


The documentation for this class was generated from the following files:
Generated on Tue Feb 2 17:35:12 2010 for ACE by  doxygen 1.4.7