summaryrefslogtreecommitdiff
path: root/include/JSystem
diff options
context:
space:
mode:
authorJcw87 <Jcw87@users.noreply.github.com>2026-01-08 06:52:18 -0800
committerGitHub <noreply@github.com>2026-01-08 07:52:18 -0700
commit0e7b42e9ea78e960647ce25528cf7b65a6ddfc9d (patch)
tree19bbd556b98acd6c23451d8e35ca7b2bce9d592a /include/JSystem
parent2b52bc59d00bc83abce50c026447780d6c8ad943 (diff)
linklist debug (#3025)
Diffstat (limited to 'include/JSystem')
-rw-r--r--include/JSystem/JGadget/define.h7
-rw-r--r--include/JSystem/JGadget/linklist.h98
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;
}