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

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

Issue 2341683005: Add string pools to save storage. (Closed)
Patch Set: fix compile Created 4 years, 3 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
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 CORE_FXCRT_INCLUDE_FX_STRING_H_ 7 #ifndef CORE_FXCRT_INCLUDE_FX_STRING_H_
8 #define CORE_FXCRT_INCLUDE_FX_STRING_H_ 8 #define CORE_FXCRT_INCLUDE_FX_STRING_H_
9 9
10 #include <stdint.h> // For intptr_t. 10 #include <stdint.h> // For intptr_t.
11
11 #include <algorithm> 12 #include <algorithm>
13 #include <functional>
12 14
13 #include "core/fxcrt/cfx_string_c_template.h" 15 #include "core/fxcrt/cfx_string_c_template.h"
14 #include "core/fxcrt/cfx_string_data_template.h" 16 #include "core/fxcrt/cfx_string_data_template.h"
15 #include "core/fxcrt/include/cfx_retain_ptr.h" 17 #include "core/fxcrt/include/cfx_retain_ptr.h"
16 #include "core/fxcrt/include/fx_memory.h" 18 #include "core/fxcrt/include/fx_memory.h"
17 #include "core/fxcrt/include/fx_system.h" 19 #include "core/fxcrt/include/fx_system.h"
18 20
19 class CFX_ByteString; 21 class CFX_ByteString;
20 class CFX_WideString; 22 class CFX_WideString;
21 23
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 165
164 void ReallocBeforeWrite(FX_STRSIZE nNewLen); 166 void ReallocBeforeWrite(FX_STRSIZE nNewLen);
165 void AllocBeforeWrite(FX_STRSIZE nNewLen); 167 void AllocBeforeWrite(FX_STRSIZE nNewLen);
166 void AllocCopy(CFX_ByteString& dest, 168 void AllocCopy(CFX_ByteString& dest,
167 FX_STRSIZE nCopyLen, 169 FX_STRSIZE nCopyLen,
168 FX_STRSIZE nCopyIndex) const; 170 FX_STRSIZE nCopyIndex) const;
169 void AssignCopy(const FX_CHAR* pSrcData, FX_STRSIZE nSrcLen); 171 void AssignCopy(const FX_CHAR* pSrcData, FX_STRSIZE nSrcLen);
170 void Concat(const FX_CHAR* lpszSrcData, FX_STRSIZE nSrcLen); 172 void Concat(const FX_CHAR* lpszSrcData, FX_STRSIZE nSrcLen);
171 173
172 CFX_RetainPtr<StringData> m_pData; 174 CFX_RetainPtr<StringData> m_pData;
175
173 friend class fxcrt_ByteStringConcat_Test; 176 friend class fxcrt_ByteStringConcat_Test;
177 friend class fxcrt_ByteStringPool_Test;
174 }; 178 };
175 179
176 inline bool operator==(const char* lhs, const CFX_ByteString& rhs) { 180 inline bool operator==(const char* lhs, const CFX_ByteString& rhs) {
177 return rhs == lhs; 181 return rhs == lhs;
178 } 182 }
179 inline bool operator==(const CFX_ByteStringC& lhs, const CFX_ByteString& rhs) { 183 inline bool operator==(const CFX_ByteStringC& lhs, const CFX_ByteString& rhs) {
180 return rhs == lhs; 184 return rhs == lhs;
181 } 185 }
182 inline bool operator!=(const char* lhs, const CFX_ByteString& rhs) { 186 inline bool operator!=(const char* lhs, const CFX_ByteString& rhs) {
183 return rhs != lhs; 187 return rhs != lhs;
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 362
359 void ReallocBeforeWrite(FX_STRSIZE nLen); 363 void ReallocBeforeWrite(FX_STRSIZE nLen);
360 void AllocBeforeWrite(FX_STRSIZE nLen); 364 void AllocBeforeWrite(FX_STRSIZE nLen);
361 void AllocCopy(CFX_WideString& dest, 365 void AllocCopy(CFX_WideString& dest,
362 FX_STRSIZE nCopyLen, 366 FX_STRSIZE nCopyLen,
363 FX_STRSIZE nCopyIndex) const; 367 FX_STRSIZE nCopyIndex) const;
364 void AssignCopy(const FX_WCHAR* pSrcData, FX_STRSIZE nSrcLen); 368 void AssignCopy(const FX_WCHAR* pSrcData, FX_STRSIZE nSrcLen);
365 void Concat(const FX_WCHAR* lpszSrcData, FX_STRSIZE nSrcLen); 369 void Concat(const FX_WCHAR* lpszSrcData, FX_STRSIZE nSrcLen);
366 370
367 CFX_RetainPtr<StringData> m_pData; 371 CFX_RetainPtr<StringData> m_pData;
372
368 friend class fxcrt_WideStringConcatInPlace_Test; 373 friend class fxcrt_WideStringConcatInPlace_Test;
374 friend class fxcrt_WideStringPool_Test;
369 }; 375 };
370 376
371 inline CFX_WideString operator+(const CFX_WideStringC& str1, 377 inline CFX_WideString operator+(const CFX_WideStringC& str1,
372 const CFX_WideStringC& str2) { 378 const CFX_WideStringC& str2) {
373 return CFX_WideString(str1, str2); 379 return CFX_WideString(str1, str2);
374 } 380 }
375 inline CFX_WideString operator+(const CFX_WideStringC& str1, 381 inline CFX_WideString operator+(const CFX_WideStringC& str1,
376 const FX_WCHAR* str2) { 382 const FX_WCHAR* str2) {
377 return CFX_WideString(str1, str2); 383 return CFX_WideString(str1, str2);
378 } 384 }
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 return FX_UTF8Encode(wsStr.c_str(), wsStr.GetLength()); 439 return FX_UTF8Encode(wsStr.c_str(), wsStr.GetLength());
434 } 440 }
435 441
436 FX_FLOAT FX_atof(const CFX_ByteStringC& str); 442 FX_FLOAT FX_atof(const CFX_ByteStringC& str);
437 inline FX_FLOAT FX_atof(const CFX_WideStringC& wsStr) { 443 inline FX_FLOAT FX_atof(const CFX_WideStringC& wsStr) {
438 return FX_atof(FX_UTF8Encode(wsStr.c_str(), wsStr.GetLength()).c_str()); 444 return FX_atof(FX_UTF8Encode(wsStr.c_str(), wsStr.GetLength()).c_str());
439 } 445 }
440 bool FX_atonum(const CFX_ByteStringC& str, void* pData); 446 bool FX_atonum(const CFX_ByteStringC& str, void* pData);
441 FX_STRSIZE FX_ftoa(FX_FLOAT f, FX_CHAR* buf); 447 FX_STRSIZE FX_ftoa(FX_FLOAT f, FX_CHAR* buf);
442 448
449 uint32_t FX_HashCode_GetA(const CFX_ByteStringC& str, bool bIgnoreCase);
450 uint32_t FX_HashCode_GetW(const CFX_WideStringC& str, bool bIgnoreCase);
451
452 namespace std {
dsinclair 2016/09/15 20:23:26 Are we allowed to put things into namespace std?
Tom Sepez 2016/09/15 20:51:24 See https://cs.chromium.org/chromium/src/base/opti
453
454 template <>
455 struct hash<CFX_ByteString> {
456 std::size_t operator()(const CFX_ByteString& str) const {
457 return FX_HashCode_GetA(str.AsStringC(), false);
458 }
459 };
460
461 template <>
462 struct hash<CFX_WideString> {
463 std::size_t operator()(const CFX_WideString& str) const {
464 return FX_HashCode_GetW(str.AsStringC(), false);
465 }
466 };
467
468 } // namespace std
469
470 extern template struct std::hash<CFX_ByteString>;
471 extern template struct std::hash<CFX_WideString>;
472
443 #endif // CORE_FXCRT_INCLUDE_FX_STRING_H_ 473 #endif // CORE_FXCRT_INCLUDE_FX_STRING_H_
OLDNEW
« core/fxcrt/cfx_string_pool_template_unittest.cpp ('K') | « core/fxcrt/include/fx_ext.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698