From 84f5445c6683319bad5f123bd009fb72fe023d19 Mon Sep 17 00:00:00 2001 From: Cuyler36 Date: Mon, 4 Dec 2023 17:08:06 -0500 Subject: [PATCH 1/3] Match (hopefully) TLinkList & misc changes --- include/JSystem/JGadget/linklist.h | 72 +++++++++++++++--------------- 1 file changed, 37 insertions(+), 35 deletions(-) diff --git a/include/JSystem/JGadget/linklist.h b/include/JSystem/JGadget/linklist.h index 764830e7..e6d24273 100644 --- a/include/JSystem/JGadget/linklist.h +++ b/include/JSystem/JGadget/linklist.h @@ -67,11 +67,19 @@ public: TNodeLinkList() : oNode_() { Initialize_(); } ~TNodeLinkList(); + class const_iterator; + class iterator { public: + friend class TNodeLinkList::const_iterator; + friend class TNodeLinkList; + iterator() { this->p_ = nullptr; } iterator(TLinkListNode* node) { this->p_ = node; } + friend bool operator==(TNodeLinkList::iterator lhs, TNodeLinkList::iterator rhs) { return lhs.p_ == rhs.p_; } + friend bool operator!=(TNodeLinkList::iterator lhs, TNodeLinkList::iterator rhs) { return !(lhs == rhs); } + iterator& operator++() { this->p_ = this->p_->getNext(); return *this; @@ -89,14 +97,20 @@ public: TLinkListNode* operator->() const { return this->p_; } + private: TLinkListNode* p_; }; class const_iterator { public: + friend class TNodeLinkList; + const_iterator(const TLinkListNode* node) { this->p_ = node; } const_iterator(iterator it) { this->p_ = it.p_; } + friend bool operator==(TNodeLinkList::const_iterator lhs, TNodeLinkList::const_iterator rhs) { return lhs.p_ == rhs.p_; } + friend bool operator!=(TNodeLinkList::const_iterator lhs, TNodeLinkList::const_iterator rhs) { return !(lhs == rhs); } + const const_iterator& operator++() { this->p_ = this->p_->getNext(); return *this; @@ -109,6 +123,7 @@ public: const TLinkListNode* operator->() const { return this->p_; } + private: const TLinkListNode* p_; }; @@ -168,30 +183,18 @@ private: TLinkListNode oNode_; }; -inline bool operator==(TNodeLinkList::iterator lhs, TNodeLinkList::iterator rhs) { return lhs.p_ == rhs.p_; } -inline bool operator!=(TNodeLinkList::iterator lhs, TNodeLinkList::iterator rhs) { return !(lhs == rhs); } - -inline bool operator==(TNodeLinkList::const_iterator lhs, TNodeLinkList::const_iterator rhs) { return lhs.p_ == rhs.p_; } -inline bool operator!=(TNodeLinkList::const_iterator lhs, TNodeLinkList::const_iterator rhs) { return !(lhs == rhs); } - -/* TODO: TLinkList has not been matched and should be verified */ - -template -class TLinkList; - -template -bool operator==(typename TLinkList::iterator lhs, typename TLinkList::iterator rhs); - template class TLinkList : public TNodeLinkList { public: class iterator { public: + friend class TLinkList; + friend class TLinkList::const_iterator; + iterator(TNodeLinkList::iterator it) : mIt(it) { } - friend bool operator==(iterator lhs, iterator rhs) { return (lhs.mIt == rhs.mIt); } + friend bool operator==(iterator lhs, iterator rhs) { return (lhs.mIt == rhs.mIt); } friend bool operator!=(iterator lhs, iterator rhs) { return !(lhs == rhs); } - iterator& operator++() { ++mIt; return *this; @@ -205,7 +208,7 @@ public: T& operator*() const { T* p = this->operator->(); #line 541 - JUT_ASSERT(p!=0); + JGADGET_ASSERT(p!=0); return *p; } @@ -216,10 +219,11 @@ public: class const_iterator { public: const_iterator(TNodeLinkList::const_iterator it) : mIt(it) { } + const_iterator(iterator it) : mIt(it.mIt) {} friend bool operator==(const_iterator lhs, const_iterator rhs) { return (lhs.mIt == rhs.mIt); } friend bool operator!=(const_iterator lhs, const_iterator rhs) { return !(lhs == rhs); } - + const_iterator& operator++() { ++mIt; return *this; @@ -231,9 +235,9 @@ public: const T* operator->() const { return TLinkList::Element_toValue(mIt.operator->()); } const T& operator*() const { - T* p = this->operator->(); + const T* p = this->operator->(); #line 586 - JUT_ASSERT(p!=0); + JGADGET_ASSERT(p!=0); return *p; } @@ -241,9 +245,15 @@ public: TNodeLinkList::const_iterator mIt; }; + iterator begin() { return TNodeLinkList::begin(); } + const_iterator begin() const { return const_cast(this)->begin(); } + + iterator end() { return TNodeLinkList::end(); } + const_iterator end() const { return const_cast(this)->end(); } + iterator Find(const T* p) { return TNodeLinkList::Find(TLinkList::Element_toNode(p)); } - iterator Erase( T* p) { return TNodeLinkList::Erase(Element_toNode(p)); } - iterator Insert(iterator it, T* p) { return TNodeLinkList::Insert(it.mIt, Element_toNode(p)); } + iterator Erase(T* p) { return TNodeLinkList::Erase(Element_toNode(p)); } + iterator Insert(iterator it, T *p) { return TNodeLinkList::Insert(it.mIt, TLinkList::Element_toNode(p)); } void Remove(T* p) { TNodeLinkList::Remove(TLinkList::Element_toNode(p)); } void Push_front(T* p) { Insert(begin(), p); } void Push_back(T* p) { Insert(end(), p); } @@ -257,39 +267,31 @@ public: T& back() { #line 652 JUT_ASSERT(!empty()); - iterator itEnd = end(); - --itEnd; - return *itEnd; + return *--end(); } - iterator begin() { return TNodeLinkList::begin(); } - const_iterator begin() const { return TNodeLinkList::begin(); } - - iterator end() { return TNodeLinkList::end(); } - const_iterator end() const { return TNodeLinkList::end(); } - static TLinkListNode* Element_toNode(T* p) { #line 753 JUT_ASSERT(p!=0); - return (TLinkListNode*)((char*)p + O); + return (TLinkListNode*)((char*)p - O); } static const TLinkListNode* Element_toNode(const T* p) { #line 758 JUT_ASSERT(p!=0); - return (const TLinkListNode*)((const char*)p + O); + return (const TLinkListNode*)((const char*)p - O); } static T* Element_toValue(TLinkListNode* p) { #line 763 JUT_ASSERT(p!=0); - return (T*)((char*)p - O); + return (T*)((char*)p + O); } static const T* Element_toValue(const TLinkListNode* p) { #line 768 JUT_ASSERT(p!=0); - return (const T*)((const char*)p - O); + return (const T*)((const char*)p + O); } }; From 31a8d358835366310b6a6c2aa781c6697206d198 Mon Sep 17 00:00:00 2001 From: Cuyler36 Date: Mon, 4 Dec 2023 17:08:55 -0500 Subject: [PATCH 2/3] change missing assert --- include/JSystem/JGadget/linklist.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/JSystem/JGadget/linklist.h b/include/JSystem/JGadget/linklist.h index e6d24273..2c363ab0 100644 --- a/include/JSystem/JGadget/linklist.h +++ b/include/JSystem/JGadget/linklist.h @@ -208,7 +208,7 @@ public: T& operator*() const { T* p = this->operator->(); #line 541 - JGADGET_ASSERT(p!=0); + JUT_ASSERT(p!=0); return *p; } From 06408d36cc73f6798f7abf2186b5b7a238a75f4b Mon Sep 17 00:00:00 2001 From: Cuyler36 Date: Mon, 4 Dec 2023 17:09:37 -0500 Subject: [PATCH 3/3] Fix other assert --- include/JSystem/JGadget/linklist.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/JSystem/JGadget/linklist.h b/include/JSystem/JGadget/linklist.h index 2c363ab0..285989c1 100644 --- a/include/JSystem/JGadget/linklist.h +++ b/include/JSystem/JGadget/linklist.h @@ -237,7 +237,7 @@ public: const T& operator*() const { const T* p = this->operator->(); #line 586 - JGADGET_ASSERT(p!=0); + JUT_ASSERT(p!=0); return *p; }