diff options
| author | Jcw87 <Jcw87@users.noreply.github.com> | 2026-01-08 06:52:18 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-08 07:52:18 -0700 |
| commit | 0e7b42e9ea78e960647ce25528cf7b65a6ddfc9d (patch) | |
| tree | 19bbd556b98acd6c23451d8e35ca7b2bce9d592a /include/JSystem | |
| parent | 2b52bc59d00bc83abce50c026447780d6c8ad943 (diff) | |
linklist debug (#3025)
Diffstat (limited to 'include/JSystem')
| -rw-r--r-- | include/JSystem/JGadget/define.h | 7 | ||||
| -rw-r--r-- | include/JSystem/JGadget/linklist.h | 98 |
2 files changed, 57 insertions, 48 deletions
diff --git a/include/JSystem/JGadget/define.h b/include/JSystem/JGadget/define.h index d6a694a445..a8c7323e8f 100644 --- a/include/JSystem/JGadget/define.h +++ b/include/JSystem/JGadget/define.h @@ -55,9 +55,9 @@ private: JGadget_outMessage out(JGadget_outMessage::warning, __FILE__, line); \ out << msg << (arg1) << (arg2) << (arg3) << (arg4); -#define JGADGET_EXITWARN(cond) \ - if (!(cond)) { \ - false; \ +#define JGADGET_EXITWARN(line, COND) \ + if (!(COND)) { \ + JGadget_outMessage(JGadget_outMessage::warning, __FILE__, line) << #COND, false; \ return false; \ } #else @@ -65,6 +65,7 @@ private: #define JGADGET_WARNMSG(line, msg) (void)0 #define JGADGET_WARNMSG1(line, msg, arg) (void)0 #define JGADGET_WARNMSG4(line, msg, arg1, arg2, arg3, arg4) (void)0 +#define JGADGET_EXITWARN(line, COND) (void)0 #endif } #endif diff --git a/include/JSystem/JGadget/linklist.h b/include/JSystem/JGadget/linklist.h index 4728f4197e..f886a2880e 100644 --- a/include/JSystem/JGadget/linklist.h +++ b/include/JSystem/JGadget/linklist.h @@ -10,88 +10,96 @@ namespace JGadget { struct TLinkListNode { TLinkListNode() { - mNext = NULL; - mPrev = NULL; + pNext_ = NULL; + pPrev_ = NULL; } ~TLinkListNode() {} - TLinkListNode* getNext() const { return mNext; } - TLinkListNode* getPrev() const { return mPrev; } + TLinkListNode* getNext() const { return pNext_; } + TLinkListNode* getPrev() const { return pPrev_; } + void clear_() { pNext_ = NULL; pPrev_ = NULL; } public: - /* 0x0 */ TLinkListNode* mNext; - /* 0x4 */ TLinkListNode* mPrev; + /* 0x0 */ TLinkListNode* pNext_; + /* 0x4 */ TLinkListNode* pPrev_; }; // Size: 0x8 struct TNodeLinkList { - struct iterator { - iterator() { node = NULL; } - explicit iterator(TLinkListNode* pNode) { node = pNode; } - iterator& operator=(const iterator& other) { node = other.node; return *this; } + struct iterator : public std::iterator<std::bidirectional_iterator_tag, TLinkListNode, s32, TLinkListNode*, TLinkListNode&> { + iterator() { p_ = NULL; } + explicit iterator(TLinkListNode* pNode) { p_ = pNode; } + iterator& operator=(const iterator& other) { p_ = other.p_; return *this; } - iterator& operator++() { node = node->getNext(); return *this; } - iterator& operator--() { node = node->getPrev(); return *this; } + iterator& operator++() { p_ = p_->getNext(); return *this; } + iterator& operator--() { p_ = p_->getPrev(); return *this; } iterator operator++(int) { const iterator old(*this); (void)++*this; return old; } iterator operator--(int) { const iterator old(*this); (void)--*this; return old; } - friend bool operator==(iterator a, iterator b) { return a.node == b.node; } + friend bool operator==(iterator a, iterator b) { return a.p_ == b.p_; } friend bool operator!=(iterator a, iterator b) { return !(a == b); } - TLinkListNode* operator->() const { return node; } - TLinkListNode& operator*() const { return *node; } + TLinkListNode* operator->() const { return p_; } + TLinkListNode& operator*() const { + JUT_ASSERT(196, p_!=NULL); + return *p_; + } public: - /* 0x00 */ TLinkListNode* node; + /* 0x00 */ TLinkListNode* p_; }; struct const_iterator { - explicit const_iterator(TLinkListNode* pNode) { node = pNode; } - explicit const_iterator(iterator it) { node = it.node; } + explicit const_iterator(const TLinkListNode* pNode) { p_ = pNode; } + explicit const_iterator(const iterator it) { p_ = it.p_; } - const_iterator& operator++() { node = node->getNext(); return *this; } - const_iterator& operator--() { node = node->getPrev(); return *this; } + const_iterator& operator++() { p_ = p_->getNext(); return *this; } + const_iterator& operator--() { p_ = p_->getPrev(); return *this; } const_iterator operator++(int) { const const_iterator old(*this); (void)++*this; return old; } const_iterator operator--(int) { const const_iterator old(*this); (void)--*this; return old; } - friend bool operator==(const_iterator a, const_iterator b) { return a.node == b.node; } + friend bool operator==(const_iterator a, const_iterator b) { return a.p_ == b.p_; } friend bool operator!=(const_iterator a, const_iterator b) { return !(a == b); } - friend bool operator==(const_iterator a, iterator b) { return a.node == b.node; } + friend bool operator==(const_iterator a, iterator b) { return a.p_ == b.p_; } friend bool operator!=(const_iterator a, iterator b) { return !(a == b); } - const TLinkListNode* operator->() const { return node; } - const TLinkListNode& operator*() const { return *node; } + const TLinkListNode* operator->() const { return p_; } + const TLinkListNode& operator*() const { return *p_; } public: - /* 0x00 */ TLinkListNode* node; + /* 0x00 */ const TLinkListNode* p_; }; - TNodeLinkList() : ocObject_() { Initialize_(); } + TNodeLinkList() : oNode_() { Initialize_(); } ~TNodeLinkList(); void Initialize_() { count = 0; - ocObject_.mNext = &ocObject_; - ocObject_.mPrev = &ocObject_; + oNode_.pNext_ = &oNode_; + oNode_.pPrev_ = &oNode_; } - iterator begin() { return iterator(ocObject_.getNext()); } - const_iterator begin() const { return const_iterator(ocObject_.getNext()); } - iterator end() { return iterator(&ocObject_); } - const_iterator end() const { return const_iterator((TLinkListNode*)(&ocObject_)); } + iterator begin() { return iterator(oNode_.getNext()); } + const_iterator begin() const { return const_iterator(oNode_.getNext()); } + iterator end() { return iterator(&oNode_); } + const_iterator end() const { return const_iterator((TLinkListNode*)(&oNode_)); } u32 size() const { return count; } bool empty() const { return size() == 0; } iterator pop_front() { return erase(begin()); } - - iterator erase(JGadget::TNodeLinkList::iterator, JGadget::TNodeLinkList::iterator); - iterator erase(JGadget::TNodeLinkList::iterator); - void splice(JGadget::TNodeLinkList::iterator, JGadget::TNodeLinkList&, - JGadget::TNodeLinkList::iterator); - iterator Find(const JGadget::TLinkListNode*); - iterator Insert(JGadget::TNodeLinkList::iterator, JGadget::TLinkListNode*); - iterator Erase(JGadget::TLinkListNode*); - void Remove(JGadget::TLinkListNode*); - - bool Iterator_isEnd_(const_iterator it) const { return it.node == &ocObject_; } + void clear() { erase(begin(), end()); } + + iterator erase(iterator, iterator); + iterator erase(iterator); + void splice(iterator, TNodeLinkList&); + void splice(iterator, TNodeLinkList&, iterator); + void splice(iterator, TNodeLinkList&, iterator, iterator); + iterator Find(const TLinkListNode*); + iterator Insert(iterator, TLinkListNode*); + iterator Erase(TLinkListNode*); + void Remove(TLinkListNode*); + bool Confirm() const; + bool Confirm_iterator(const_iterator) const; + + bool Iterator_isEnd_(const_iterator it) const { return it.p_ == &oNode_; } template <typename Predicate> void Remove_if(Predicate predicate, TNodeLinkList& tList) { iterator it = begin(); @@ -115,7 +123,7 @@ struct TNodeLinkList { public: /* 0x00 */ u32 count; - /* 0x04 */ TLinkListNode ocObject_; + /* 0x04 */ TLinkListNode oNode_; }; // Size: 0xC template <typename T, int I> @@ -130,7 +138,7 @@ struct TLinkList : TNodeLinkList { //TODO: Probably fakematch? Not sure what's going on here exactly (TIterator<std::bidirectional_iterator_tag, T, s32, T*, T&>&)*this = (const TIterator<std::bidirectional_iterator_tag, T, s32, T*, T&>&)rhs; - this->node = rhs.node; + this->p_ = rhs.p_; return *this; } |
