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 1857073002: Make down-conversion explicit from CFX_Widetring to CFX_WideStringC. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: String argument type Created 4 years, 8 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 | « core/fxcrt/fx_xml_parser.cpp ('k') | fpdfsdk/fpdfxfa/fpdfxfa_doc.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 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 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
424 CFX_WideStringC(const FX_WCHAR* ptr, FX_STRSIZE len) { 424 CFX_WideStringC(const FX_WCHAR* ptr, FX_STRSIZE len) {
425 m_Ptr = ptr; 425 m_Ptr = ptr;
426 m_Length = (len == -1) ? FXSYS_wcslen(ptr) : len; 426 m_Length = (len == -1) ? FXSYS_wcslen(ptr) : len;
427 } 427 }
428 428
429 CFX_WideStringC(const CFX_WideStringC& src) { 429 CFX_WideStringC(const CFX_WideStringC& src) {
430 m_Ptr = src.m_Ptr; 430 m_Ptr = src.m_Ptr;
431 m_Length = src.m_Length; 431 m_Length = src.m_Length;
432 } 432 }
433 433
434 CFX_WideStringC(const CFX_WideString& src);
435
436 CFX_WideStringC& operator=(const FX_WCHAR* src) { 434 CFX_WideStringC& operator=(const FX_WCHAR* src) {
437 m_Ptr = src; 435 m_Ptr = src;
438 m_Length = FXSYS_wcslen(src); 436 m_Length = FXSYS_wcslen(src);
439 return *this; 437 return *this;
440 } 438 }
441 439
442 CFX_WideStringC& operator=(const CFX_WideStringC& src) { 440 CFX_WideStringC& operator=(const CFX_WideStringC& src) {
443 m_Ptr = src.m_Ptr; 441 m_Ptr = src.m_Ptr;
444 m_Length = src.m_Length; 442 m_Length = src.m_Length;
445 return *this; 443 return *this;
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 static CFX_WideString FromLocal(const CFX_ByteString& str); 548 static CFX_WideString FromLocal(const CFX_ByteString& str);
551 static CFX_WideString FromCodePage(const CFX_ByteString& str, 549 static CFX_WideString FromCodePage(const CFX_ByteString& str,
552 uint16_t codepage); 550 uint16_t codepage);
553 551
554 static CFX_WideString FromUTF8(const char* str, FX_STRSIZE len); 552 static CFX_WideString FromUTF8(const char* str, FX_STRSIZE len);
555 static CFX_WideString FromUTF16LE(const unsigned short* str, FX_STRSIZE len); 553 static CFX_WideString FromUTF16LE(const unsigned short* str, FX_STRSIZE len);
556 554
557 static FX_STRSIZE WStringLength(const unsigned short* str); 555 static FX_STRSIZE WStringLength(const unsigned short* str);
558 556
559 // Explicit conversion to C-style wide string. 557 // Explicit conversion to C-style wide string.
558 // Note: |this| must outlive the use of the result.
560 const FX_WCHAR* c_str() const { return m_pData ? m_pData->m_String : L""; } 559 const FX_WCHAR* c_str() const { return m_pData ? m_pData->m_String : L""; }
561 560
562 // Implicit conversion to C-style wide string -- deprecated. 561 // Implicit conversion to C-style wide string -- deprecated.
562 // Note: |this| must outlive the use of the result.
563 operator const FX_WCHAR*() const { return m_pData ? m_pData->m_String : L""; } 563 operator const FX_WCHAR*() const { return m_pData ? m_pData->m_String : L""; }
564 564
565 // Explicit conversion to CFX_WideStringC.
566 // Note: |this| must outlive the use of the result.
567 CFX_WideStringC AsWideStringC() const {
568 return CFX_WideStringC(c_str(), GetLength());
569 }
570
565 void Empty(); 571 void Empty();
566
567 bool IsEmpty() const { return !GetLength(); } 572 bool IsEmpty() const { return !GetLength(); }
568 FX_STRSIZE GetLength() const { return m_pData ? m_pData->m_nDataLength : 0; } 573 FX_STRSIZE GetLength() const { return m_pData ? m_pData->m_nDataLength : 0; }
569 574
570 const CFX_WideString& operator=(const FX_WCHAR* str); 575 const CFX_WideString& operator=(const FX_WCHAR* str);
571 const CFX_WideString& operator=(const CFX_WideString& stringSrc); 576 const CFX_WideString& operator=(const CFX_WideString& stringSrc);
572 const CFX_WideString& operator=(const CFX_WideStringC& stringSrc); 577 const CFX_WideString& operator=(const CFX_WideStringC& stringSrc);
573 578
574 const CFX_WideString& operator+=(const FX_WCHAR* str); 579 const CFX_WideString& operator+=(const FX_WCHAR* str);
575 const CFX_WideString& operator+=(FX_WCHAR ch); 580 const CFX_WideString& operator+=(FX_WCHAR ch);
576 const CFX_WideString& operator+=(const CFX_WideString& str); 581 const CFX_WideString& operator+=(const CFX_WideString& str);
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 FX_STRSIZE nSrc2Len, 683 FX_STRSIZE nSrc2Len,
679 const FX_WCHAR* lpszSrc2Data); 684 const FX_WCHAR* lpszSrc2Data);
680 void AssignCopy(FX_STRSIZE nSrcLen, const FX_WCHAR* lpszSrcData); 685 void AssignCopy(FX_STRSIZE nSrcLen, const FX_WCHAR* lpszSrcData);
681 void AllocCopy(CFX_WideString& dest, 686 void AllocCopy(CFX_WideString& dest,
682 FX_STRSIZE nCopyLen, 687 FX_STRSIZE nCopyLen,
683 FX_STRSIZE nCopyIndex) const; 688 FX_STRSIZE nCopyIndex) const;
684 689
685 StringData* m_pData; 690 StringData* m_pData;
686 friend class fxcrt_WideStringConcatInPlace_Test; 691 friend class fxcrt_WideStringConcatInPlace_Test;
687 }; 692 };
688 inline CFX_WideStringC::CFX_WideStringC(const CFX_WideString& src) { 693
689 m_Ptr = src.c_str();
690 m_Length = src.GetLength();
691 }
692 inline CFX_WideStringC& CFX_WideStringC::operator=(const CFX_WideString& src) { 694 inline CFX_WideStringC& CFX_WideStringC::operator=(const CFX_WideString& src) {
693 m_Ptr = src.c_str(); 695 m_Ptr = src.c_str();
694 m_Length = src.GetLength(); 696 m_Length = src.GetLength();
695 return *this; 697 return *this;
696 } 698 }
697 699
698 inline CFX_WideString operator+(const CFX_WideStringC& str1, 700 inline CFX_WideString operator+(const CFX_WideStringC& str1,
699 const CFX_WideStringC& str2) { 701 const CFX_WideStringC& str2) {
700 return CFX_WideString(str1, str2); 702 return CFX_WideString(str1, str2);
701 } 703 }
702 inline CFX_WideString operator+(const CFX_WideStringC& str1, 704 inline CFX_WideString operator+(const CFX_WideStringC& str1,
703 const FX_WCHAR* str2) { 705 const FX_WCHAR* str2) {
704 return CFX_WideString(str1, str2); 706 return CFX_WideString(str1, str2);
705 } 707 }
706 inline CFX_WideString operator+(const FX_WCHAR* str1, 708 inline CFX_WideString operator+(const FX_WCHAR* str1,
707 const CFX_WideStringC& str2) { 709 const CFX_WideStringC& str2) {
708 return CFX_WideString(str1, str2); 710 return CFX_WideString(str1, str2);
709 } 711 }
710 inline CFX_WideString operator+(const CFX_WideStringC& str1, FX_WCHAR ch) { 712 inline CFX_WideString operator+(const CFX_WideStringC& str1, FX_WCHAR ch) {
711 return CFX_WideString(str1, CFX_WideStringC(ch)); 713 return CFX_WideString(str1, CFX_WideStringC(ch));
712 } 714 }
713 inline CFX_WideString operator+(FX_WCHAR ch, const CFX_WideStringC& str2) { 715 inline CFX_WideString operator+(FX_WCHAR ch, const CFX_WideStringC& str2) {
714 return CFX_WideString(ch, str2); 716 return CFX_WideString(ch, str2);
715 } 717 }
716 inline CFX_WideString operator+(const CFX_WideString& str1, 718 inline CFX_WideString operator+(const CFX_WideString& str1,
717 const CFX_WideString& str2) { 719 const CFX_WideString& str2) {
718 return CFX_WideString(str1, str2); 720 return CFX_WideString(str1.AsWideStringC(), str2.AsWideStringC());
719 } 721 }
720 inline CFX_WideString operator+(const CFX_WideString& str1, FX_WCHAR ch) { 722 inline CFX_WideString operator+(const CFX_WideString& str1, FX_WCHAR ch) {
721 return CFX_WideString(str1, CFX_WideStringC(ch)); 723 return CFX_WideString(str1.AsWideStringC(), CFX_WideStringC(ch));
722 } 724 }
723 inline CFX_WideString operator+(FX_WCHAR ch, const CFX_WideString& str2) { 725 inline CFX_WideString operator+(FX_WCHAR ch, const CFX_WideString& str2) {
724 return CFX_WideString(ch, str2); 726 return CFX_WideString(ch, str2.AsWideStringC());
725 } 727 }
726 inline CFX_WideString operator+(const CFX_WideString& str1, 728 inline CFX_WideString operator+(const CFX_WideString& str1,
727 const FX_WCHAR* str2) { 729 const FX_WCHAR* str2) {
728 return CFX_WideString(str1, str2); 730 return CFX_WideString(str1.AsWideStringC(), str2);
729 } 731 }
730 inline CFX_WideString operator+(const FX_WCHAR* str1, 732 inline CFX_WideString operator+(const FX_WCHAR* str1,
731 const CFX_WideString& str2) { 733 const CFX_WideString& str2) {
732 return CFX_WideString(str1, str2); 734 return CFX_WideString(str1, str2.AsWideStringC());
733 } 735 }
734 inline CFX_WideString operator+(const CFX_WideString& str1, 736 inline CFX_WideString operator+(const CFX_WideString& str1,
735 const CFX_WideStringC& str2) { 737 const CFX_WideStringC& str2) {
736 return CFX_WideString(str1, str2); 738 return CFX_WideString(str1.AsWideStringC(), str2);
737 } 739 }
738 inline CFX_WideString operator+(const CFX_WideStringC& str1, 740 inline CFX_WideString operator+(const CFX_WideStringC& str1,
739 const CFX_WideString& str2) { 741 const CFX_WideString& str2) {
740 return CFX_WideString(str1, str2); 742 return CFX_WideString(str1, str2.AsWideStringC());
741 } 743 }
742 inline bool operator==(const wchar_t* lhs, const CFX_WideString& rhs) { 744 inline bool operator==(const wchar_t* lhs, const CFX_WideString& rhs) {
743 return rhs == lhs; 745 return rhs == lhs;
744 } 746 }
745 inline bool operator==(const CFX_WideStringC& lhs, const CFX_WideString& rhs) { 747 inline bool operator==(const CFX_WideStringC& lhs, const CFX_WideString& rhs) {
746 return rhs == lhs; 748 return rhs == lhs;
747 } 749 }
748 inline bool operator!=(const wchar_t* lhs, const CFX_WideString& rhs) { 750 inline bool operator!=(const wchar_t* lhs, const CFX_WideString& rhs) {
749 return rhs != lhs; 751 return rhs != lhs;
750 } 752 }
(...skipping 10 matching lines...) Expand all
761 } 763 }
762 764
763 FX_FLOAT FX_atof(const CFX_ByteStringC& str); 765 FX_FLOAT FX_atof(const CFX_ByteStringC& str);
764 inline FX_FLOAT FX_atof(const CFX_WideStringC& wsStr) { 766 inline FX_FLOAT FX_atof(const CFX_WideStringC& wsStr) {
765 return FX_atof(FX_UTF8Encode(wsStr.raw_str(), wsStr.GetLength()).c_str()); 767 return FX_atof(FX_UTF8Encode(wsStr.raw_str(), wsStr.GetLength()).c_str());
766 } 768 }
767 void FX_atonum(const CFX_ByteStringC& str, FX_BOOL& bInteger, void* pData); 769 void FX_atonum(const CFX_ByteStringC& str, FX_BOOL& bInteger, void* pData);
768 FX_STRSIZE FX_ftoa(FX_FLOAT f, FX_CHAR* buf); 770 FX_STRSIZE FX_ftoa(FX_FLOAT f, FX_CHAR* buf);
769 771
770 #endif // CORE_FXCRT_INCLUDE_FX_STRING_H_ 772 #endif // CORE_FXCRT_INCLUDE_FX_STRING_H_
OLDNEW
« no previous file with comments | « core/fxcrt/fx_xml_parser.cpp ('k') | fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698