K 10 svn:author V 9 salvadore K 8 svn:date V 27 2020-05-21T21:46:56.592646Z K 7 svn:log V 1145 Most C implementations of linked list are untyped. That is, their data carriers are typically void *. This is error prone since your compiler will not be able to help you correct your mistakes (oh, was it a pointer-to-a-pointer... I thought it was just a pointer...). tllist addresses this by using pre-processor macros to implement dynamic types, where the data carrier is typed to whatever you want; both primitive data types are supported as well as aggregated ones such as structs, enums and unions. Being a double-linked list, most operations are constant in time (including pushing and popping both to/from front and back). The memory overhead is fairly small; each item carries, besides its data, a prev and next pointer (i.e. a constant 16 byte overhead per item on 64-bit architectures). The list itself has a head and a tail pointer, plus a length variable (typically 8 bytes on 64-bit architectures) to make list length lookup constant in time. Thus, assuming 64-bit pointers (and a 64-bit size_t type), the total overhead is 3*8 + n*2*8 bytes. WWW: https://codeberg.org/dnkl/tllist PR: 245410 Submitted by: ports@xanderio.de END