| /****************************************************************************** |
| |
| @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(); |
| } |
| |