Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.

dmd.backend.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:
nothrow @nogc list_t list_next(list_t list);
Returns:
pointer to next entry in list.
nothrow @nogc inout(void)* list_ptr(inout 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_prependdata(list_t* plist, int d);
Prepend integer item to list.
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 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 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 void list_apply(list_t* plist, void function(void*) nothrow @nogc fp);
Apply a function fp to each member of a list.
nothrow @nogc list_t list_reverse(list_t l);
Reverse a list in place.
struct ListRange;
Range for Lists.