| OLD | NEW |
| 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. |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 ((uint32_t)c4)) | 27 ((uint32_t)c4)) |
| 28 | 28 |
| 29 #define FX_WSTRC(wstr) CFX_WideStringC(wstr, FX_ArraySize(wstr) - 1) | 29 #define FX_WSTRC(wstr) CFX_WideStringC(wstr, FX_ArraySize(wstr) - 1) |
| 30 | 30 |
| 31 // A mutable string with shared buffers using copy-on-write semantics that | 31 // A mutable string with shared buffers using copy-on-write semantics that |
| 32 // avoids the cost of std::string's iterator stability guarantees. | 32 // avoids the cost of std::string's iterator stability guarantees. |
| 33 class CFX_ByteString { | 33 class CFX_ByteString { |
| 34 public: | 34 public: |
| 35 using CharType = FX_CHAR; | 35 using CharType = FX_CHAR; |
| 36 | 36 |
| 37 CFX_ByteString() {} | 37 CFX_ByteString(); |
| 38 CFX_ByteString(const CFX_ByteString& other) : m_pData(other.m_pData) {} | 38 CFX_ByteString(const CFX_ByteString& other); |
| 39 CFX_ByteString(CFX_ByteString&& other) { m_pData.Swap(other.m_pData); } | 39 CFX_ByteString(CFX_ByteString&& other); |
| 40 | 40 |
| 41 // Deliberately implicit to avoid calling on every string literal. | 41 // Deliberately implicit to avoid calling on every string literal. |
| 42 CFX_ByteString(char ch); | 42 CFX_ByteString(char ch); |
| 43 CFX_ByteString(const FX_CHAR* ptr) | 43 CFX_ByteString(const FX_CHAR* ptr); |
| 44 : CFX_ByteString(ptr, ptr ? FXSYS_strlen(ptr) : 0) {} | |
| 45 | 44 |
| 46 CFX_ByteString(const FX_CHAR* ptr, FX_STRSIZE len); | 45 CFX_ByteString(const FX_CHAR* ptr, FX_STRSIZE len); |
| 47 CFX_ByteString(const uint8_t* ptr, FX_STRSIZE len); | 46 CFX_ByteString(const uint8_t* ptr, FX_STRSIZE len); |
| 48 | 47 |
| 49 explicit CFX_ByteString(const CFX_ByteStringC& bstrc); | 48 explicit CFX_ByteString(const CFX_ByteStringC& bstrc); |
| 50 CFX_ByteString(const CFX_ByteStringC& bstrc1, const CFX_ByteStringC& bstrc2); | 49 CFX_ByteString(const CFX_ByteStringC& bstrc1, const CFX_ByteStringC& bstrc2); |
| 51 | 50 |
| 52 ~CFX_ByteString(); | 51 ~CFX_ByteString(); |
| 53 | 52 |
| 54 void clear() { m_pData.Reset(); } | 53 void clear() { m_pData.Reset(); } |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 231 const CFX_ByteString& str2) { | 230 const CFX_ByteString& str2) { |
| 232 return CFX_ByteString(str1, str2.AsStringC()); | 231 return CFX_ByteString(str1, str2.AsStringC()); |
| 233 } | 232 } |
| 234 | 233 |
| 235 // A mutable string with shared buffers using copy-on-write semantics that | 234 // A mutable string with shared buffers using copy-on-write semantics that |
| 236 // avoids the cost of std::string's iterator stability guarantees. | 235 // avoids the cost of std::string's iterator stability guarantees. |
| 237 class CFX_WideString { | 236 class CFX_WideString { |
| 238 public: | 237 public: |
| 239 using CharType = FX_WCHAR; | 238 using CharType = FX_WCHAR; |
| 240 | 239 |
| 241 CFX_WideString() {} | 240 CFX_WideString(); |
| 242 CFX_WideString(const CFX_WideString& other) : m_pData(other.m_pData) {} | 241 CFX_WideString(const CFX_WideString& other); |
| 243 CFX_WideString(CFX_WideString&& other) { m_pData.Swap(other.m_pData); } | 242 CFX_WideString(CFX_WideString&& other); |
| 244 | 243 |
| 245 // Deliberately implicit to avoid calling on every string literal. | 244 // Deliberately implicit to avoid calling on every string literal. |
| 246 CFX_WideString(FX_WCHAR ch); | 245 CFX_WideString(FX_WCHAR ch); |
| 247 CFX_WideString(const FX_WCHAR* ptr) | 246 CFX_WideString(const FX_WCHAR* ptr); |
| 248 : CFX_WideString(ptr, ptr ? FXSYS_wcslen(ptr) : 0) {} | |
| 249 | 247 |
| 250 CFX_WideString(const FX_WCHAR* ptr, FX_STRSIZE len); | 248 CFX_WideString(const FX_WCHAR* ptr, FX_STRSIZE len); |
| 251 | 249 |
| 252 explicit CFX_WideString(const CFX_WideStringC& str); | 250 explicit CFX_WideString(const CFX_WideStringC& str); |
| 253 CFX_WideString(const CFX_WideStringC& str1, const CFX_WideStringC& str2); | 251 CFX_WideString(const CFX_WideStringC& str1, const CFX_WideStringC& str2); |
| 254 | 252 |
| 255 ~CFX_WideString(); | 253 ~CFX_WideString(); |
| 256 | 254 |
| 257 static CFX_WideString FromLocal(const CFX_ByteStringC& str); | 255 static CFX_WideString FromLocal(const CFX_ByteStringC& str); |
| 258 static CFX_WideString FromCodePage(const CFX_ByteStringC& str, | 256 static CFX_WideString FromCodePage(const CFX_ByteStringC& str, |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 436 } | 434 } |
| 437 | 435 |
| 438 FX_FLOAT FX_atof(const CFX_ByteStringC& str); | 436 FX_FLOAT FX_atof(const CFX_ByteStringC& str); |
| 439 inline FX_FLOAT FX_atof(const CFX_WideStringC& wsStr) { | 437 inline FX_FLOAT FX_atof(const CFX_WideStringC& wsStr) { |
| 440 return FX_atof(FX_UTF8Encode(wsStr.c_str(), wsStr.GetLength()).c_str()); | 438 return FX_atof(FX_UTF8Encode(wsStr.c_str(), wsStr.GetLength()).c_str()); |
| 441 } | 439 } |
| 442 void FX_atonum(const CFX_ByteStringC& str, FX_BOOL& bInteger, void* pData); | 440 void FX_atonum(const CFX_ByteStringC& str, FX_BOOL& bInteger, void* pData); |
| 443 FX_STRSIZE FX_ftoa(FX_FLOAT f, FX_CHAR* buf); | 441 FX_STRSIZE FX_ftoa(FX_FLOAT f, FX_CHAR* buf); |
| 444 | 442 |
| 445 #endif // CORE_FXCRT_INCLUDE_FX_STRING_H_ | 443 #endif // CORE_FXCRT_INCLUDE_FX_STRING_H_ |
| OLD | NEW |