aboutsummaryrefslogtreecommitdiff
path: root/linked_list.inc.h
diff options
context:
space:
mode:
Diffstat (limited to 'linked_list.inc.h')
-rw-r--r--linked_list.inc.h26
1 files changed, 25 insertions, 1 deletions
diff --git a/linked_list.inc.h b/linked_list.inc.h
index ada0b424..6a0546c7 100644
--- a/linked_list.inc.h
+++ b/linked_list.inc.h
@@ -17,7 +17,7 @@ INIT_F ( LLIST(TYPE) ) {
FREE_F (LINK(TYPE)) {
UNLINK(LINK(TYPE))(this);
- if (this->value != NULL) FFREE(TYPE, this->value);
+ if (this->value != NULL) FFREE(TYPE, this->value);
return 0;
}
@@ -132,6 +132,7 @@ int SIZE(LLIST(TYPE)) ( LLIST(TYPE)* llist ) {
LINK(TYPE)* l = FIRST(llist);
while (l->after != NULL) {
++size;
+ l = l->after;
}
return size;
}
@@ -140,4 +141,27 @@ int EMPTY(LLIST(TYPE)) ( LLIST(TYPE)* llist ) {
return FIRST(llist) == llist->tail;
}
+LLIST(TYPE)* RESOLVE(LLIST(TYPE)) (LLIST(TYPE)* dest, LLIST(TYPE)* new) {
+ if (dest == NULL) return new;
+ APPEND(LLIST(TYPE))(dest, new);
+ return dest;
+}
+
+int RESET(LLIST(TYPE)) ( LLIST(TYPE)* llist ) {
+ INFO_F("|llist| = %i", SIZE(LLIST(TYPE))(llist));
+#if 1
+ FOR(LLIST(TYPE), link, llist) {
+ // INFO_F("Freeing link '%p' → '%p'", link, link->value);
+ INFO("leaking memmory, or something");
+ FFREE(LINK(TYPE), link);
+ // UNLINK(LINK(TYPE))(link);
+ }
+#else
+ // TODO This is a memmory leak
+ FIRST(llist) = llist->tail;
+ LAST(llist) = llist->head;
+#endif
+ return 0;
+}
+
#endif /* TYPE */