W3cubDocs

/D

ddmd.tk.dlist

Interface to the C linked list type.

List is a complete package of functions to deal with singly linked lists of pointers or integers.

Features:
1. Uses mem package. 2. Has loop-back tests. 3. Each item in the list can have multiple predecessors, enabling different lists to 'share' a common tail.
Authors:
Walter Bright
License:
Boost License 1.0
Source:
backend/tk/dlist.d

Create link to existing list, that is, share the list with somebody else.

Returns:
pointer to that list entry.
nothrow @nogc list_t list_next(list_t list)
Returns:
pointer to next entry in list.
nothrow @nogc list_t list_prev(list_t start, list_t list)
Returns:
pointer to previous item in list.
nothrow @nogc void* list_ptr(list_t list)
Returns:
ptr from list entry.
nothrow @nogc int list_data(list_t list)
Returns:
integer item from list entry.
nothrow @nogc void list_appenddata(list_t* plist, int d)

Append integer item to list.

nothrow @nogc void list_prependdata(list_t* plist, int d)

Prepend integer item to list.

nothrow @nogc void list_init()

Initialize list package.

Output:
list_inited = 1
nothrow @nogc void list_term()

Terminate list package.

Output:
list_inited = 0
nothrow @nogc void list_free(list_t* plist, list_free_fp freeptr)

Free list.

Parameters:
list_t* plist Pointer to list to free
list_free_fp freeptr Pointer to freeing function for the data pointer (use FPNULL if none)
Output:
*plist is null
nothrow @nogc void* list_subtract(list_t* plist, void* ptr)

Remove ptr from the list pointed to by *plist.

Output:
*plist is updated to be the start of the new list
Returns:
null if *plist is null otherwise ptr
nothrow @nogc void* list_pop(list_t* plist)

Remove first element in list pointed to by *plist.

Returns:
First element, null if *plist is null
nothrow @nogc list_t list_append(list_t* plist, void* ptr)

Append ptr to *plist.

Returns:
pointer to list item created. null if out of memory
nothrow @nogc list_t list_prepend(list_t* plist, void* ptr)

Prepend ptr to *plist.

Returns:
pointer to list item created (which is also the start of the list). null if out of memory
nothrow @nogc int list_nitems(list_t list)

Count up and return number of items in list.

Returns:
# of entries in list
nothrow @nogc list_t list_nth(list_t list, int n)
Returns:
nth list entry in list.
nothrow @nogc list_t list_last(list_t list)
Returns:
last list entry in list.
nothrow @nogc list_t list_copy(list_t list)

Copy a list and return it.

nothrow @nogc int list_equal(list_t list1, list_t list2)

Compare two lists.

Returns:
If they have the same ptrs, return 1 else 0.
nothrow @nogc int list_cmp(list_t list1, list_t list2, int function(void*, void*) fp)

Compare two lists using the comparison function fp. The comparison function is the same as used for qsort().

Returns:
If they compare equal, return 0 else value returned by fp.
nothrow @nogc list_t list_inlist(list_t list, void* ptr)

Search for ptr in list.

Returns:
If found, return list entry that it is, else null.
nothrow @nogc list_t list_cat(list_t* pl1, list_t l2)

Concatenate two lists (l2 appended to l1).

Output:
*pl1 updated to be start of concatenated list.
Returns:
*pl1
nothrow @nogc list_t list_build(void* p, ...)

Build a list out of the null-terminated argument list.

Returns:
generated list
nothrow @nogc void list_apply(list_t* plist, void function(void*) fp)

Apply a function fp to each member of a list.

nothrow @nogc list_t list_reverse(list_t)

Reverse a list.

nothrow @nogc void list_copyinto(list_t, void*)

Copy list of pointers into an array of pointers.

nothrow @nogc list_t list_insert(list_t*, void*, int n)

Insert item into list at nth position.

© 1999–2017 The D Language Foundation
Licensed under the Boost License 1.0.
https://dlang.org/phobos/ddmd_tk_dlist.html