svn commit: r536174 - in head/devel: . tllist
Lorenzo Salvadore
salvadore at FreeBSD.org
Thu May 21 21:46:57 UTC 2020
Author: salvadore
Date: Thu May 21 21:46:56 2020
New Revision: 536174
URL: https://svnweb.freebsd.org/changeset/ports/536174
Log:
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 at xanderio.de
Added:
head/devel/tllist/
head/devel/tllist/Makefile (contents, props changed)
head/devel/tllist/distinfo (contents, props changed)
head/devel/tllist/pkg-descr (contents, props changed)
Modified:
head/devel/Makefile
Modified: head/devel/Makefile
==============================================================================
--- head/devel/Makefile Thu May 21 21:31:01 2020 (r536173)
+++ head/devel/Makefile Thu May 21 21:46:56 2020 (r536174)
@@ -6721,6 +6721,7 @@
SUBDIR += tkp4
SUBDIR += tl-expected
SUBDIR += tla
+ SUBDIR += tllist
SUBDIR += tmake
SUBDIR += tnt
SUBDIR += tokamak
Added: head/devel/tllist/Makefile
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/tllist/Makefile Thu May 21 21:46:56 2020 (r536174)
@@ -0,0 +1,21 @@
+# $FreeBSD$
+
+PORTNAME= tllist
+DISTVERSION= 1.0.0
+CATEGORIES= devel
+MASTER_SITES= https://codeberg.org/dnkl/tllist/archive/
+DISTNAME= ${DISTVERSION}
+
+MAINTAINER= ports at xanderio.de
+COMMENT= C header file only implementation of a typed linked list
+
+LICENSE= MIT
+
+USES= meson
+
+WRKSRC= ${WRKDIR}/${PORTNAME}
+
+PLIST_FILES= include/tllist.h \
+ libdata/pkgconfig/tllist.pc
+
+.include <bsd.port.mk>
Added: head/devel/tllist/distinfo
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/tllist/distinfo Thu May 21 21:46:56 2020 (r536174)
@@ -0,0 +1,3 @@
+TIMESTAMP = 1586201195
+SHA256 (1.0.0.tar.gz) = 115f067f6b7029959fea39e45ec64697806e901fe4ca2de67c7eb2af4b7d2ae2
+SIZE (1.0.0.tar.gz) = 6677
Added: head/devel/tllist/pkg-descr
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/tllist/pkg-descr Thu May 21 21:46:56 2020 (r536174)
@@ -0,0 +1,24 @@
+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
More information about the svn-ports-all
mailing list