mirror of
https://github.com/zeldaret/tp
synced 2026-05-23 23:05:36 -04:00
f8979749e3
* work on fop actor / actor mng, daalink, d_a_obj_item * d_a_title mostly decompiled * daalink / d_event / JMessage / dmsg_out_font work * msg_scrn_base / msg_scrn_boss * some work on mDo machine, d_menu_save, d_tresure, and various * remove asm * progress * finish d_menu_save / d_pane_class_alpha / d_pane_class / rename some data * rename more data * remove asm / progress * match all of d_pane_class * fixes / some dKankyo doc * bunch of j2d work. d_drawlist / d_attention cleanup * progress / asm * cleanup wip * decompile JStage * setup some more JStudio structs * set up d_demo classes * some d_demo work * cleanup dolphin os stuff * some initial dEvent documentation * some At collision documentation * match JUTConsole::doDraw * dbgs work / split up some of d_a_alink into .inc files * d_a_alink_spinner work
85 lines
2.3 KiB
C++
85 lines
2.3 KiB
C++
#ifndef LINKLIST_H
|
|
#define LINKLIST_H
|
|
|
|
#include "dolphin/types.h"
|
|
|
|
namespace JGadget {
|
|
struct TLinkListNode {
|
|
TLinkListNode() {
|
|
mNext = NULL;
|
|
mPrev = NULL;
|
|
}
|
|
|
|
/* 0x0 */ TLinkListNode* mNext;
|
|
/* 0x4 */ TLinkListNode* mPrev;
|
|
}; // Size: 0x8
|
|
|
|
struct TNodeLinkList {
|
|
struct iterator {
|
|
iterator(TLinkListNode* pNode) { node = pNode; }
|
|
iterator(const iterator& iter) { *this = iter; }
|
|
|
|
TLinkListNode* node;
|
|
};
|
|
|
|
TNodeLinkList() : ocObject_() { Initialize_(); }
|
|
void Initialize_() {
|
|
count = 0;
|
|
ocObject_.mNext = &ocObject_;
|
|
ocObject_.mPrev = &ocObject_;
|
|
}
|
|
|
|
iterator end() {
|
|
iterator iter(&ocObject_);
|
|
return iter;
|
|
}
|
|
|
|
/* 802DCA1C */ ~TNodeLinkList();
|
|
/* 802DCAA0 */ iterator erase(JGadget::TNodeLinkList::iterator, JGadget::TNodeLinkList::iterator);
|
|
/* 802DCA58 */ iterator erase(JGadget::TNodeLinkList::iterator);
|
|
/* 802DCB08 */ void splice(JGadget::TNodeLinkList::iterator, JGadget::TNodeLinkList&,
|
|
JGadget::TNodeLinkList::iterator);
|
|
/* 802DCBA8 */ iterator Insert(JGadget::TNodeLinkList::iterator, JGadget::TLinkListNode*);
|
|
/* 802DCBD4 */ iterator Erase(JGadget::TLinkListNode*);
|
|
/* 802DCBF8 */ void Remove(JGadget::TLinkListNode*);
|
|
|
|
/* 0x00 */ int count;
|
|
/* 0x04 */ TLinkListNode ocObject_;
|
|
}; // Size: 0xC
|
|
|
|
template <typename T, int I>
|
|
struct TLinkList : public TNodeLinkList {
|
|
TLinkList() : TNodeLinkList() {}
|
|
|
|
struct iterator : TNodeLinkList::iterator {
|
|
iterator(TNodeLinkList::iterator iter) : TNodeLinkList::iterator(iter) {}
|
|
};
|
|
|
|
TLinkListNode* Element_toNode(T* element) const { return &element->ocObject_; }
|
|
|
|
void Insert(TLinkList::iterator iter, T* element) {
|
|
TLinkListNode* node = Element_toNode(element);
|
|
TNodeLinkList::Insert(iter, node);
|
|
}
|
|
|
|
iterator Erase(T* element) {
|
|
TLinkListNode* node = Element_toNode(element);
|
|
return ((TNodeLinkList*)this)->Erase(node);
|
|
}
|
|
|
|
TLinkList::iterator end() {
|
|
TNodeLinkList::iterator node_iter = TNodeLinkList::end();
|
|
TLinkList::iterator iter(node_iter);
|
|
return iter;
|
|
}
|
|
|
|
void Push_back(T* element) {
|
|
TLinkList::iterator iter(TLinkList::end());
|
|
this->Insert(iter, element);
|
|
}
|
|
};
|
|
|
|
}; // namespace JGadget
|
|
|
|
#endif /* LINKLIST_H */
|