Main Page | Modules | Class Hierarchy | Data Structures | File List | Data Fields | Globals | Related Pages

CHashContainer< hashClass > Class Template Reference

Simple hash container for convenient hash manipulation using overloaded operators. More...

#include <HashContainer.h>

Inheritance diagram for CHashContainer< hashClass >:

CHashTreeNode< hashClass, CSBase, CSBuildup, CSDepth > CHashTreeNode< hashClass, 10,(10+2), 02 > CHashTreeCtrl< hashClass >

Public Types

enum  { DIGESTSIZE = hashClass::DIGESTSIZE, DIGESTSIZE32 = DIGESTSIZE >> 2 }
 Enumerate DIGESTSIZE constants used to compute memory sizes and various iterations. More...


Public Member Functions

 CHashContainer (const uint32 *pHash=NULL)
 CHashContainer (const CHashContainer &cHash)
 CHashContainer (CFile &cFile)
 CHashContainer (uint8 *pData, uint32 nData, uint8 *pSalt=NULL, uint32 nSalt=0)
 ~CHashContainer (void)
 Destroy the hash container.

bool operator== (const CHashContainer &cHash) const
bool operator!= (const CHashContainer &cHash) const
CHashContainer< hashClass > & operator= (const uint32 *pHash)
CHashContainer< hashClass > & operator= (const CHashContainer &cHash)
CHashContainer< hashClass > & operator^= (const CHashContainer &cHash)
CHashContainer< hashClass > operator^ (const CHashContainer &cHash) const
CHashContainer< hashClass > & operator|= (const CHashContainer &cHash)
CHashContainer< hashClass > operator| (const CHashContainer &cHash) const
CHashContainer< hashClass > & operator &= (const CHashContainer &cHash)
CHashContainer< hashClass > operator & (const CHashContainer &cHash) const
CHashContainer< hashClass > & operator<<= (const uint16 nBits)
CHashContainer< hashClass > operator<< (const uint16 nBits) const
CHashContainer< hashClass > & operator>>= (const uint16 nBits)
CHashContainer< hashClass > operator>> (const uint16 nBits) const
uint8 Hash (uint8 *pData, uint32 nData, uint8 *pSalt=NULL, uint32 nSalt=0)
uint8 GetHash (uint32 *pHash)
uint32 * GetHashPtr ()
CString GetHashHex ()
 Gets the hexadecimal representation of the data stored in containerHash.


Static Public Member Functions

CString StaticAlgorithmName ()
 Returns the hash algorithm name for this CHashTreeCtrl templated class.

uint64 GetCCount ()
 Returns the number of hash containers of this type that currently exist.


Static Public Attributes

const CString CLASSNAME = CString("CHashContainer/") + StaticAlgorithmName()
 Defines this class' name.


Private Attributes

uint32 containerHash [DIGESTSIZE32]
 This array holds the hash value.


Static Private Attributes

volatile uint64 containerCount = 0
 Counts the number of containers created.

hashClass m_Hash = hashClass()

Detailed Description

template<class hashClass>
class CHashContainer< hashClass >

Simple hash container for convenient hash manipulation using overloaded operators.


Member Enumeration Documentation

template<class hashClass>
anonymous enum
 

Enumerate DIGESTSIZE constants used to compute memory sizes and various iterations.

Enumeration values:
DIGESTSIZE 
DIGESTSIZE32 


Constructor & Destructor Documentation

template<class hashClass>
CHashContainer< hashClass >::CHashContainer const uint32 *  pHash = NULL  ) 
 

Create a new hash container object from uint32 or null data.

Parameters:
pHash Pointer to hash value.

template<class hashClass>
CHashContainer< hashClass >::CHashContainer const CHashContainer< hashClass > &  cHash  ) 
 

Create a new hash container object from CHashContainer. (Copy constructor.)

Parameters:
cHash Hash container to duplicate.

template<class hashClass>
CHashContainer< hashClass >::CHashContainer CFile &  cFile  ) 
 

Create a new hash from a file.

Parameters:
cFile Opened file to hash.

template<class hashClass>
CHashContainer< hashClass >::CHashContainer uint8 *  pData,
uint32  nData,
uint8 *  pSalt = NULL,
uint32  nSalt = 0
 

Create a new hash container nitialized with memory block hash.

Parameters:
pData Pointer to uint8 data to hash.
nData Amount of data to hash.
pSalt Pointer to initial hash conditions alteration data. Null means no data.
nSalt Amound of hash alteration data to hash. Zero means no data.

template<class hashClass>
CHashContainer< hashClass >::~CHashContainer void   ) 
 

Destroy the hash container.


Member Function Documentation

template<class hashClass>
uint64 CHashContainer< hashClass >.GetCCount  )  [static]
 

Returns the number of hash containers of this type that currently exist.

template<class hashClass>
uint8 CHashContainer< hashClass >::GetHash uint32 *  pHash  ) 
 

Gets a copy of this hash.

Parameters:
pHash Pointer to the hash's destination address.
Returns:
number of uint32 copied to the pointer.

template<class hashClass>
CString CHashContainer< hashClass >::GetHashHex  ) 
 

Gets the hexadecimal representation of the data stored in containerHash.

Gets a hex copy of this hash.

Returns:
CString object containing the hash's hexadecimal representation.

template<class hashClass>
uint32* CHashContainer< hashClass >.GetHashPtr  ) 
 

Get hash data pointer, only for testing purposes. Either obtain a hash copy with GetHash() or nice string version with GetHashHex().

Deprecated:

template<class hashClass>
uint8 CHashContainer< hashClass >::Hash uint8 *  pData,
uint32  nData,
uint8 *  pSalt = NULL,
uint32  nSalt = 0
 

Hashes the specified data to generate the node's hash.

Parameters:
pData Pointer to memory block used for hashing.
nData Number of bytes to hash.
pSalt Pointer to memory block used for hash "Salting".
nSalt Number of 'Salt' bytes to hash.
Returns:
number of uint32 copied to the pointer.

template<class hashClass>
CHashContainer< hashClass > CHashContainer< hashClass >::operator & const CHashContainer< hashClass > &  cHash  )  const
 

Bitwise Hash AND.

Parameters:
cHash Reference to the operator's right-hand parameter.
Returns:
New object containing the result.

template<class hashClass>
CHashContainer< hashClass > & CHashContainer< hashClass >::operator &= const CHashContainer< hashClass > &  cHash  ) 
 

Self-Assignment Bitwise Hash AND.

Parameters:
cHash Reference to the operator's right-hand parameter.
Returns:
Self-assignment operators return *this references.

template<class hashClass>
bool CHashContainer< hashClass >::operator!= const CHashContainer< hashClass > &  cHash  )  const
 

Inequality operator.

Parameters:
cHash Reference to the operator's right-hand parameter.
Returns:
Either true (nonzero) or false.

template<class hashClass>
CHashContainer< hashClass > CHashContainer< hashClass >::operator<< const uint16  nBits  )  const
 

Left Hash Shift.

Parameters:
nBits Operator's right-hand parameter. (number of bits to shift.)
Returns:
New object containing the result.

template<class hashClass>
CHashContainer< hashClass > & CHashContainer< hashClass >::operator<<= const uint16  nBits  ) 
 

Self-Assignment Left Hash Shift.

Parameters:
nBits Operator's right-hand parameter. (number of bits to shift.)
Returns:
Self-assignment operators return *this references.

template<class hashClass>
CHashContainer< hashClass > & CHashContainer< hashClass >::operator= const CHashContainer< hashClass > &  cHash  ) 
 

Assign hash using a CHashContainer object. (copy)

Parameters:
cHash Reference to the operator's right-hand parameter.
Returns:
Self-assignment operators return *this references.

template<class hashClass>
CHashContainer< hashClass > & CHashContainer< hashClass >::operator= const uint32 *  pHash  ) 
 

Assign hash using a uint32 pointer.

Parameters:
pHash Pointer to hash data.
Returns:
Self-assignment operators return *this references.

template<class hashClass>
bool CHashContainer< hashClass >::operator== const CHashContainer< hashClass > &  cHash  )  const
 

Equality operator.

Parameters:
cHash Reference to the operator's right-hand parameter.
Returns:
Either true (nonzero) or false.

template<class hashClass>
CHashContainer< hashClass > CHashContainer< hashClass >::operator>> const uint16  nBits  )  const
 

Left Hash Shift.

Parameters:
nBits Operator's right-hand parameter. (number of bits to shift.)
Returns:
New object containing the result.

template<class hashClass>
CHashContainer< hashClass > & CHashContainer< hashClass >::operator>>= const uint16  nBits  ) 
 

Self-Assignment Right Hash Shift.

Parameters:
nBits Operator's right-hand parameter. (number of bits to shift.)
Returns:
Self-assignment operators return *this references.

template<class hashClass>
CHashContainer< hashClass > CHashContainer< hashClass >::operator^ const CHashContainer< hashClass > &  cHash  )  const
 

Bitwise Hash XOR.

Parameters:
cHash Reference to the operator's right-hand parameter.
Returns:
New object containing the result.

template<class hashClass>
CHashContainer< hashClass > & CHashContainer< hashClass >::operator^= const CHashContainer< hashClass > &  cHash  ) 
 

Self-Assignment Bitwise Hash XOR.

Parameters:
cHash Reference to the operator's right-hand parameter.
Returns:
Self-assignment operators return *this references.

template<class hashClass>
CHashContainer< hashClass > CHashContainer< hashClass >::operator| const CHashContainer< hashClass > &  cHash  )  const
 

Bitwise Hash OR.

Parameters:
cHash Reference to the operator's right-hand parameter.
Returns:
New object containing the result.

template<class hashClass>
CHashContainer< hashClass > & CHashContainer< hashClass >::operator|= const CHashContainer< hashClass > &  cHash  ) 
 

Self-Assignment Bitwise Hash OR.

Parameters:
cHash Reference to the operator's right-hand parameter.
Returns:
Self-assignment operators return *this references.

template<class hashClass>
CString CHashContainer< hashClass >.StaticAlgorithmName  )  [static]
 

Returns the hash algorithm name for this CHashTreeCtrl templated class.


Field Documentation

template<class hashClass>
const CString CHashContainer< hashClass >::CLASSNAME = CString("CHashContainer/") + StaticAlgorithmName() [static]
 

Defines this class' name.

Reimplemented in CHashTreeCtrl< hashClass >, CHashTreeNode< hashClass, CSBase, CSBuildup, CSDepth >, and CHashTreeNode< hashClass, 10,(10+2), 02 >.

template<class hashClass>
volatile uint64 CHashContainer< hashClass >::containerCount = 0 [static, private]
 

Counts the number of containers created.

template<class hashClass>
uint32 CHashContainer< hashClass >.containerHash[DIGESTSIZE32] [private]
 

This array holds the hash value.

template<class hashClass>
hashClass CHashContainer< hashClass >::m_Hash = hashClass() [static, private]
 

Hash processing object. This static class member is used by CHashContainer to perform hashes. Using a static data member improves hashing performance by 10% at the cost of preventing two processes from hashing using CHashContainer at the same time. To preserve the efficiency gain of a static hashClass, access control should be loosely coupled to m_Hash's usage.


The documentation for this class was generated from the following files:
Generated on Sun Oct 26 12:02:54 2003 for Moonlight's eMule Tweaks Documentation by doxygen 1.3.4