libalpm
Arch Linux Package Manager Library
Data Structures | Defines | Typedefs | Functions
alpm_list.h File Reference
#include <stdlib.h>
Include dependency graph for alpm_list.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  __alpm_list_t
 Linked list type used by libalpm. More...

Defines

#define FREELIST(p)   do { alpm_list_free_inner(p, free); alpm_list_free(p); p = NULL; } while(0)

Typedefs

typedef struct __alpm_list_t alpm_list_t
 Linked list type used by libalpm.
typedef void(* alpm_list_fn_free )(void *)
typedef int(* alpm_list_fn_cmp )(const void *, const void *)

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_talpm_list_add (alpm_list_t *list, void *data)
 Add a new item to the end of the list.
alpm_list_talpm_list_add_sorted (alpm_list_t *list, void *data, alpm_list_fn_cmp fn)
 Add items to a list in sorted order.
alpm_list_talpm_list_join (alpm_list_t *first, alpm_list_t *second)
 Join two lists.
alpm_list_talpm_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_talpm_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_talpm_list_remove_item (alpm_list_t *haystack, alpm_list_t *item)
 Remove an item from the list.
alpm_list_talpm_list_remove (alpm_list_t *haystack, const void *needle, alpm_list_fn_cmp fn, void **data)
 Remove an item from the list.
alpm_list_talpm_list_remove_str (alpm_list_t *haystack, const char *needle, char **data)
 Remove a string from a list.
alpm_list_talpm_list_remove_dupes (const alpm_list_t *list)
 Create a new list without any duplicates.
alpm_list_talpm_list_strdup (const alpm_list_t *list)
 Copy a string list, including data.
alpm_list_talpm_list_copy (const alpm_list_t *list)
 Copy a list, without copying data.
alpm_list_talpm_list_copy_data (const alpm_list_t *list, size_t size)
 Copy a list and copy the data.
alpm_list_talpm_list_reverse (alpm_list_t *list)
 Create a new list in reverse order.
alpm_list_talpm_list_nth (const alpm_list_t *list, size_t n)
 Return nth element from list (starting from 0).
alpm_list_talpm_list_next (const alpm_list_t *list)
 Get the next element of a list.
alpm_list_talpm_list_previous (const alpm_list_t *list)
 Get the previous element of a list.
alpm_list_talpm_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.
alpm_list_talpm_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_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`.
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.

Define Documentation

#define FREELIST (   p)    do { alpm_list_free_inner(p, free); alpm_list_free(p); p = NULL; } while(0)

Typedef Documentation

typedef int(* alpm_list_fn_cmp)(const void *, const void *)

Definition at line 48 of file alpm_list.h.

typedef void(* alpm_list_fn_free)(void *)

Definition at line 47 of file alpm_list.h.

typedef struct __alpm_list_t alpm_list_t

Linked list type used by libalpm.

It is exposed so front ends can use it to prevent the need to reimplement lists of their own; however, it is not required that the front end uses it.