blob: fe0330e93a0651ca6a529c1cc972e93c50345e75 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
#include "c/c_list.h"
/* 0x802E08C0 */
void cListMg_c::insertAfter(cListNd_c *node, cListNd_c *prevNode) {
if (prevNode == nullptr) {
return this->prepend(node);
}
if (node == nullptr) {
return;
}
node->mpNext = prevNode->mpNext;
node->mpPrev = prevNode;
prevNode->mpNext = node;
if (node->mpNext != nullptr) {
node->mpNext->mpPrev = node;
} else {
this->mpLast = node;
}
}
/* 0x802E0900 */
void cListMg_c::remove(cListNd_c *node) {
if (node == nullptr) {
return;
}
if (node->mpPrev == nullptr && node->mpNext == nullptr) {
if (this->mpFirst == node && this->mpLast == node) {
this->mpFirst = nullptr;
this->mpLast = nullptr;
}
} else {
if (node->mpPrev != nullptr) {
node->mpPrev->mpNext = node->mpNext;
} else if (node == this->mpFirst) {
this->mpFirst = node->mpNext;
}
if (node->mpNext != nullptr) {
node->mpNext->mpPrev = node->mpPrev;
} else if (node == this->mpLast) {
this->mpLast = node->mpPrev;
}
node->mpPrev = nullptr;
node->mpNext = nullptr;
}
}
/* 0x802E09B0 */
void cListMg_c::append(cListNd_c *node) {
if (node == nullptr) {
return;
}
if (this->mpLast != nullptr) {
this->mpLast->mpNext = node;
node->mpPrev = this->mpLast;
} else {
this->mpFirst = node;
}
this->mpLast = node;
}
/* 0x802E09E0 */
void cListMg_c::prepend(cListNd_c *node) {
if (node == nullptr) {
return;
}
if (this->mpFirst != nullptr) {
this->mpFirst->mpPrev = node;
node->mpNext = this->mpFirst;
} else {
this->mpLast = node;
}
this->mpFirst = node;
}
void cListMg_c::clear() {
while (mpFirst != nullptr) {
remove(mpFirst);
}
}
|