1 /****************************************************************************** 2 3 @File PVRTStringHash.cpp 4 5 @Title String Hash 6 7 @Version 8 9 @Copyright Copyright (c) Imagination Technologies Limited. 10 11 @Platform All 12 13 @Description Inherits from PVRTString to include PVRTHash functionality for 14 quick string compares. 15 16 ******************************************************************************/ 17 #include "PVRTGlobal.h" 18 #include "PVRTStringHash.h" 19 20 /*!*********************************************************************** 21 @Function CPVRTString 22 @Input _Ptr A string 23 @Input _Count Length of _Ptr 24 @Description Constructor 25 ************************************************************************/ 26 CPVRTStringHash::CPVRTStringHash(const char* _Ptr, size_t _Count) : 27 m_String(_Ptr, _Count) 28 { 29 m_Hash = CPVRTHash::MakeHash(m_String); 30 } 31 32 /*!*********************************************************************** 33 @Function CPVRTString 34 @Input _Right A string 35 @Description Constructor 36 ************************************************************************/ 37 CPVRTStringHash::CPVRTStringHash(const CPVRTString& _Right) : 38 m_String(_Right) 39 { 40 m_Hash = CPVRTHash::MakeHash(m_String); 41 } 42 43 /*!*********************************************************************** 44 @Function CPVRTString 45 @Description Constructor 46 ************************************************************************/ 47 CPVRTStringHash::CPVRTStringHash() 48 { 49 } 50 51 /*!*********************************************************************** 52 @Function append 53 @Input _Ptr A string 54 @Returns Updated string 55 @Description Appends a string 56 *************************************************************************/ 57 CPVRTStringHash& CPVRTStringHash::append(const char* _Ptr) 58 { 59 m_String.append(_Ptr); 60 m_Hash = CPVRTHash::MakeHash(m_String); 61 return *this; 62 } 63 64 /*!*********************************************************************** 65 @Function append 66 @Input _Str A string 67 @Returns Updated string 68 @Description Appends a string 69 *************************************************************************/ 70 CPVRTStringHash& CPVRTStringHash::append(const CPVRTString& _Str) 71 { 72 m_String.append(_Str); 73 m_Hash = CPVRTHash::MakeHash(m_String); 74 return *this; 75 } 76 77 /*!*********************************************************************** 78 @Function assign 79 @Input _Ptr A string 80 @Returns Updated string 81 @Description Assigns the string to the string _Ptr 82 *************************************************************************/ 83 CPVRTStringHash& CPVRTStringHash::assign(const char* _Ptr) 84 { 85 m_String.assign(_Ptr); 86 m_Hash = CPVRTHash::MakeHash(m_String); 87 return *this; 88 } 89 90 /*!*********************************************************************** 91 @Function assign 92 @Input _Str A string 93 @Returns Updated string 94 @Description Assigns the string to the string _Str 95 *************************************************************************/ 96 CPVRTStringHash& CPVRTStringHash::assign(const CPVRTString& _Str) 97 { 98 m_String.assign(_Str); 99 m_Hash = CPVRTHash::MakeHash(m_String); 100 return *this; 101 } 102 103 /*!*********************************************************************** 104 @Function == 105 @Input _Str A string to compare with 106 @Returns True if they match 107 @Description == Operator 108 *************************************************************************/ 109 bool CPVRTStringHash::operator==(const CPVRTStringHash& _Str) const 110 { 111 return (m_Hash == _Str.Hash()); 112 } 113 114 /*!*********************************************************************** 115 @Function == 116 @Input Hash A hash to compare with 117 @Returns True if they match 118 @Description == Operator 119 *************************************************************************/ 120 bool CPVRTStringHash::operator==(const CPVRTHash& Hash) const 121 { 122 return (m_Hash == Hash); 123 } 124 125 /*!*********************************************************************** 126 @Function == 127 @Input _Str A string to compare with 128 @Returns True if they match 129 @Description == Operator. This function performs a strcmp() 130 as it's more efficient to strcmp than to hash the string 131 for every comparison. 132 *************************************************************************/ 133 bool CPVRTStringHash::operator==(const char* _Str) const 134 { 135 return (m_String.compare(_Str) == 0); 136 } 137 138 /*!*********************************************************************** 139 @Function == 140 @Input _Str A string to compare with 141 @Returns True if they match 142 @Description == Operator. This function performs a strcmp() 143 as it's more efficient to strcmp than to hash the string 144 for every comparison. 145 *************************************************************************/ 146 bool CPVRTStringHash::operator==(const CPVRTString& _Str) const 147 { 148 return (m_String.compare(_Str) == 0); 149 } 150 151 /*!*********************************************************************** 152 @Function != 153 @Input _Str A string to compare with 154 @Returns True if they don't match 155 @Description != Operator 156 *************************************************************************/ 157 bool CPVRTStringHash::operator!=(const CPVRTStringHash& _Str) const 158 { 159 return (m_Hash != _Str.Hash()); 160 } 161 162 /*!*********************************************************************** 163 @Function != 164 @Input Hash A hash to compare with 165 @Returns True if they match 166 @Description != Operator 167 *************************************************************************/ 168 bool CPVRTStringHash::operator!=(const CPVRTHash& Hash) const 169 { 170 return (m_Hash != Hash); 171 } 172 173 /*!*********************************************************************** 174 @Function String 175 @Returns The original string 176 @Description Returns the original, base string. 177 *************************************************************************/ 178 const CPVRTString& CPVRTStringHash::String() const 179 { 180 return m_String; 181 } 182 183 /*!*********************************************************************** 184 @Function Hash 185 @Returns The hash 186 @Description Returns the hash of the base string 187 *************************************************************************/ 188 const CPVRTHash& CPVRTStringHash::Hash() const 189 { 190 return m_Hash; 191 } 192 193 /*!*************************************************************************** 194 @Function c_str 195 @Return The original string. 196 @Description Returns the base string as a const char*. 197 *****************************************************************************/ 198 const char* CPVRTStringHash::c_str() const 199 { 200 return m_String.c_str(); 201 } 202 203