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