Match ~list (in CScriptTrigger)

This commit is contained in:
Henrique Gemignani Passos Lima 2022-10-20 17:25:08 +03:00
parent 16cb68c709
commit 8f29934c36
No known key found for this signature in database
GPG Key ID: E224F951761145F8
2 changed files with 15 additions and 5 deletions

View File

@ -338,7 +338,7 @@ public:
// 000c0ec8 00001c 801711a8 4 GetUseInSortedLists__6CActorCFv CActor.o // 000c0ec8 00001c 801711a8 4 GetUseInSortedLists__6CActorCFv CActor.o
// 000c0ee4 000014 801711c4 4 SetUseInSortedLists__6CActorFb CActor.o // 000c0ee4 000014 801711c4 4 SetUseInSortedLists__6CActorFb CActor.o
// 000c0ef8 00001c 801711d8 4 GetCallTouch__6CActorCFv CActor.o // 000c0ef8 00001c 801711d8 4 GetCallTouch__6CActorCFv CActor.o
// 000c0f14 000014 801711f4 4 SetCallTouch__6CActorFb CActor.o void SetCallTouch(bool);
// GetOrbitDistanceCheck__6CActorCFv // GetOrbitDistanceCheck__6CActorCFv
// GetCalculateLighting__6CActorCFv // GetCalculateLighting__6CActorCFv
// GetDrawShadow__6CActorCFv // GetDrawShadow__6CActorCFv

View File

@ -28,9 +28,11 @@ public:
~list() { ~list() {
node* cur = x4_start; node* cur = x4_start;
while (cur != x8_end) { while (cur != x8_end) {
cur->get_value()->~T(); node* it = cur;
x0_allocator.deallocate(cur->get_value()); node* next = cur->get_next();
cur = cur->get_next(); cur = next;
destroy(it);
x0_allocator.deallocate(it);
} }
} }
void push_back(const T& val) { do_insert_before(x8_end, val); } void push_back(const T& val) { do_insert_before(x8_end, val); }
@ -57,6 +59,9 @@ private:
uchar x8_item[sizeof(T)]; uchar x8_item[sizeof(T)];
node(node* prev, node* next) : x0_prev(prev), x4_next(next) {} node(node* prev, node* next) : x0_prev(prev), x4_next(next) {}
~node() {
get_value()->~T();
}
node* get_prev() const { return x0_prev; } node* get_prev() const { return x0_prev; }
node* get_next() const { return x4_next; } node* get_next() const { return x4_next; }
@ -104,6 +109,8 @@ public:
bool operator==(const const_iterator& other) const { return current == other.current; } bool operator==(const const_iterator& other) const { return current == other.current; }
bool operator!=(const const_iterator& other) const { return current != other.current; } bool operator!=(const const_iterator& other) const { return current != other.current; }
const node* get_node() const { return current; }
protected: protected:
const node* current; const node* current;
}; };
@ -118,7 +125,10 @@ public:
this->current = this->current->x4_next; this->current = this->current->x4_next;
return *this; return *this;
} }
iterator operator++(int) { return const_iterator(this->current->x4_next; iterator operator++(int) {
node* cur = this->current;
this->current = this->current->x4_next;
return cur;
} }
iterator& operator--() { iterator& operator--() {
this->current = this->current->x0_prev; this->current = this->current->x0_prev;