{"added":null,"apiVersion":1,"behindSince":null,"buildDepends":[],"categories":["devel"],"comment":"C header file only implementation of a typed linked list","compare":"/compare/tllist/index.json","dependentCount":null,"description":"Most C implementations of linked list are untyped. That is, their data carriers\nare typically void *. This is error prone since your compiler will not be able\nto help you correct your mistakes (oh, was it a pointer-to-a-pointer... I\nthought it was just a pointer...).\n\ntllist addresses this by using pre-processor macros to implement dynamic types,\nwhere the data carrier is typed to whatever you want; both primitive data types\nare supported as well as aggregated ones such as structs, enums and unions.\n\nBeing a double-linked list, most operations are constant in time (including\npushing and popping both to/from front and back).\n\nThe memory overhead is fairly small; each item carries, besides its data, a\nprev and next pointer (i.e. a constant 16 byte overhead per item on 64-bit\narchitectures).\n\nThe list itself has two head and tail pointers, plus a length variable\n(typically 8 bytes on 64-bit architectures) to make list length lookup constant\nin time.\n\nThus, assuming 64-bit pointers (and a 64-bit size_t type), the total overhead\nis 3*8 + n*2*8 bytes.","flavors":[],"html":"https://daemonports.org/midnightbsd/devel/tllist/","kind":"port","lastUpdate":null,"license":["mit"],"maintainer":"ports@MidnightBSD.org","name":"tllist","newest":true,"newestVersion":"1.1.0","noVulnData":true,"origin":"devel/tllist","otherSystems":[{"maintainer":"jbeich@FreeBSD.org","newest":true,"origin":"devel/tllist","path":"/devel/tllist/","system":"FreeBSD","version":"1.1.0"},{"maintainer":"The OpenBSD ports mailing-list \u003cports@openbsd.org\u003e","newest":true,"noVulnData":true,"origin":"devel/tllist","path":"/openbsd/devel/tllist/","system":"OpenBSD","updated":"2026-07-23","version":"1.1.0p0"},{"maintainer":"bsiegert@NetBSD.org","newest":true,"origin":"devel/tllist","path":"/netbsd/devel/tllist/","system":"NetBSD","version":"1.1.0"},{"maintainer":"jbeich@FreeBSD.org","newest":true,"origin":"devel/tllist","path":"/dragonfly/devel/tllist/","system":"DragonFly","version":"1.1.0"},{"maintainer":"jbeich@FreeBSD.org","newest":true,"noVulnData":true,"origin":"devel/tllist","path":"","system":"HardenedBSD","version":"1.1.0"},{"maintainer":"jbeich@FreeBSD.org","newest":true,"noVulnData":true,"origin":"devel/tllist","path":"","system":"GhostBSD","version":"1.1.0"}],"packages":null,"pkgName":"tllist-1.1.0","related":null,"repository":"mports","requiredBy":["x11-fonts/fcft","x11/foot","x11/fuzzel"],"requiredByCount":3,"runDepends":[],"status":null,"system":"midnightbsd","systemLabel":"MidnightBSD","version":"1.1.0","versions":null,"vulnerabilities":null,"www":"https://codeberg.org/dnkl/tllist"}
