mirror of https://github.com/zeldaret/tp.git
TNodeLinkList (#207)
This commit is contained in:
parent
9e3baca808
commit
bc30d007e1
|
|
@ -1,10 +0,0 @@
|
|||
lbl_802DCBD4:
|
||||
/* 802DCBD4 80 C5 00 00 */ lwz r6, 0(r5)
|
||||
/* 802DCBD8 80 A5 00 04 */ lwz r5, 4(r5)
|
||||
/* 802DCBDC 90 A6 00 04 */ stw r5, 4(r6)
|
||||
/* 802DCBE0 90 C5 00 00 */ stw r6, 0(r5)
|
||||
/* 802DCBE4 80 A4 00 00 */ lwz r5, 0(r4)
|
||||
/* 802DCBE8 38 05 FF FF */ addi r0, r5, -1
|
||||
/* 802DCBEC 90 04 00 00 */ stw r0, 0(r4)
|
||||
/* 802DCBF0 90 C3 00 00 */ stw r6, 0(r3)
|
||||
/* 802DCBF4 4E 80 00 20 */ blr
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
lbl_802DCAA0:
|
||||
/* 802DCAA0 94 21 FF D0 */ stwu r1, -0x30(r1)
|
||||
/* 802DCAA4 7C 08 02 A6 */ mflr r0
|
||||
/* 802DCAA8 90 01 00 34 */ stw r0, 0x34(r1)
|
||||
/* 802DCAAC 39 61 00 30 */ addi r11, r1, 0x30
|
||||
/* 802DCAB0 48 08 57 25 */ bl _savegpr_27
|
||||
/* 802DCAB4 7C 7B 1B 78 */ mr r27, r3
|
||||
/* 802DCAB8 7C 9C 23 78 */ mr r28, r4
|
||||
/* 802DCABC 7C DD 33 78 */ mr r29, r6
|
||||
/* 802DCAC0 80 A5 00 00 */ lwz r5, 0(r5)
|
||||
/* 802DCAC4 83 E6 00 00 */ lwz r31, 0(r6)
|
||||
/* 802DCAC8 48 00 00 18 */ b lbl_802DCAE0
|
||||
lbl_802DCACC:
|
||||
/* 802DCACC 83 C5 00 00 */ lwz r30, 0(r5)
|
||||
/* 802DCAD0 38 61 00 08 */ addi r3, r1, 8
|
||||
/* 802DCAD4 7F 84 E3 78 */ mr r4, r28
|
||||
/* 802DCAD8 48 00 00 FD */ bl Erase__Q27JGadget13TNodeLinkListFPQ27JGadget13TLinkListNode
|
||||
/* 802DCADC 7F C5 F3 78 */ mr r5, r30
|
||||
lbl_802DCAE0:
|
||||
/* 802DCAE0 7C 05 F8 40 */ cmplw r5, r31
|
||||
/* 802DCAE4 40 82 FF E8 */ bne lbl_802DCACC
|
||||
/* 802DCAE8 80 1D 00 00 */ lwz r0, 0(r29)
|
||||
/* 802DCAEC 90 1B 00 00 */ stw r0, 0(r27)
|
||||
/* 802DCAF0 39 61 00 30 */ addi r11, r1, 0x30
|
||||
/* 802DCAF4 48 08 57 2D */ bl _restgpr_27
|
||||
/* 802DCAF8 80 01 00 34 */ lwz r0, 0x34(r1)
|
||||
/* 802DCAFC 7C 08 03 A6 */ mtlr r0
|
||||
/* 802DCB00 38 21 00 30 */ addi r1, r1, 0x30
|
||||
/* 802DCB04 4E 80 00 20 */ blr
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
lbl_802DCBA8:
|
||||
/* 802DCBA8 80 A5 00 00 */ lwz r5, 0(r5)
|
||||
/* 802DCBAC 80 E5 00 04 */ lwz r7, 4(r5)
|
||||
/* 802DCBB0 90 A6 00 00 */ stw r5, 0(r6)
|
||||
/* 802DCBB4 90 E6 00 04 */ stw r7, 4(r6)
|
||||
/* 802DCBB8 90 C5 00 04 */ stw r6, 4(r5)
|
||||
/* 802DCBBC 90 C7 00 00 */ stw r6, 0(r7)
|
||||
/* 802DCBC0 80 A4 00 00 */ lwz r5, 0(r4)
|
||||
/* 802DCBC4 38 05 00 01 */ addi r0, r5, 1
|
||||
/* 802DCBC8 90 04 00 00 */ stw r0, 0(r4)
|
||||
/* 802DCBCC 90 C3 00 00 */ stw r6, 0(r3)
|
||||
/* 802DCBD0 4E 80 00 20 */ blr
|
||||
|
|
@ -24,7 +24,7 @@ struct TNodeLinkList {
|
|||
|
||||
TNodeLinkList() : ocObject_() { Initialize_(); }
|
||||
void Initialize_() {
|
||||
ptr = NULL;
|
||||
count = 0;
|
||||
ocObject_.mNext = &ocObject_;
|
||||
ocObject_.mPrev = &ocObject_;
|
||||
}
|
||||
|
|
@ -35,15 +35,15 @@ struct TNodeLinkList {
|
|||
}
|
||||
|
||||
/* 802DCA1C */ ~TNodeLinkList();
|
||||
/* 802DCAA0 */ void erase(JGadget::TNodeLinkList::iterator, JGadget::TNodeLinkList::iterator);
|
||||
/* 802DCA58 */ void erase(JGadget::TNodeLinkList::iterator);
|
||||
/* 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 */ void Insert(JGadget::TNodeLinkList::iterator, JGadget::TLinkListNode*);
|
||||
/* 802DCBA8 */ iterator Insert(JGadget::TNodeLinkList::iterator, JGadget::TLinkListNode*);
|
||||
/* 802DCBD4 */ iterator Erase(JGadget::TLinkListNode*);
|
||||
/* 802DCBF8 */ void Remove(JGadget::TLinkListNode*);
|
||||
|
||||
/* 0x00 */ TNodeLinkList* ptr;
|
||||
/* 0x00 */ int count;
|
||||
/* 0x04 */ TLinkListNode ocObject_;
|
||||
}; // Size: 0xC
|
||||
|
||||
|
|
|
|||
|
|
@ -51,31 +51,58 @@ asm JGadget::TNodeLinkList::~TNodeLinkList() {
|
|||
|
||||
/* 802DCA58-802DCAA0 2D7398 0048+00 0/0 2/2 0/0 .text
|
||||
* erase__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iterator */
|
||||
#if NONMATCHING
|
||||
JGadget::TNodeLinkList::iterator
|
||||
JGadget::TNodeLinkList::erase(JGadget::TNodeLinkList::iterator it) {
|
||||
TLinkListNode* node = it.node;
|
||||
TLinkListNode* next = node->mNext;
|
||||
iterator start(node);
|
||||
iterator end(next);
|
||||
return erase(start, end);
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JGadget::TNodeLinkList::erase(JGadget::TNodeLinkList::iterator param_0) {
|
||||
asm JGadget::TNodeLinkList::iterator
|
||||
JGadget::TNodeLinkList::erase(JGadget::TNodeLinkList::iterator param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JGadget/linklist/erase__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iterator.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 802DCAA0-802DCB08 2D73E0 0068+00 1/1 0/0 0/0 .text
|
||||
* erase__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorQ37JGadget13TNodeLinkList8iterator
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JGadget::TNodeLinkList::erase(JGadget::TNodeLinkList::iterator param_0,
|
||||
JGadget::TNodeLinkList::iterator param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JGadget/linklist/func_802DCAA0.s"
|
||||
JGadget::TNodeLinkList::iterator JGadget::TNodeLinkList::erase(iterator start, iterator end) {
|
||||
TLinkListNode* startNode = start.node;
|
||||
TLinkListNode* endNode = end.node;
|
||||
while (startNode != endNode) {
|
||||
TLinkListNode* nextNode = startNode->mNext;
|
||||
Erase(startNode);
|
||||
startNode = nextNode;
|
||||
}
|
||||
return iterator(end.node);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802DCB08-802DCBA8 2D7448 00A0+00 1/1 0/0 0/0 .text
|
||||
* splice__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorRQ27JGadget13TNodeLinkListQ37JGadget13TNodeLinkList8iterator
|
||||
*/
|
||||
#if NONMATCHING
|
||||
void JGadget::TNodeLinkList::splice(iterator myIt, TNodeLinkList& otherList, iterator otherIt) {
|
||||
TLinkListNode* otherNode = otherIt;
|
||||
TLinkListNode* otherNextNode = otherNode->mNext;
|
||||
|
||||
if (myIt == otherIt) {
|
||||
return;
|
||||
}
|
||||
if (myIt.node != otherNextNode) {
|
||||
otherList.Erase(otherNode);
|
||||
Insert(myIt, otherNode);
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -86,33 +113,49 @@ asm void JGadget::TNodeLinkList::splice(JGadget::TNodeLinkList::iterator param_0
|
|||
#include "asm/JSystem/JGadget/linklist/func_802DCB08.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 802DCBA8-802DCBD4 2D74E8 002C+00 1/1 7/7 0/0 .text
|
||||
* Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JGadget::TNodeLinkList::Insert(JGadget::TNodeLinkList::iterator param_0,
|
||||
JGadget::TLinkListNode* param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JGadget/linklist/func_802DCBA8.s"
|
||||
JGadget::TNodeLinkList::iterator JGadget::TNodeLinkList::Insert(iterator it, TLinkListNode* node) {
|
||||
TLinkListNode* itNode = it.node;
|
||||
TLinkListNode* prev = itNode->mPrev;
|
||||
node->mNext = itNode;
|
||||
node->mPrev = prev;
|
||||
itNode->mPrev = node;
|
||||
prev->mNext = node;
|
||||
this->count++;
|
||||
return iterator(node);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802DCBD4-802DCBF8 2D7514 0024+00 2/2 4/4 0/0 .text
|
||||
* Erase__Q27JGadget13TNodeLinkListFPQ27JGadget13TLinkListNode */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm JGadget::TNodeLinkList::iterator
|
||||
JGadget::TNodeLinkList::Erase(JGadget::TLinkListNode* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JGadget/linklist/Erase__Q27JGadget13TNodeLinkListFPQ27JGadget13TLinkListNode.s"
|
||||
JGadget::TNodeLinkList::iterator JGadget::TNodeLinkList::Erase(TLinkListNode* node) {
|
||||
TLinkListNode* next = node->mNext;
|
||||
TLinkListNode* prev = node->mPrev;
|
||||
next->mPrev = prev;
|
||||
prev->mNext = next;
|
||||
this->count--;
|
||||
return iterator(next);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802DCBF8-802DCCC8 2D7538 00D0+00 0/0 2/2 0/0 .text
|
||||
* Remove__Q27JGadget13TNodeLinkListFPQ27JGadget13TLinkListNode */
|
||||
#if NONMATCHING
|
||||
void JGadget::TNodeLinkList::Remove(TLinkListNode* node) {
|
||||
TNodeLinkList trashList;
|
||||
TLinkListNode* myNode = this->ocObject_.mNext;
|
||||
while (myNode != end().node) {
|
||||
if (myNode == node) {
|
||||
TLinkListNode* next = myNode->mNext;
|
||||
trashList.splice(&trashList.ocObject_, *this, myNode);
|
||||
myNode = next;
|
||||
} else {
|
||||
myNode = myNode->mNext;
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -121,3 +164,4 @@ asm void JGadget::TNodeLinkList::Remove(JGadget::TLinkListNode* param_0) {
|
|||
#include "asm/JSystem/JGadget/linklist/Remove__Q27JGadget13TNodeLinkListFPQ27JGadget13TLinkListNode.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in New Issue