From 3fe496f111f5c89ecb91ceac70f042e53e598fe3 Mon Sep 17 00:00:00 2001 From: robojumper Date: Sat, 4 May 2024 14:30:58 +0200 Subject: [PATCH] I guess nw4r used -ipa file --- configure.py | 4 +- src/nw4r/ut/ut_list.cpp | 141 ++++++++++++++++++++-------------------- 2 files changed, 72 insertions(+), 73 deletions(-) diff --git a/configure.py b/configure.py index f25db4a4..121f802d 100644 --- a/configure.py +++ b/configure.py @@ -199,7 +199,7 @@ cflags_egg = [ # nw4r flags cflags_nw4r = [ *cflags_base, - "-inline deferred", + "-ipa file", ] # REL flags @@ -310,7 +310,7 @@ config.libs = [ nw4rLib( "db", [ - Object(Matching, "nw4r/db/db_directPrint.cpp", extra_cflags=["-inline smart, -ipa file"]), + Object(Matching, "nw4r/db/db_directPrint.cpp"), ], ), nw4rLib( diff --git a/src/nw4r/ut/ut_list.cpp b/src/nw4r/ut/ut_list.cpp index 4fab51c8..5addeda8 100644 --- a/src/nw4r/ut/ut_list.cpp +++ b/src/nw4r/ut/ut_list.cpp @@ -3,38 +3,69 @@ namespace nw4r { namespace ut { -#define NODE_PTR(list, object) ((Node*)(((char*)object) + list->offset)) +#define NODE_PTR(list, object) ((Node *)(((char *)object) + list->offset)) -void* List_GetNth(const List* list, u16 n) { - void *object; - int c; - - for (c = 0, object = nullptr; object = List_GetNext(list, object); c++) { - if (n == c) { - return object; - } - } - - return nullptr; +void List_Init(List *list, u16 offset) { + list->first = nullptr; + list->last = nullptr; + list->size = 0; + list->offset = offset; } -void* List_GetPrev(const List* list, const void* object) { - if (object == nullptr) { - return list->last; +void List_Append(List *list, void *object) { + if (list->first == nullptr) { + Node *node = NODE_PTR(list, object); + node->next = nullptr; + node->prev = nullptr; + list->first = object; + list->last = object; + list->size++; } else { - return NODE_PTR(list, object)->prev; + Node *node = NODE_PTR(list, object); + node->prev = list->last; + node->next = nullptr; + NODE_PTR(list, list->last)->next = object; + list->last = object; + list->size++; } } -void* List_GetNext(const List* list, const void* object) { - if (object == nullptr) { - return list->first; +void List_Prepend(List *list, void *object) { + if (list->first == nullptr) { + Node *node = NODE_PTR(list, object); + node->next = nullptr; + node->prev = nullptr; + list->first = object; + list->last = object; + list->size++; } else { - return NODE_PTR(list, object)->next; + Node *node = NODE_PTR(list, object); + node->prev = nullptr; + node->next = list->first; + NODE_PTR(list, list->first)->prev = object; + list->first = object; + list->size++; } } -void List_Remove(List* list, void* object) { +void List_Insert(List *list, void *next, void *object) { + if (next == nullptr) { + List_Append(list, object); + } else if (next == list->first) { + List_Prepend(list, object); + } else { + Node *newNode = NODE_PTR(list, object); + void *prevObj = NODE_PTR(list, next)->prev; + Node *prevNode = NODE_PTR(list, prevObj); + newNode->prev = prevObj; + newNode->next = next; + prevNode->next = object; + NODE_PTR(list, next)->prev = object; + list->size++; + } +} + +void List_Remove(List *list, void *object) { Node *node = NODE_PTR(list, object); if (node->prev == nullptr) { list->first = node->next; @@ -53,65 +84,33 @@ void List_Remove(List* list, void* object) { list->size--; } -void List_Insert(List* list, void* next, void* object) { - if (next == nullptr) { - List_Append(list, object); - } else if (next == list->first) { - List_Prepend(list, object); +void *List_GetNext(const List *list, const void *object) { + if (object == nullptr) { + return list->first; } else { - Node *newNode = NODE_PTR(list, object); - void *prevObj = NODE_PTR(list, next)->prev; - Node *prevNode = NODE_PTR(list, prevObj); - newNode->prev = prevObj; - newNode->next = next; - prevNode->next = object; - NODE_PTR(list, next)->prev = object; - list->size++; + return NODE_PTR(list, object)->next; } } - -void List_Prepend(List* list, void* object) { - if (list->first == nullptr) { - Node *node = NODE_PTR(list, object); - node->next = nullptr; - node->prev = nullptr; - list->first = object; - list->last = object; - list->size++; +void *List_GetPrev(const List *list, const void *object) { + if (object == nullptr) { + return list->last; } else { - Node *node = NODE_PTR(list, object); - node->prev = nullptr; - node->next = list->first; - NODE_PTR(list, list->first)->prev = object; - list->first = object; - list->size++; + return NODE_PTR(list, object)->prev; } } -void List_Append(List* list, void* object) { - if (list->first == nullptr) { - Node *node = NODE_PTR(list, object); - node->next = nullptr; - node->prev = nullptr; - list->first = object; - list->last = object; - list->size++; - } else { - Node *node = NODE_PTR(list, object); - node->prev = list->last; - node->next = nullptr; - NODE_PTR(list, list->last)->next = object; - list->last = object; - list->size++; - } -} +void *List_GetNth(const List *list, u16 n) { + void *object; + int c; -void List_Init(List* list, u16 offset) { - list->first = nullptr; - list->last = nullptr; - list->size = 0; - list->offset = offset; + for (c = 0, object = nullptr; object = List_GetNext(list, object); c++) { + if (n == c) { + return object; + } + } + + return nullptr; } } // namespace ut