diff options
author | Hugo Hörnquist <hugo@hornquist.se> | 2019-02-10 00:44:39 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@hornquist.se> | 2019-02-10 00:44:39 +0100 |
commit | 8cdc3a64ca42368c7ac318afa6510e489b7cc4c4 (patch) | |
tree | 6a8147ced413c0ec4593c980aa14b1cd24bbe36a /linked_list.inc.h | |
parent | Improve err.h. (diff) | |
download | calp-8cdc3a64ca42368c7ac318afa6510e489b7cc4c4.tar.gz calp-8cdc3a64ca42368c7ac318afa6510e489b7cc4c4.tar.xz |
Linked list improvements.
Diffstat (limited to '')
-rw-r--r-- | linked_list.inc.h | 26 |
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 */ |