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

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

Issue 2045083003: Remove implicit CFX_CountedRef::operator T*() (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Fix mac build. Created 4 years, 6 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/fpdfdoc/doc_ocg.cpp ('k') | core/fxge/agg/fx_agg_driver.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_BASIC_H_ 7 #ifndef CORE_FXCRT_INCLUDE_FX_BASIC_H_
8 #define CORE_FXCRT_INCLUDE_FX_BASIC_H_ 8 #define CORE_FXCRT_INCLUDE_FX_BASIC_H_
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 630 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 return m_BitSize >= m_BitPos ? m_BitSize - m_BitPos : 0; 641 return m_BitSize >= m_BitPos ? m_BitSize - m_BitPos : 0;
642 } 642 }
643 643
644 protected: 644 protected:
645 uint32_t m_BitPos; 645 uint32_t m_BitPos;
646 646
647 uint32_t m_BitSize; 647 uint32_t m_BitSize;
648 648
649 const uint8_t* m_pData; 649 const uint8_t* m_pData;
650 }; 650 };
651
651 template <class ObjClass> 652 template <class ObjClass>
652 class CFX_CountRef { 653 class CFX_CountRef {
653 public: 654 public:
654 typedef CFX_CountRef<ObjClass> Ref; 655 using Ref = CFX_CountRef<ObjClass>;
655 656
656 class CountedObj : public ObjClass { 657 class CountedObj : public ObjClass {
657 public: 658 public:
658 CountedObj() {} 659 CountedObj() {}
659
660 CountedObj(const CountedObj& src) : ObjClass(src) {} 660 CountedObj(const CountedObj& src) : ObjClass(src) {}
661 661
662 int m_RefCount; 662 int m_RefCount;
663 }; 663 };
664 664
665 CFX_CountRef() { m_pObject = nullptr; } 665 CFX_CountRef() : m_pObject(nullptr) {}
666 666 CFX_CountRef(const Ref& ref) : m_pObject(ref.m_pObject) {
667 CFX_CountRef(const Ref& ref) { 667 if (m_pObject)
668 m_pObject = ref.m_pObject;
669 if (m_pObject) {
670 m_pObject->m_RefCount++; 668 m_pObject->m_RefCount++;
671 }
672 } 669 }
673 670
674 ~CFX_CountRef() { SetNull(); } 671 ~CFX_CountRef() { SetNull(); }
675 672
676 ObjClass* New() { 673 ObjClass* New() {
677 SetNull(); 674 SetNull();
678 m_pObject = new CountedObj; 675 m_pObject = new CountedObj;
679 m_pObject->m_RefCount = 1; 676 m_pObject->m_RefCount = 1;
680 return m_pObject; 677 return m_pObject;
681 } 678 }
682 679
683 void operator=(const Ref& ref) { 680 void operator=(const Ref& ref) {
684 if (ref.m_pObject) 681 if (ref.m_pObject)
685 ref.m_pObject->m_RefCount++; 682 ref.m_pObject->m_RefCount++;
686 SetNull(); 683 SetNull();
687 m_pObject = ref.m_pObject; 684 m_pObject = ref.m_pObject;
688 } 685 }
689 686
687 bool IsNull() const { return !m_pObject; }
688 bool NotNull() const { return !IsNull(); }
dsinclair 2016/06/08 18:45:54 Can we have a followup to remove this? Seems just
689
690 const ObjClass* GetObject() const { return m_pObject; } 690 const ObjClass* GetObject() const { return m_pObject; }
691
692 operator const ObjClass*() const { return m_pObject; }
693
694 FX_BOOL IsNull() const { return !m_pObject; }
695
696 FX_BOOL NotNull() const { return !IsNull(); }
697
698 ObjClass* GetModify() { 691 ObjClass* GetModify() {
699 if (!m_pObject) { 692 if (!m_pObject) {
700 m_pObject = new CountedObj; 693 m_pObject = new CountedObj;
701 m_pObject->m_RefCount = 1; 694 m_pObject->m_RefCount = 1;
702 } else if (m_pObject->m_RefCount > 1) { 695 } else if (m_pObject->m_RefCount > 1) {
703 m_pObject->m_RefCount--; 696 m_pObject->m_RefCount--;
704 CountedObj* pOldObject = m_pObject; 697 CountedObj* pOldObject = m_pObject;
705 m_pObject = new CountedObj(*pOldObject); 698 m_pObject = new CountedObj(*pOldObject);
706 m_pObject->m_RefCount = 1; 699 m_pObject->m_RefCount = 1;
707 } 700 }
708 return m_pObject; 701 return m_pObject;
709 } 702 }
710 703
711 void SetNull() { 704 void SetNull() {
712 if (!m_pObject) { 705 if (!m_pObject) {
713 return; 706 return;
714 } 707 }
715 m_pObject->m_RefCount--; 708 m_pObject->m_RefCount--;
716 if (m_pObject->m_RefCount <= 0) { 709 if (m_pObject->m_RefCount <= 0) {
717 delete m_pObject; 710 delete m_pObject;
718 } 711 }
719 m_pObject = nullptr; 712 m_pObject = nullptr;
720 } 713 }
721 714
722 bool operator==(const Ref& ref) const { return m_pObject == ref.m_pObject; } 715 bool operator==(const Ref& ref) const { return m_pObject == ref.m_pObject; }
723 716
724 protected: 717 protected:
725 CountedObj* m_pObject; 718 CountedObj* m_pObject;
726 }; 719 };
720
727 class IFX_Pause { 721 class IFX_Pause {
728 public: 722 public:
729 virtual ~IFX_Pause() {} 723 virtual ~IFX_Pause() {}
730 virtual FX_BOOL NeedToPauseNow() = 0; 724 virtual FX_BOOL NeedToPauseNow() = 0;
731 }; 725 };
732 726
733 template <typename T> 727 template <typename T>
734 class CFX_AutoRestorer { 728 class CFX_AutoRestorer {
735 public: 729 public:
736 explicit CFX_AutoRestorer(T* location) 730 explicit CFX_AutoRestorer(T* location)
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
925 FX_FLOAT e; 919 FX_FLOAT e;
926 FX_FLOAT f; 920 FX_FLOAT f;
927 FX_FLOAT g; 921 FX_FLOAT g;
928 FX_FLOAT h; 922 FX_FLOAT h;
929 FX_FLOAT i; 923 FX_FLOAT i;
930 }; 924 };
931 925
932 uint32_t GetBits32(const uint8_t* pData, int bitpos, int nbits); 926 uint32_t GetBits32(const uint8_t* pData, int bitpos, int nbits);
933 927
934 #endif // CORE_FXCRT_INCLUDE_FX_BASIC_H_ 928 #endif // CORE_FXCRT_INCLUDE_FX_BASIC_H_
OLDNEW
« no previous file with comments | « core/fpdfdoc/doc_ocg.cpp ('k') | core/fxge/agg/fx_agg_driver.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698