mirror of
https://github.com/Ponce/slackbuilds
synced 2024-11-29 13:00:32 +01:00
308e807bcb
Signed-off-by: Dave Woodfall <dave@slackbuilds.org> Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
24 lines
1 KiB
Text
24 lines
1 KiB
Text
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.
|
|
|
|
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 two head and tail pointers, 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.
|
|
|
|
tllist is a needed dependency for fcft,foot,fuzzel,fnott,wbg
|