{"schema_version":1,"metadata":{"branch":"release","release":"8.0","architecture":"amd64","generated_at":"2026-10-21T02:35:53.703506+00:00","source_url":"https://cdn.openbsd.org/pub/OpenBSD/8.0/packages/amd64/sqlports-7.55.tgz","source_sha256":"393d2bd6f5b23c8ba1809ec63f3e8310d7787d329b7350089609a078eb01a387","package_count":12098,"source_kind":"sqlports"},"package":{"name":"tllist-1.1.0p0","path":"devel/tllist","url":"/packages/release/devel/tllist/","comment":"Typed Linked List C header file only","homepage":"","maintainer":"The OpenBSD ports mailing-list <ports@openbsd.org>","description":"tllis is a **T**yped **L**inked **L**ist C header file only\nlibrary implemented using pre-processor macros.\n\n## Description\n\nMost C implementations of linked list are untyped. That is, their data\ncarriers are typically `void *`. This is error prone since your\ncompiler will not be able to help you correct your mistakes (_oh, was\nit a pointer-to-a-pointer... I thought it was just a pointer..._).\n\n**tllist** addresses this by using pre-processor macros to implement\ndynamic types, where the data carrier is typed to whatever you want;\nboth **primitive** data types are supported as well as aggregated ones\nsuch as **structs**, **enums** and **unions**.\n\nBeing a double-linked list, most operations are constant in time\n(including pushing and popping both to/from front and back).\n\n","description_source":null,"description_unresolved":[],"package_architecture":"amd64","stem":"tllist","readme":null,"dependencies":[{"path":"devel/meson","type":"build","package_spec":"STEM->=1.12.1v0","url":"/packages/release/devel/meson/"}],"reverse_dependencies":{"count":4,"url":"/packages/data/62/6284645d27f8729d94f85c509e96a13bdd5f061efb89b1e04212cdd77151c789.json"},"categories":["devel"],"flavors":[],"only_for_architectures":[],"not_for_architectures":[]}}
