From 7d05f50c8ac4eea6d0c573e41a26b75d494110ee Mon Sep 17 00:00:00 2001 From: mikee47 Date: Mon, 31 Oct 2022 20:47:32 +0000 Subject: [PATCH] Fix ObjectList inheritance --- Sming/Core/Data/LinkedObject.h | 9 ++------- Sming/Core/Data/LinkedObjectList.h | 14 ++++++++++---- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/Sming/Core/Data/LinkedObject.h b/Sming/Core/Data/LinkedObject.h index 95bd20379e..14d58d8cd0 100644 --- a/Sming/Core/Data/LinkedObject.h +++ b/Sming/Core/Data/LinkedObject.h @@ -30,11 +30,6 @@ class LinkedObject return mNext; } - LinkedObject* getNext() const - { - return mNext; - } - bool insertAfter(LinkedObject* object) { if(object == nullptr) { @@ -84,7 +79,7 @@ template class LinkedObjectTemplate : public LinkedObject IteratorTemplate& operator++() { - mObject = mObject->getNext(); + this->mObject = static_cast(this->mObject->next()); return *this; } @@ -129,7 +124,7 @@ template class LinkedObjectTemplate : public LinkedObject ObjectType* getNext() const { - return reinterpret_cast(this->next()); + return static_cast(this->next()); } bool insertAfter(ObjectType* object) diff --git a/Sming/Core/Data/LinkedObjectList.h b/Sming/Core/Data/LinkedObjectList.h index b9f5e75767..b194efa681 100644 --- a/Sming/Core/Data/LinkedObjectList.h +++ b/Sming/Core/Data/LinkedObjectList.h @@ -89,6 +89,12 @@ class LinkedObjectList template class LinkedObjectListTemplate : public LinkedObjectList { public: + using Iterator = + typename LinkedObjectTemplate::template IteratorTemplate; + using ConstIterator = + typename LinkedObjectTemplate::template IteratorTemplate; + LinkedObjectListTemplate() = default; LinkedObjectListTemplate(ObjectType* object) : LinkedObjectList(object) @@ -105,22 +111,22 @@ template class LinkedObjectListTemplate : public LinkedObj return reinterpret_cast(mHead); } - typename ObjectType::Iterator begin() + Iterator begin() { return head(); } - typename ObjectType::Iterator end() + Iterator end() { return nullptr; } - typename ObjectType::ConstIterator begin() const + ConstIterator begin() const { return head(); } - typename ObjectType::ConstIterator end() const + ConstIterator end() const { return nullptr; }