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 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
140 // A mutable string with shared buffers using copy-on-write semantics that | 140 // A mutable string with shared buffers using copy-on-write semantics that |
141 // avoids the cost of std::string's iterator stability guarantees. | 141 // avoids the cost of std::string's iterator stability guarantees. |
142 class CFX_ByteString { | 142 class CFX_ByteString { |
143 public: | 143 public: |
144 typedef FX_CHAR value_type; | 144 typedef FX_CHAR value_type; |
145 | 145 |
146 CFX_ByteString() {} | 146 CFX_ByteString() {} |
147 CFX_ByteString(const CFX_ByteString& other) : m_pData(other.m_pData) {} | 147 CFX_ByteString(const CFX_ByteString& other) : m_pData(other.m_pData) {} |
148 CFX_ByteString(CFX_ByteString&& other) { m_pData.Swap(other.m_pData); } | 148 CFX_ByteString(CFX_ByteString&& other) { m_pData.Swap(other.m_pData); } |
149 | 149 |
| 150 // Deliberately implicit to avoid calling on every string literal. |
150 CFX_ByteString(char ch); | 151 CFX_ByteString(char ch); |
151 CFX_ByteString(const FX_CHAR* ptr) | 152 CFX_ByteString(const FX_CHAR* ptr) |
152 : CFX_ByteString(ptr, ptr ? FXSYS_strlen(ptr) : 0) {} | 153 : CFX_ByteString(ptr, ptr ? FXSYS_strlen(ptr) : 0) {} |
153 | 154 |
154 CFX_ByteString(const FX_CHAR* ptr, FX_STRSIZE len); | 155 CFX_ByteString(const FX_CHAR* ptr, FX_STRSIZE len); |
155 CFX_ByteString(const uint8_t* ptr, FX_STRSIZE len); | 156 CFX_ByteString(const uint8_t* ptr, FX_STRSIZE len); |
156 | 157 |
| 158 // TODO(tsepez): mark constructor as explicit. |
157 CFX_ByteString(const CFX_ByteStringC& bstrc); | 159 CFX_ByteString(const CFX_ByteStringC& bstrc); |
158 CFX_ByteString(const CFX_ByteStringC& bstrc1, const CFX_ByteStringC& bstrc2); | 160 CFX_ByteString(const CFX_ByteStringC& bstrc1, const CFX_ByteStringC& bstrc2); |
159 | 161 |
160 ~CFX_ByteString(); | 162 ~CFX_ByteString(); |
161 | 163 |
162 void clear() { m_pData.Reset(); } | 164 void clear() { m_pData.Reset(); } |
163 | 165 |
164 static CFX_ByteString FromUnicode(const FX_WCHAR* ptr, FX_STRSIZE len = -1); | 166 static CFX_ByteString FromUnicode(const FX_WCHAR* ptr, FX_STRSIZE len = -1); |
165 static CFX_ByteString FromUnicode(const CFX_WideString& str); | 167 static CFX_ByteString FromUnicode(const CFX_WideString& str); |
166 | 168 |
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
464 // A mutable string with shared buffers using copy-on-write semantics that | 466 // A mutable string with shared buffers using copy-on-write semantics that |
465 // avoids the cost of std::string's iterator stability guarantees. | 467 // avoids the cost of std::string's iterator stability guarantees. |
466 class CFX_WideString { | 468 class CFX_WideString { |
467 public: | 469 public: |
468 typedef FX_WCHAR value_type; | 470 typedef FX_WCHAR value_type; |
469 | 471 |
470 CFX_WideString() {} | 472 CFX_WideString() {} |
471 CFX_WideString(const CFX_WideString& other) : m_pData(other.m_pData) {} | 473 CFX_WideString(const CFX_WideString& other) : m_pData(other.m_pData) {} |
472 CFX_WideString(CFX_WideString&& other) { m_pData.Swap(other.m_pData); } | 474 CFX_WideString(CFX_WideString&& other) { m_pData.Swap(other.m_pData); } |
473 | 475 |
| 476 // Deliberately implicit to avoid calling on every string literal. |
| 477 CFX_WideString(FX_WCHAR ch); |
474 CFX_WideString(const FX_WCHAR* ptr) | 478 CFX_WideString(const FX_WCHAR* ptr) |
475 : CFX_WideString(ptr, ptr ? FXSYS_wcslen(ptr) : 0) {} | 479 : CFX_WideString(ptr, ptr ? FXSYS_wcslen(ptr) : 0) {} |
476 | 480 |
477 CFX_WideString(const FX_WCHAR* ptr, FX_STRSIZE len); | 481 CFX_WideString(const FX_WCHAR* ptr, FX_STRSIZE len); |
478 CFX_WideString(FX_WCHAR ch); | |
479 | 482 |
| 483 // TODO(tsepez): mark constructor as explicit. |
480 CFX_WideString(const CFX_WideStringC& str); | 484 CFX_WideString(const CFX_WideStringC& str); |
481 CFX_WideString(const CFX_WideStringC& str1, const CFX_WideStringC& str2); | 485 CFX_WideString(const CFX_WideStringC& str1, const CFX_WideStringC& str2); |
482 | 486 |
483 ~CFX_WideString(); | 487 ~CFX_WideString(); |
484 | 488 |
485 static CFX_WideString FromLocal(const CFX_ByteStringC& str); | 489 static CFX_WideString FromLocal(const CFX_ByteStringC& str); |
486 static CFX_WideString FromCodePage(const CFX_ByteStringC& str, | 490 static CFX_WideString FromCodePage(const CFX_ByteStringC& str, |
487 uint16_t codepage); | 491 uint16_t codepage); |
488 | 492 |
489 static CFX_WideString FromUTF8(const CFX_ByteStringC& str); | 493 static CFX_WideString FromUTF8(const CFX_ByteStringC& str); |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
670 } | 674 } |
671 | 675 |
672 FX_FLOAT FX_atof(const CFX_ByteStringC& str); | 676 FX_FLOAT FX_atof(const CFX_ByteStringC& str); |
673 inline FX_FLOAT FX_atof(const CFX_WideStringC& wsStr) { | 677 inline FX_FLOAT FX_atof(const CFX_WideStringC& wsStr) { |
674 return FX_atof(FX_UTF8Encode(wsStr.c_str(), wsStr.GetLength()).c_str()); | 678 return FX_atof(FX_UTF8Encode(wsStr.c_str(), wsStr.GetLength()).c_str()); |
675 } | 679 } |
676 void FX_atonum(const CFX_ByteStringC& str, FX_BOOL& bInteger, void* pData); | 680 void FX_atonum(const CFX_ByteStringC& str, FX_BOOL& bInteger, void* pData); |
677 FX_STRSIZE FX_ftoa(FX_FLOAT f, FX_CHAR* buf); | 681 FX_STRSIZE FX_ftoa(FX_FLOAT f, FX_CHAR* buf); |
678 | 682 |
679 #endif // CORE_FXCRT_INCLUDE_FX_STRING_H_ | 683 #endif // CORE_FXCRT_INCLUDE_FX_STRING_H_ |
OLD | NEW |