{"schema_version":1,"metadata":{"branch":"current","release":"7.9","architecture":"amd64","generated_at":"2026-09-09T04:04:41.004595+00:00","source_url":"https://cdn.openbsd.org/pub/OpenBSD/snapshots/packages/amd64/sqlports-7.55.tgz","source_sha256":"fcdbba1b9df747882aa9bab4af20ebec8dac10655069c90f1cd4145c06e1235e","package_count":12031,"source_kind":"sqlports"},"package":{"name":"tllist-1.1.0p0","path":"devel/tllist","url":"/packages/current/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","package_architecture":"amd64","stem":"tllist","readme":null,"dependencies":[{"path":"devel/meson","type":"build","package_spec":"STEM->=1.12.0v0","url":"/packages/current/devel/meson/"}],"reverse_dependencies":{"count":4,"url":"/packages/data/ba/bac1bc29195429282ec5e487e6b7c88b4ea456368e56b6ccf63e962c1f15d407.json"},"categories":["devel"],"flavors":[],"only_for_architectures":[],"not_for_architectures":[]}}
