| /****************************************************************************** | |
| @File PVRTStringHash.cpp | |
| @Title String Hash | |
| @Version | |
| @Copyright Copyright (c) Imagination Technologies Limited. | |
| @Platform All | |
| @Description Inherits from PVRTString to include PVRTHash functionality for | |
| quick string compares. | |
| ******************************************************************************/ | |
| #include "PVRTGlobal.h" | |
| #include "PVRTStringHash.h" | |
| /*!*********************************************************************** | |
| @Function CPVRTString | |
| @Input _Ptr A string | |
| @Input _Count Length of _Ptr | |
| @Description Constructor | |
| ************************************************************************/ | |
| CPVRTStringHash::CPVRTStringHash(const char* _Ptr, size_t _Count) : | |
| m_String(_Ptr, _Count) | |
| { | |
| m_Hash = CPVRTHash::MakeHash(m_String); | |
| } | |
| /*!*********************************************************************** | |
| @Function CPVRTString | |
| @Input _Right A string | |
| @Description Constructor | |
| ************************************************************************/ | |
| CPVRTStringHash::CPVRTStringHash(const CPVRTString& _Right) : | |
| m_String(_Right) | |
| { | |
| m_Hash = CPVRTHash::MakeHash(m_String); | |
| } | |
| /*!*********************************************************************** | |
| @Function CPVRTString | |
| @Description Constructor | |
| ************************************************************************/ | |
| CPVRTStringHash::CPVRTStringHash() | |
| { | |
| } | |
| /*!*********************************************************************** | |
| @Function append | |
| @Input _Ptr A string | |
| @Returns Updated string | |
| @Description Appends a string | |
| *************************************************************************/ | |
| CPVRTStringHash& CPVRTStringHash::append(const char* _Ptr) | |
| { | |
| m_String.append(_Ptr); | |
| m_Hash = CPVRTHash::MakeHash(m_String); | |
| return *this; | |
| } | |
| /*!*********************************************************************** | |
| @Function append | |
| @Input _Str A string | |
| @Returns Updated string | |
| @Description Appends a string | |
| *************************************************************************/ | |
| CPVRTStringHash& CPVRTStringHash::append(const CPVRTString& _Str) | |
| { | |
| m_String.append(_Str); | |
| m_Hash = CPVRTHash::MakeHash(m_String); | |
| return *this; | |
| } | |
| /*!*********************************************************************** | |
| @Function assign | |
| @Input _Ptr A string | |
| @Returns Updated string | |
| @Description Assigns the string to the string _Ptr | |
| *************************************************************************/ | |
| CPVRTStringHash& CPVRTStringHash::assign(const char* _Ptr) | |
| { | |
| m_String.assign(_Ptr); | |
| m_Hash = CPVRTHash::MakeHash(m_String); | |
| return *this; | |
| } | |
| /*!*********************************************************************** | |
| @Function assign | |
| @Input _Str A string | |
| @Returns Updated string | |
| @Description Assigns the string to the string _Str | |
| *************************************************************************/ | |
| CPVRTStringHash& CPVRTStringHash::assign(const CPVRTString& _Str) | |
| { | |
| m_String.assign(_Str); | |
| m_Hash = CPVRTHash::MakeHash(m_String); | |
| return *this; | |
| } | |
| /*!*********************************************************************** | |
| @Function == | |
| @Input _Str A string to compare with | |
| @Returns True if they match | |
| @Description == Operator | |
| *************************************************************************/ | |
| bool CPVRTStringHash::operator==(const CPVRTStringHash& _Str) const | |
| { | |
| return (m_Hash == _Str.Hash()); | |
| } | |
| /*!*********************************************************************** | |
| @Function == | |
| @Input Hash A hash to compare with | |
| @Returns True if they match | |
| @Description == Operator | |
| *************************************************************************/ | |
| bool CPVRTStringHash::operator==(const CPVRTHash& Hash) const | |
| { | |
| return (m_Hash == Hash); | |
| } | |
| /*!*********************************************************************** | |
| @Function == | |
| @Input _Str A string to compare with | |
| @Returns True if they match | |
| @Description == Operator. This function performs a strcmp() | |
| as it's more efficient to strcmp than to hash the string | |
| for every comparison. | |
| *************************************************************************/ | |
| bool CPVRTStringHash::operator==(const char* _Str) const | |
| { | |
| return (m_String.compare(_Str) == 0); | |
| } | |
| /*!*********************************************************************** | |
| @Function == | |
| @Input _Str A string to compare with | |
| @Returns True if they match | |
| @Description == Operator. This function performs a strcmp() | |
| as it's more efficient to strcmp than to hash the string | |
| for every comparison. | |
| *************************************************************************/ | |
| bool CPVRTStringHash::operator==(const CPVRTString& _Str) const | |
| { | |
| return (m_String.compare(_Str) == 0); | |
| } | |
| /*!*********************************************************************** | |
| @Function != | |
| @Input _Str A string to compare with | |
| @Returns True if they don't match | |
| @Description != Operator | |
| *************************************************************************/ | |
| bool CPVRTStringHash::operator!=(const CPVRTStringHash& _Str) const | |
| { | |
| return (m_Hash != _Str.Hash()); | |
| } | |
| /*!*********************************************************************** | |
| @Function != | |
| @Input Hash A hash to compare with | |
| @Returns True if they match | |
| @Description != Operator | |
| *************************************************************************/ | |
| bool CPVRTStringHash::operator!=(const CPVRTHash& Hash) const | |
| { | |
| return (m_Hash != Hash); | |
| } | |
| /*!*********************************************************************** | |
| @Function String | |
| @Returns The original string | |
| @Description Returns the original, base string. | |
| *************************************************************************/ | |
| const CPVRTString& CPVRTStringHash::String() const | |
| { | |
| return m_String; | |
| } | |
| /*!*********************************************************************** | |
| @Function Hash | |
| @Returns The hash | |
| @Description Returns the hash of the base string | |
| *************************************************************************/ | |
| const CPVRTHash& CPVRTStringHash::Hash() const | |
| { | |
| return m_Hash; | |
| } | |
| /*!*************************************************************************** | |
| @Function c_str | |
| @Return The original string. | |
| @Description Returns the base string as a const char*. | |
| *****************************************************************************/ | |
| const char* CPVRTStringHash::c_str() const | |
| { | |
| return m_String.c_str(); | |
| } | |