alpm_list(3)

NAME
alpm_list - Functions to manipulate alpm_list_t lists.

SYNOPSIS

  Functions
void alpm_list_free (alpm_list_t *list)
Free a list, but not the contained data.
void alpm_list_free_inner (alpm_list_t *list, alpm_list_fn_free fn)
Free the internal data of a list structure.
alpm_list_t * alpm_list_add (alpm_list_t *list, void *data)
Add a new item to the end of the list.
alpm_list_t * alpm_list_append (alpm_list_t **list, void *data)
Add a new item to the end of the list.
alpm_list_t * alpm_list_append_strdup (alpm_list_t **list, const char *data)
Duplicate and append a string to a list.
alpm_list_t * alpm_list_add_sorted (alpm_list_t *list, void *data, alpm_list_fn_cmp fn)
Add items to a list in sorted order.
alpm_list_t * alpm_list_join (alpm_list_t *first, alpm_list_t *second)
Join two lists.
alpm_list_t * alpm_list_mmerge (alpm_list_t *left, alpm_list_t *right, alpm_list_fn_cmp fn)
Merge the two sorted sublists into one sorted list.
alpm_list_t * alpm_list_msort (alpm_list_t *list, size_t n, alpm_list_fn_cmp fn)
Sort a list of size n using mergesort algorithm.
alpm_list_t * alpm_list_remove_item (alpm_list_t *haystack, alpm_list_t *item)
Remove an item from the list.
alpm_list_t * alpm_list_remove (alpm_list_t *haystack, const void *needle, alpm_list_fn_cmp fn, void **data)
Remove an item from the list.
alpm_list_t * alpm_list_remove_str (alpm_list_t *haystack, const char *needle, char **data)
Remove a string from a list.
alpm_list_t * alpm_list_remove_dupes (const alpm_list_t *list)
Create a new list without any duplicates.
alpm_list_t * alpm_list_strdup (const alpm_list_t *list)
Copy a string list, including data.
alpm_list_t * alpm_list_copy (const alpm_list_t *list)
Copy a list, without copying data.
alpm_list_t * alpm_list_copy_data (const alpm_list_t *list, size_t size)
Copy a list and copy the data.
alpm_list_t * alpm_list_reverse (alpm_list_t *list)
Create a new list in reverse order.
alpm_list_t * alpm_list_nth (const alpm_list_t *list, size_t n)
Return nth element from list (starting from 0).
alpm_list_t * alpm_list_next (const alpm_list_t *node)
Get the next element of a list.
alpm_list_t * alpm_list_previous (const alpm_list_t *list)
Get the previous element of a list.
alpm_list_t * alpm_list_last (const alpm_list_t *list)
Get the last item in the list.
size_t alpm_list_count (const alpm_list_t *list)
Get the number of items in a list.
void * alpm_list_find (const alpm_list_t *haystack, const void *needle, alpm_list_fn_cmp fn)
Find an item in a list.
void * alpm_list_find_ptr (const alpm_list_t *haystack, const void *needle)
Find an item in a list.
char * alpm_list_find_str (const alpm_list_t *haystack, const char *needle)
Find a string in a list.
void alpm_list_diff_sorted (const alpm_list_t *left, const alpm_list_t *right, alpm_list_fn_cmp fn, alpm_list_t **onlyleft, alpm_list_t **onlyright)
Find the differences between list left and list right
alpm_list_t * alpm_list_diff (const alpm_list_t *lhs, const alpm_list_t *rhs, alpm_list_fn_cmp fn)
Find the items in list lhs that are not present in list rhs.
void * alpm_list_to_array (const alpm_list_t *list, size_t n, size_t size)
Copy a list and data into a standard C array of fixed length.

Detailed Description

Functions to manipulate alpm_list_t lists. These functions are designed to create, destroy, and modify lists of type alpm_list_t. This is an internal list type used by libalpm that is publicly exposed for use by frontends if desired.

Function Documentation

  alpm_list_t* alpm_list_add (alpm_list_t * list, void * data)

Add a new item to the end of the list.

Parameters:
    list the list to add to
    data the new item to be added to the list

Returns:
    the resultant list

References alpm_list_append().

Referenced by alpm_checkdeps(), alpm_initialize(), alpm_list_add_sorted(), and alpm_list_diff_sorted().

  alpm_list_t* alpm_list_add_sorted (alpm_list_t * list, void * data, alpm_list_fn_cmp fn)

Add items to a list in sorted order.

Parameters:
    list the list to add to
    data the new item to be added to the list
    fn the comparison function to use to determine order

Returns:
    the resultant list

References alpm_list_add(), __alpm_list_t::data, __alpm_list_t::next, and __alpm_list_t::prev.

  alpm_list_t* alpm_list_append (alpm_list_t ** list, void * data)

Add a new item to the end of the list.

Parameters:
    list the list to add to
    data the new item to be added to the list

Returns:
    the newly added item

References alpm_list_last(), __alpm_list_t::data, __alpm_list_t::next, and __alpm_list_t::prev.

Referenced by alpm_list_add(), alpm_list_append_strdup(), alpm_list_copy(), alpm_list_copy_data(), alpm_list_remove_dupes(), and alpm_list_reverse().

  alpm_list_t* alpm_list_append_strdup (alpm_list_t ** list, const char * data)

Duplicate and append a string to a list.

Parameters:
    list the list to append to
    data the string to duplicate and append

Returns:
    the newly added item

References alpm_list_append().

Referenced by alpm_list_strdup().

  alpm_list_t* alpm_list_copy (const alpm_list_t * list)

Copy a list, without copying data.

Parameters:
    list the list to copy

Returns:
    a copy of the original list

References alpm_list_append(), alpm_list_free(), __alpm_list_t::data, and __alpm_list_t::next.

Referenced by alpm_list_diff().

  alpm_list_t* alpm_list_copy_data (const alpm_list_t * list, size_t size)

Copy a list and copy the data. Note that the data elements to be copied should not contain pointers and should also be of constant size.

Parameters:
    list the list to copy
    size the size of each data element

Returns:
    a copy of the original list, data copied as well

References alpm_list_append(), __alpm_list_t::data, and __alpm_list_t::next.

  size_t alpm_list_count (const alpm_list_t * list)

Get the number of items in a list.

Parameters:
    list the list

Returns:
    the number of list items

References __alpm_list_t::next.

Referenced by alpm_list_diff().

  alpm_list_t* alpm_list_diff (const alpm_list_t * lhs, const alpm_list_t * rhs, alpm_list_fn_cmp fn)

Find the items in list lhs that are not present in list rhs.

Parameters:
    lhs the first list
    rhs the second list
    fn the comparison function

Returns:
    a list containing all items in lhs not present in rhs

References alpm_list_copy(), alpm_list_count(), alpm_list_diff_sorted(), alpm_list_free(), and alpm_list_msort().

  void alpm_list_diff_sorted (const alpm_list_t * left, const alpm_list_t * right, alpm_list_fn_cmp fn, alpm_list_t ** onlyleft, alpm_list_t ** onlyright)

Find the differences between list left and list right The two lists must be sorted. Items only in list left are added to the onlyleft list. Items only in list right are added to the onlyright list.

Parameters:
    left the first list
    right the second list
    fn the comparison function
    onlyleft pointer to the first result list
    onlyright pointer to the second result list

References alpm_list_add(), __alpm_list_t::data, and __alpm_list_t::next.

Referenced by alpm_list_diff().

  void* alpm_list_find (const alpm_list_t * haystack, const void * needle, alpm_list_fn_cmp fn)

Find an item in a list.

Parameters:
    needle the item to search
    haystack the list
    fn the comparison function for searching (!= NULL)

Returns:
    needle if found, NULL otherwise

References __alpm_list_t::data, and __alpm_list_t::next.

Referenced by alpm_list_find_ptr(), alpm_list_find_str(), and alpm_pkg_should_ignore().

  void* alpm_list_find_ptr (const alpm_list_t * haystack, const void * needle)

Find an item in a list. Search for the item whose data matches that of the needle.

Parameters:
    needle the data to search for (== comparison)
    haystack the list

Returns:
    needle if found, NULL otherwise

References alpm_list_find().

Referenced by alpm_list_remove_dupes().

  char* alpm_list_find_str (const alpm_list_t * haystack, const char * needle)

Find a string in a list.

Parameters:
    needle the string to search for
    haystack the list

Returns:
    needle if found, NULL otherwise

References alpm_list_find().

  void alpm_list_free (alpm_list_t * list)

Free a list, but not the contained data.

Parameters:
    list the list to free

References __alpm_list_t::next.

Referenced by alpm_list_copy(), alpm_list_diff(), alpm_list_remove_dupes(), and alpm_list_reverse().

  void alpm_list_free_inner (alpm_list_t * list, alpm_list_fn_free fn)

Free the internal data of a list structure.

Parameters:
    list the list to free
    fn a free function for the internal data

References __alpm_list_t::data, and __alpm_list_t::next.

  alpm_list_t* alpm_list_join (alpm_list_t * first, alpm_list_t * second)

Join two lists. The two lists must be independent. Do not free the original lists after calling this function, as this is not a copy operation. The list pointers passed in should be considered invalid after calling this function.

Parameters:
    first the first list
    second the second list

Returns:
    the resultant joined list

References __alpm_list_t::next, and __alpm_list_t::prev.

  alpm_list_t* alpm_list_last (const alpm_list_t * list)

Get the last item in the list.

Parameters:
    list the list

Returns:
    the last element in the list

References __alpm_list_t::prev.

Referenced by alpm_list_append(), and alpm_list_reverse().

  alpm_list_t* alpm_list_mmerge (alpm_list_t * left, alpm_list_t * right, alpm_list_fn_cmp fn)

Merge the two sorted sublists into one sorted list.

Parameters:
    left the first list
    right the second list
    fn comparison function for determining merge order

Returns:
    the resultant list

References __alpm_list_t::data, __alpm_list_t::next, and __alpm_list_t::prev.

Referenced by alpm_list_msort().

  alpm_list_t* alpm_list_msort (alpm_list_t * list, size_t n, alpm_list_fn_cmp fn)

Sort a list of size n using mergesort algorithm.

Parameters:
    list the list to sort
    n the size of the list
    fn the comparison function for determining order

Returns:
    the resultant list

References alpm_list_mmerge(), alpm_list_msort(), __alpm_list_t::next, and __alpm_list_t::prev.

Referenced by alpm_list_diff(), and alpm_list_msort().

  alpm_list_t* alpm_list_next (const alpm_list_t * node) [inline]

Get the next element of a list.

Parameters:
    node the list node

Returns:
    the next element, or NULL when no more elements exist

References __alpm_list_t::next.

  alpm_list_t* alpm_list_nth (const alpm_list_t * list, size_t n)

Return nth element from list (starting from 0).

Parameters:
    list the list
    n the index of the item to find (n < alpm_list_count(list) IS needed)

Returns:
    an alpm_list_t node for index n

References __alpm_list_t::next.

  alpm_list_t* alpm_list_previous (const alpm_list_t * list) [inline]

Get the previous element of a list.

Parameters:
    list the list head

Returns:
    the previous element, or NULL when no previous element exist

References __alpm_list_t::next, and __alpm_list_t::prev.

  alpm_list_t* alpm_list_remove (alpm_list_t * haystack, const void * needle, alpm_list_fn_cmp fn, void ** data)

Remove an item from the list.

Parameters:
    haystack the list to remove the item from
    needle the data member of the item we're removing
    fn the comparison function for searching
    data output parameter containing data of the removed item

Returns:
    the resultant list

References alpm_list_remove_item(), __alpm_list_t::data, and __alpm_list_t::next.

Referenced by alpm_list_remove_str().

  alpm_list_t* alpm_list_remove_dupes (const alpm_list_t * list)

Create a new list without any duplicates. This does NOT copy data members.

Parameters:
    list the list to copy

Returns:
    a new list containing non-duplicate items

References alpm_list_append(), alpm_list_find_ptr(), alpm_list_free(), __alpm_list_t::data, and __alpm_list_t::next.

  alpm_list_t* alpm_list_remove_item (alpm_list_t * haystack, alpm_list_t * item)

Remove an item from the list. item is not freed; this is the responsibility of the caller.

Parameters:
    haystack the list to remove the item from
    item the item to remove from the list

Returns:
    the resultant list

References __alpm_list_t::next, and __alpm_list_t::prev.

Referenced by alpm_list_remove().

  alpm_list_t* alpm_list_remove_str (alpm_list_t * haystack, const char * needle, char ** data)

Remove a string from a list.

Parameters:
    haystack the list to remove the item from
    needle the data member of the item we're removing
    data output parameter containing data of the removed item

Returns:
    the resultant list

References alpm_list_remove().

  alpm_list_t* alpm_list_reverse (alpm_list_t * list)

Create a new list in reverse order.

Parameters:
    list the list to copy

Returns:
    a new list in reverse order

References alpm_list_append(), alpm_list_free(), alpm_list_last(), __alpm_list_t::data, and __alpm_list_t::prev.

  alpm_list_t* alpm_list_strdup (const alpm_list_t * list)

Copy a string list, including data.

Parameters:
    list the list to copy

Returns:
    a copy of the original list

References alpm_list_append_strdup(), __alpm_list_t::data, and __alpm_list_t::next.

  void* alpm_list_to_array (const alpm_list_t * list, size_t n, size_t size)

Copy a list and data into a standard C array of fixed length. Note that the data elements are shallow copied so any contained pointers will point to the original data.

Parameters:
    list the list to copy
    n the size of the list
    size the size of each data element

Returns:
    an array version of the original list, data copied as well

References __alpm_list_t::next.

Author

Generated automatically by Doxygen for libalpm from the source code.