Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(107)

Side by Side Diff: core/include/fxcrt/fx_string.h

Issue 1125703004: Fix issuse with != and == shown by fx_basic_bstring unit tests. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Tidy, avoid typedefs to improve transparency. Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | core/src/fxcrt/fx_basic_bstring.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #ifndef _FX_STRING_H_ 7 #ifndef _FX_STRING_H_
8 #define _FX_STRING_H_ 8 #define _FX_STRING_H_
9 9
10 #include <stdint.h> // For intptr_t. 10 #include <stdint.h> // For intptr_t.
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 87
88 CFX_ByteStringC& operator = (const CFX_ByteStringC& src) 88 CFX_ByteStringC& operator = (const CFX_ByteStringC& src)
89 { 89 {
90 m_Ptr = src.m_Ptr; 90 m_Ptr = src.m_Ptr;
91 m_Length = src.m_Length; 91 m_Length = src.m_Length;
92 return *this; 92 return *this;
93 } 93 }
94 94
95 CFX_ByteStringC& operator = (const CFX_ByteString& src); 95 CFX_ByteStringC& operator = (const CFX_ByteString& src);
96 96
97 bool» » » operator == (const CFX_ByteStringC& str) const 97 bool operator== (const char* ptr) const {
98 { 98 return strlen(ptr) == m_Length &&
99 return »str.m_Length == m_Length && FXSYS_memcmp32(str.m_Ptr, m_Ptr, m_L ength) == 0; 99 FXSYS_memcmp32(ptr, m_Ptr, m_Length) == 0;
100 } 100 }
101 101 bool operator== (const CFX_ByteStringC& other) const {
102 bool» » » operator != (const CFX_ByteStringC& str) const 102 return other.m_Length == m_Length &&
103 { 103 FXSYS_memcmp32(other.m_Ptr, m_Ptr, m_Length) == 0;
104 return »str.m_Length != m_Length || FXSYS_memcmp32(str.m_Ptr, m_Ptr, m_L ength) != 0; 104 }
105 bool operator!= (const char* ptr) const { return !(*this == ptr); }
106 bool operator!= (const CFX_ByteStringC& other) const {
107 return !(*this == other);
105 } 108 }
106 109
107 FX_DWORD GetID(FX_STRSIZE start_pos = 0) const; 110 FX_DWORD GetID(FX_STRSIZE start_pos = 0) const;
108 111
109 FX_LPCBYTE GetPtr() const 112 FX_LPCBYTE GetPtr() const
110 { 113 {
111 return m_Ptr; 114 return m_Ptr;
112 } 115 }
113 116
114 FX_LPCSTR GetCStr() const 117 FX_LPCSTR GetCStr() const
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 protected: 162 protected:
160 FX_LPCBYTE m_Ptr; 163 FX_LPCBYTE m_Ptr;
161 FX_STRSIZE m_Length; 164 FX_STRSIZE m_Length;
162 165
163 private: 166 private:
164 void* operator new (size_t) throw() 167 void* operator new (size_t) throw()
165 { 168 {
166 return NULL; 169 return NULL;
167 } 170 }
168 }; 171 };
172 inline bool operator== (const char* lhs, const CFX_ByteStringC& rhs) {
173 return rhs == lhs;
174 }
175 inline bool operator!= (const char* lhs, const CFX_ByteStringC& rhs) {
176 return rhs != lhs;
177 }
169 typedef const CFX_ByteStringC& FX_BSTR; 178 typedef const CFX_ByteStringC& FX_BSTR;
170 #define FX_BSTRC(str) CFX_ByteStringC(str, sizeof str-1) 179 #define FX_BSTRC(str) CFX_ByteStringC(str, sizeof str-1)
171 #define FXBSTR_ID(c1, c2, c3, c4) ((c1 << 24) | (c2 << 16) | (c3 << 8) | (c4)) 180 #define FXBSTR_ID(c1, c2, c3, c4) ((c1 << 24) | (c2 << 16) | (c3 << 8) | (c4))
172 181
173 // To ensure ref counts do not overflow, consider the worst possible case: 182 // To ensure ref counts do not overflow, consider the worst possible case:
174 // the entire address space contains nothing but pointers to this object. 183 // the entire address space contains nothing but pointers to this object.
175 // Since the count increments with each new pointer, the largest value is 184 // Since the count increments with each new pointer, the largest value is
176 // the number of pointers that can fit into the address space. The size of 185 // the number of pointers that can fit into the address space. The size of
177 // the address space itself is a good upper bound on it; we need not go 186 // the address space itself is a good upper bound on it; we need not go
178 // larger. 187 // larger.
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 } 245 }
237 246
238 bool IsEmpty() const 247 bool IsEmpty() const
239 { 248 {
240 return !GetLength(); 249 return !GetLength();
241 } 250 }
242 251
243 int Compare(FX_BSTR str) const; 252 int Compare(FX_BSTR str) const;
244 253
245 254
246 bool» » » » » Equal(FX_BSTR str) const; 255 bool Equal(const char* ptr) const;
256 bool Equal(const CFX_ByteStringC& str) const;
257 bool Equal(const CFX_ByteString& other) const;
247 258
259 bool EqualNoCase(FX_BSTR str) const;
248 260
249 bool» » » » » EqualNoCase(FX_BSTR str) const; 261 bool operator== (const char* ptr) const { return Equal(ptr); }
262 bool operator== (const CFX_ByteStringC& str) const { return Equal(str); }
263 bool operator== (const CFX_ByteString& other) const { return Equal(other); }
250 264
251 bool» » » » » operator == (FX_LPCSTR str) cons t 265 bool operator!= (const char* ptr) const { return !(*this == ptr); }
252 { 266 bool operator!= (const CFX_ByteStringC& str) const {
253 return Equal(str); 267 return !(*this == str);
254 } 268 }
255 269 bool operator!= (const CFX_ByteString& other) const {
256 bool» » » » » operator == (FX_BSTR str) const 270 return !(*this == other);
257 {
258 return Equal(str);
259 }
260
261 bool» » » » » operator == (const CFX_ByteStrin g& str) const;
262
263 bool» » » » » operator != (FX_LPCSTR str) cons t
264 {
265 return !Equal(str);
266 }
267
268 bool» » » » » operator != (FX_BSTR str) const
269 {
270 return !Equal(str);
271 }
272
273 bool» » » » » operator != (const CFX_ByteStrin g& str) const
274 {
275 return !operator==(str);
276 } 271 }
277 272
278 bool operator< (const CFX_ByteString& str) const 273 bool operator< (const CFX_ByteString& str) const
279 { 274 {
280 int result = FXSYS_memcmp32(c_str(), str.c_str(), std::min(GetLength(), str.GetLength())); 275 int result = FXSYS_memcmp32(c_str(), str.c_str(), std::min(GetLength(), str.GetLength()));
281 return result < 0 || (result == 0 && GetLength() < str.GetLength()); 276 return result < 0 || (result == 0 && GetLength() < str.GetLength());
282 } 277 }
283 278
284 void Empty(); 279 void Empty();
285 280
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 m_Ptr = (FX_LPCBYTE)src; 386 m_Ptr = (FX_LPCBYTE)src;
392 m_Length = src.GetLength(); 387 m_Length = src.GetLength();
393 } 388 }
394 inline CFX_ByteStringC& CFX_ByteStringC::operator = (const CFX_ByteString& src) 389 inline CFX_ByteStringC& CFX_ByteStringC::operator = (const CFX_ByteString& src)
395 { 390 {
396 m_Ptr = (FX_LPCBYTE)src; 391 m_Ptr = (FX_LPCBYTE)src;
397 m_Length = src.GetLength(); 392 m_Length = src.GetLength();
398 return *this; 393 return *this;
399 } 394 }
400 395
396 inline bool operator== (const char* lhs, const CFX_ByteString& rhs) {
397 return rhs == lhs;
398 }
399 inline bool operator== (const CFX_ByteStringC& lhs, const CFX_ByteString& rhs) {
400 return rhs == lhs;
401 }
402 inline bool operator!= (const char* lhs, const CFX_ByteString& rhs) {
403 return rhs != lhs;
404 }
405 inline bool operator!= (const CFX_ByteStringC& lhs, const CFX_ByteString& rhs) {
406 return rhs != lhs;
407 }
408
401 inline CFX_ByteString operator + (FX_BSTR str1, FX_BSTR str2) 409 inline CFX_ByteString operator + (FX_BSTR str1, FX_BSTR str2)
402 { 410 {
403 return CFX_ByteString(str1, str2); 411 return CFX_ByteString(str1, str2);
404 } 412 }
405 inline CFX_ByteString operator + (FX_BSTR str1, FX_LPCSTR str2) 413 inline CFX_ByteString operator + (FX_BSTR str1, FX_LPCSTR str2)
406 { 414 {
407 return CFX_ByteString(str1, str2); 415 return CFX_ByteString(str1, str2);
408 } 416 }
409 inline CFX_ByteString operator + (FX_LPCSTR str1, FX_BSTR str2) 417 inline CFX_ByteString operator + (FX_LPCSTR str1, FX_BSTR str2)
410 { 418 {
(...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after
841 CFX_ByteString FX_UTF8Encode(FX_LPCWSTR pwsStr, FX_STRSIZE len); 849 CFX_ByteString FX_UTF8Encode(FX_LPCWSTR pwsStr, FX_STRSIZE len);
842 inline CFX_ByteString FX_UTF8Encode(FX_WSTR wsStr) 850 inline CFX_ByteString FX_UTF8Encode(FX_WSTR wsStr)
843 { 851 {
844 return FX_UTF8Encode(wsStr.GetPtr(), wsStr.GetLength()); 852 return FX_UTF8Encode(wsStr.GetPtr(), wsStr.GetLength());
845 } 853 }
846 inline CFX_ByteString FX_UTF8Encode(const CFX_WideString &wsStr) 854 inline CFX_ByteString FX_UTF8Encode(const CFX_WideString &wsStr)
847 { 855 {
848 return FX_UTF8Encode(wsStr.c_str(), wsStr.GetLength()); 856 return FX_UTF8Encode(wsStr.c_str(), wsStr.GetLength());
849 } 857 }
850 #endif 858 #endif
OLDNEW
« no previous file with comments | « no previous file | core/src/fxcrt/fx_basic_bstring.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698