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

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

Issue 1116163003: Merge to XFA: Make sure string constructors are efficient on literals (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: 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_wstring.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.
11 #include <algorithm> 11 #include <algorithm>
12 12
13 #include "fx_memory.h" 13 #include "fx_memory.h"
14 14
15 class CFX_ByteStringC; 15 class CFX_BinaryBuf;
16 class CFX_ByteString; 16 class CFX_ByteString;
17 class CFX_WideStringC;
18 class CFX_WideString; 17 class CFX_WideString;
19 struct CFX_CharMap; 18 struct CFX_CharMap;
20 class CFX_BinaryBuf;
21 typedef int FX_STRSIZE; 19 typedef int FX_STRSIZE;
22 class CFX_ByteStringL;
23 class CFX_WideStringL;
24 20
25 // An immutable string with caller-provided storage which must outlive the 21 // An immutable string with caller-provided storage which must outlive the
26 // string itself. 22 // string itself.
27 class CFX_ByteStringC 23 class CFX_ByteStringC
28 { 24 {
29 public: 25 public:
30 typedef FX_CHAR value_type; 26 typedef FX_CHAR value_type;
31 27
32 CFX_ByteStringC() 28 CFX_ByteStringC()
33 { 29 {
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 197
202 CFX_ByteString() 198 CFX_ByteString()
203 { 199 {
204 m_pData = NULL; 200 m_pData = NULL;
205 } 201 }
206 202
207 CFX_ByteString(const CFX_ByteString& str); 203 CFX_ByteString(const CFX_ByteString& str);
208 204
209 CFX_ByteString(char ch); 205 CFX_ByteString(char ch);
210 206
211 CFX_ByteString(FX_LPCSTR ptr, FX_STRSIZE len = -1); 207 CFX_ByteString(FX_LPCSTR ptr)
208 : CFX_ByteString(ptr, ptr ? FXSYS_strlen(ptr) : 0) { }
209
210 CFX_ByteString(FX_LPCSTR ptr, FX_STRSIZE len);
212 211
213 CFX_ByteString(FX_LPCBYTE ptr, FX_STRSIZE len); 212 CFX_ByteString(FX_LPCBYTE ptr, FX_STRSIZE len);
214 213
215 CFX_ByteString(FX_BSTR bstrc); 214 CFX_ByteString(FX_BSTR bstrc);
216
217 CFX_ByteString(FX_BSTR bstrc1, FX_BSTR bstrc2); 215 CFX_ByteString(FX_BSTR bstrc1, FX_BSTR bstrc2);
218 216
219 ~CFX_ByteString(); 217 ~CFX_ByteString();
220 218
221 static CFX_ByteString FromUnicode(FX_LPCWSTR ptr, FX_STRSIZE len = -1) ; 219 static CFX_ByteString FromUnicode(FX_LPCWSTR ptr, FX_STRSIZE len = -1) ;
222 220
223 static CFX_ByteString FromUnicode(const CFX_WideString& str); 221 static CFX_ByteString FromUnicode(const CFX_WideString& str);
224 222
225 // Explicit conversion to raw string 223 // Explicit conversion to raw string
226 FX_LPCSTR c_str() const 224 FX_LPCSTR c_str() const
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after
624 public: 622 public:
625 typedef FX_WCHAR value_type; 623 typedef FX_WCHAR value_type;
626 624
627 CFX_WideString() 625 CFX_WideString()
628 { 626 {
629 m_pData = NULL; 627 m_pData = NULL;
630 } 628 }
631 629
632 CFX_WideString(const CFX_WideString& str); 630 CFX_WideString(const CFX_WideString& str);
633 631
634 CFX_WideString(FX_LPCWSTR ptr, FX_STRSIZE len = -1) 632 CFX_WideString(FX_LPCWSTR ptr)
635 { 633 : CFX_WideString(ptr, ptr ? FXSYS_wcslen(ptr) : 0) { }
636 InitStr(ptr, len); 634
637 } 635 CFX_WideString(FX_LPCWSTR ptr, FX_STRSIZE len);
638 636
639 CFX_WideString(FX_WCHAR ch); 637 CFX_WideString(FX_WCHAR ch);
640 638
641 CFX_WideString(const CFX_WideStringC& str); 639 CFX_WideString(const CFX_WideStringC& str);
642 640
643 CFX_WideString(const CFX_WideStringC& str1, const CFX_WideStringC& str2); 641 CFX_WideString(const CFX_WideStringC& str1, const CFX_WideStringC& str2);
644 642
645 ~CFX_WideString(); 643 ~CFX_WideString();
646 644
647 static CFX_WideString FromLocal(const char* str, FX_STRSIZE len = -1); 645 static CFX_WideString FromLocal(const char* str, FX_STRSIZE len = -1);
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
778 776
779 FX_STRSIZE Replace(FX_LPCWSTR lpszOld, FX_LPCWSTR l pszNew); 777 FX_STRSIZE Replace(FX_LPCWSTR lpszOld, FX_LPCWSTR l pszNew);
780 778
781 FX_STRSIZE Remove(FX_WCHAR ch); 779 FX_STRSIZE Remove(FX_WCHAR ch);
782 780
783 CFX_ByteString UTF8Encode() const; 781 CFX_ByteString UTF8Encode() const;
784 782
785 CFX_ByteString UTF16LE_Encode() const; 783 CFX_ByteString UTF16LE_Encode() const;
786 784
787 void ConvertFrom(const CFX_ByteString & str, CFX_CharMap* pCharMap = NULL); 785 void ConvertFrom(const CFX_ByteString & str, CFX_CharMap* pCharMap = NULL);
786
788 protected: 787 protected:
789 void InitStr(FX_LPCWSTR ptr, int len) ;
790
791 CFX_StringDataW* m_pData;
792 void CopyBeforeWrite(); 788 void CopyBeforeWrite();
793 void AllocBeforeWrite(FX_STRSIZE nLen ); 789 void AllocBeforeWrite(FX_STRSIZE nLen );
794 void ConcatInPlace(FX_STRSIZE nSrcLen , FX_LPCWSTR lpszSrcData); 790 void ConcatInPlace(FX_STRSIZE nSrcLen , FX_LPCWSTR lpszSrcData);
795 void ConcatCopy(FX_STRSIZE nSrc1Len, FX_LPCWSTR lpszSrc1Data, FX_STRSIZE nSrc2Len, FX_LPCWSTR lpszSrc2Data); 791 void ConcatCopy(FX_STRSIZE nSrc1Len, FX_LPCWSTR lpszSrc1Data, FX_STRSIZE nSrc2Len, FX_LPCWSTR lpszSrc2Data);
796 void AssignCopy(FX_STRSIZE nSrcLen, F X_LPCWSTR lpszSrcData); 792 void AssignCopy(FX_STRSIZE nSrcLen, F X_LPCWSTR lpszSrcData);
797 void AllocCopy(CFX_WideString& dest, FX_STRSIZE nCopyLen, FX_STRSIZE nCopyIndex) const; 793 void AllocCopy(CFX_WideString& dest, FX_STRSIZE nCopyLen, FX_STRSIZE nCopyIndex) const;
794
795 CFX_StringDataW* m_pData;
798 }; 796 };
799 inline CFX_WideStringC::CFX_WideStringC(const CFX_WideString& src) 797 inline CFX_WideStringC::CFX_WideStringC(const CFX_WideString& src)
800 { 798 {
801 m_Ptr = src.c_str(); 799 m_Ptr = src.c_str();
802 m_Length = src.GetLength(); 800 m_Length = src.GetLength();
803 } 801 }
804 inline CFX_WideStringC& CFX_WideStringC::operator = (const CFX_WideString& src) 802 inline CFX_WideStringC& CFX_WideStringC::operator = (const CFX_WideString& src)
805 { 803 {
806 m_Ptr = src.c_str(); 804 m_Ptr = src.c_str();
807 m_Length = src.GetLength(); 805 m_Length = src.GetLength();
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
874 CFX_ByteString FX_UTF8Encode(FX_LPCWSTR pwsStr, FX_STRSIZE len); 872 CFX_ByteString FX_UTF8Encode(FX_LPCWSTR pwsStr, FX_STRSIZE len);
875 inline CFX_ByteString FX_UTF8Encode(FX_WSTR wsStr) 873 inline CFX_ByteString FX_UTF8Encode(FX_WSTR wsStr)
876 { 874 {
877 return FX_UTF8Encode(wsStr.GetPtr(), wsStr.GetLength()); 875 return FX_UTF8Encode(wsStr.GetPtr(), wsStr.GetLength());
878 } 876 }
879 inline CFX_ByteString FX_UTF8Encode(const CFX_WideString &wsStr) 877 inline CFX_ByteString FX_UTF8Encode(const CFX_WideString &wsStr)
880 { 878 {
881 return FX_UTF8Encode(wsStr.c_str(), wsStr.GetLength()); 879 return FX_UTF8Encode(wsStr.c_str(), wsStr.GetLength());
882 } 880 }
883 #endif 881 #endif
OLDNEW
« no previous file with comments | « no previous file | core/src/fxcrt/fx_basic_wstring.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698