/*!****************************************************************************
@file PVRTStringHash.h
@copyright Copyright (c) Imagination Technologies Limited.
@brief Inherits from PVRTString to include PVRTHash functionality for
quick string compares.
******************************************************************************/
#ifndef PVRTSTRINGHASH_H
#define PVRTSTRINGHASH_H
#include "PVRTString.h"
#include "PVRTHash.h"
/*!***********************************************************************
@class CPVRTStringHash
@brief Inherits from PVRTString to include PVRTHash functionality for
quick string compares.
*************************************************************************/
class CPVRTStringHash
{
public:
/*!***********************************************************************
@brief Constructor
@param[in] _Ptr A string
@param[in] _Count Length of _Ptr
************************************************************************/
explicit CPVRTStringHash(const char* _Ptr, size_t _Count = CPVRTString::npos);
/*!***********************************************************************
@brief Constructor
@param[in] _Right A string
************************************************************************/
explicit CPVRTStringHash(const CPVRTString& _Right);
/*!***********************************************************************
@brief Constructor
************************************************************************/
CPVRTStringHash();
/*!***********************************************************************
@brief Appends a string
@param[in] _Ptr A string
@return Updated string
*************************************************************************/
CPVRTStringHash& append(const char* _Ptr);
/*!***********************************************************************
@brief Appends a string
@param[in] _Str A string
@return Updated string
*************************************************************************/
CPVRTStringHash& append(const CPVRTString& _Str);
/*!***********************************************************************
@brief Assigns the string to the string _Ptr
@param[in] _Ptr A string
@return Updated string
*************************************************************************/
CPVRTStringHash& assign(const char* _Ptr);
/*!***********************************************************************
@brief Assigns the string to the string _Str
@param[in] _Str A string
@return Updated string
*************************************************************************/
CPVRTStringHash& assign(const CPVRTString& _Str);
/*!***********************************************************************
@brief == Operator. This function compares the hash values of
the string.
@param[in] _Str A hashed string to compare with
@return True if they match
*************************************************************************/
bool operator==(const CPVRTStringHash& _Str) const;
/*!***********************************************************************
@brief == Operator. This function performs a strcmp()
as it's more efficient to strcmp than to hash the string
for every comparison.
@param[in] _Str A string to compare with
@return True if they match
*************************************************************************/
bool operator==(const char* _Str) const;
/*!***********************************************************************
@brief == Operator. This function performs a strcmp()
as it's more efficient to strcmp than to hash the string
for every comparison.
@param[in] _Str A string to compare with
@return True if they match
*************************************************************************/
bool operator==(const CPVRTString& _Str) const;
/*!***********************************************************************
@brief == Operator. This function compares the hash values of
the string.
@param[in] Hash A Hash to compare with
@return True if they match
*************************************************************************/
bool operator==(const CPVRTHash& Hash) const;
/*!***********************************************************************
@brief != Operator
@param[in] _Str A string to compare with
@return True if they don't match
*************************************************************************/
bool operator!=(const CPVRTStringHash& _Str) const;
/*!***********************************************************************
@brief != Operator. This function compares the hash values of
the string.
@param[in] Hash A Hash to compare with
@return True if they match
*************************************************************************/
bool operator!=(const CPVRTHash& Hash) const;
/*!***********************************************************************
@fn String
@return The original string
@brief Returns the original, base string.
*************************************************************************/
const CPVRTString& String() const;
/*!***********************************************************************
@brief Returns the hash of the base string
@fn Hash
@return The hash
*************************************************************************/
const CPVRTHash& Hash() const;
/*!***************************************************************************
@fn c_str
@return The original string.
@brief Returns the base string as a const char*.
*****************************************************************************/
const char* c_str() const;
private:
CPVRTString m_String;
CPVRTHash m_Hash;
};
#endif