Main Page   Modules   Data Structures   File List   Data Fields   Related Pages  

Linked list
[D-BUS internal implementation details]

DBusList data structure. More...

Data Structures

struct  DBusList
 A node in a linked list. More...


Defines

#define _dbus_list_get_next_link(list, link)   ((link)->next == *(list) ? NULL : (link)->next)
 Gets the next link in the list, or NULL if there are no more links. More...

#define _dbus_list_get_prev_link(list, link)   ((link) == *(list) ? NULL : (link)->prev)
 Gets the previous link in the list, or NULL if there are no more links. More...


Functions

DBusList * _dbus_list_alloc_link (void *data)
 Allocates a linked list node. More...

void _dbus_list_free_link (DBusList *link)
 Frees a linked list node allocated with _dbus_list_alloc_link. More...

dbus_bool_t _dbus_list_append (DBusList **list, void *data)
 Appends a value to the list. More...

dbus_bool_t _dbus_list_prepend (DBusList **list, void *data)
 Prepends a value to the list. More...

void _dbus_list_append_link (DBusList **list, DBusList *link)
 Appends a link to the list. More...

void _dbus_list_prepend_link (DBusList **list, DBusList *link)
 Prepends a link to the list. More...

dbus_bool_t _dbus_list_insert_before (DBusList **list, DBusList *before_this_link, void *data)
 Inserts data into the list before the given existing link. More...

dbus_bool_t _dbus_list_insert_after (DBusList **list, DBusList *after_this_link, void *data)
 Inserts data into the list after the given existing link. More...

void _dbus_list_insert_before_link (DBusList **list, DBusList *before_this_link, DBusList *link)
 Inserts a link into the list before the given existing link. More...

void _dbus_list_insert_after_link (DBusList **list, DBusList *after_this_link, DBusList *link)
 Inserts a link into the list after the given existing link. More...

dbus_bool_t _dbus_list_remove (DBusList **list, void *data)
 Removes a value from the list. More...

dbus_bool_t _dbus_list_remove_last (DBusList **list, void *data)
 Removes a value from the list. More...

DBusList * _dbus_list_find_last (DBusList **list, void *data)
 Finds a value in the list. More...

void _dbus_list_unlink (DBusList **list, DBusList *link)
 Removes the given link from the list, but doesn't free it. More...

void _dbus_list_remove_link (DBusList **list, DBusList *link)
 Removes a link from the list. More...

void _dbus_list_clear (DBusList **list)
 Frees all links in the list and sets the list head to NULL. More...

DBusList * _dbus_list_get_first_link (DBusList **list)
 Gets the first link in the list. More...

DBusList * _dbus_list_get_last_link (DBusList **list)
 Gets the last link in the list. More...

void * _dbus_list_get_last (DBusList **list)
 Gets the last data in the list. More...

void * _dbus_list_get_first (DBusList **list)
 Gets the first data in the list. More...

DBusList * _dbus_list_pop_first_link (DBusList **list)
 Removes the first link in the list and returns it. More...

void * _dbus_list_pop_first (DBusList **list)
 Removes the first value in the list and returns it. More...

void * _dbus_list_pop_last (DBusList **list)
 Removes the last value in the list and returns it. More...

DBusList * _dbus_list_pop_last_link (DBusList **list)
 Removes the last link in the list and returns it. More...

dbus_bool_t _dbus_list_copy (DBusList **list, DBusList **dest)
 Copies a list. More...

int _dbus_list_get_length (DBusList **list)
 Gets the length of a list. More...

void _dbus_list_foreach (DBusList **list, DBusForeachFunction function, void *data)
 Calls the given function for each element in the list. More...

dbus_bool_t _dbus_list_length_is_one (DBusList **list)
 Check whether length is exactly one. More...


Detailed Description

DBusList data structure.

Types and functions related to DBusList.


Define Documentation

#define _dbus_list_get_next_link list,
link       ((link)->next == *(list) ? NULL : (link)->next)
 

Gets the next link in the list, or NULL if there are no more links.

Used for iteration.

 DBusList *link;
 link = _dbus_list_get_first_link (&list);
 while (link != NULL)
   {
     printf ("value is %p\n", link->data);
     link = _dbus_list_get_next_link (&link);
   }
Parameters:
list  address of the list head.
link  current link.
Returns:
the next link, or NULL if none.

Definition at line 94 of file dbus-list.h.

#define _dbus_list_get_prev_link list,
link       ((link) == *(list) ? NULL : (link)->prev)
 

Gets the previous link in the list, or NULL if there are no more links.

Used for iteration.

 DBusList *link;
 link = _dbus_list_get_last_link (&list);
 while (link != NULL)
   {
     printf ("value is %p\n", link->data);
     link = _dbus_list_get_prev_link (&link);
   }
Parameters:
list  address of the list head.
link  current link.
Returns:
the previous link, or NULL if none.

Definition at line 95 of file dbus-list.h.


Function Documentation

DBusList* _dbus_list_alloc_link void *    data
 

Allocates a linked list node.

Useful for preallocating nodes and using _dbus_list_append_link() to avoid allocations.

Parameters:
data  the value to store in the link.
Returns:
a newly allocated link.

Definition at line 219 of file dbus-list.c.

dbus_bool_t _dbus_list_append DBusList **    list,
void *    data
 

Appends a value to the list.

May return FALSE if insufficient memory exists to add a list link. This is a constant-time operation.

Parameters:
list  address of the list head.
data  the value to append.
Returns:
TRUE on success.

Definition at line 247 of file dbus-list.c.

References next.

void _dbus_list_append_link DBusList **    list,
DBusList   link
 

Appends a link to the list.

Cannot fail due to out of memory. This is a constant-time operation.

Parameters:
list  address of the list head.
link  the link to append.

Definition at line 292 of file dbus-list.c.

References next.

void _dbus_list_clear DBusList **    list
 

Frees all links in the list and sets the list head to NULL.

Does not free the data in each link, for obvious reasons. This is a linear-time operation.

Parameters:
list  address of the list head.

Definition at line 548 of file dbus-list.c.

dbus_bool_t _dbus_list_copy DBusList **    list,
DBusList **    dest
 

Copies a list.

This is a linear-time operation. If there isn't enough memory to copy the entire list, the destination list will be set to NULL.

Parameters:
list  address of the head of the list to copy.
dest  address where the copied list should be placed.
Returns:
TRUE on success, FALSE if not enough memory.

Definition at line 724 of file dbus-list.c.

References data.

DBusList* _dbus_list_find_last DBusList **    list,
void *    data
 

Finds a value in the list.

Returns the last link with value equal to the given data pointer. This is a linear-time operation. Returns NULL if no value found that matches.

Parameters:
list  address of the list head.
data  the value to find.
Returns:
the link if found

Definition at line 478 of file dbus-list.c.

References data.

void _dbus_list_foreach DBusList **    list,
DBusForeachFunction    function,
void *    data
 

Calls the given function for each element in the list.

The function is passed the list element as its first argument, and the given data as its second argument.

Parameters:
list  address of the head of the list.
function  function to call for each element.
data  extra data for the function.

Definition at line 786 of file dbus-list.c.

References data.

void _dbus_list_free_link DBusList   link
 

Frees a linked list node allocated with _dbus_list_alloc_link.

Does not free the data in the node.

Parameters:
link  the list node

Definition at line 231 of file dbus-list.c.

void* _dbus_list_get_first DBusList **    list
 

Gets the first data in the list.

This is a constant-time operation.

Parameters:
list  address of the list head.
Returns:
the first data in the list, or NULL for an empty list.

Definition at line 618 of file dbus-list.c.

DBusList* _dbus_list_get_first_link DBusList **    list
 

Gets the first link in the list.

This is a constant-time operation.

Parameters:
list  address of the list head.
Returns:
the first link, or NULL for an empty list.

Definition at line 573 of file dbus-list.c.

void* _dbus_list_get_last DBusList **    list
 

Gets the last data in the list.

This is a constant-time operation.

Parameters:
list  address of the list head.
Returns:
the last data in the list, or NULL for an empty list.

Definition at line 602 of file dbus-list.c.

DBusList* _dbus_list_get_last_link DBusList **    list
 

Gets the last link in the list.

This is a constant-time operation.

Parameters:
list  address of the list head.
Returns:
the last link, or NULL for an empty list.

Definition at line 586 of file dbus-list.c.

int _dbus_list_get_length DBusList **    list
 

Gets the length of a list.

This is a linear-time operation.

Parameters:
list  address of the head of the list
Returns:
number of elements in the list.

Definition at line 757 of file dbus-list.c.

dbus_bool_t _dbus_list_insert_after DBusList **    list,
DBusList   after_this_link,
void *    data
 

Inserts data into the list after the given existing link.

Parameters:
list  the list to modify
after_this_link  existing link to insert after, or NULL to prepend
data  the value to insert
Returns:
TRUE on success, FALSE if memory allocation fails

Definition at line 354 of file dbus-list.c.

void _dbus_list_insert_after_link DBusList **    list,
DBusList   after_this_link,
DBusList   link
 

Inserts a link into the list after the given existing link.

Parameters:
list  the list to modify
after_this_link  existing link to insert after, or NULL to prepend
link  the link to insert

Definition at line 400 of file dbus-list.c.

dbus_bool_t _dbus_list_insert_before DBusList **    list,
DBusList   before_this_link,
void *    data
 

Inserts data into the list before the given existing link.

Parameters:
list  the list to modify
before_this_link  existing link to insert before, or NULL to append
data  the value to insert
Returns:
TRUE on success, FALSE if memory allocation fails

Definition at line 325 of file dbus-list.c.

void _dbus_list_insert_before_link DBusList **    list,
DBusList   before_this_link,
DBusList   link
 

Inserts a link into the list before the given existing link.

Parameters:
list  the list to modify
before_this_link  existing link to insert before, or NULL to append
link  the link to insert

Definition at line 382 of file dbus-list.c.

dbus_bool_t _dbus_list_length_is_one DBusList **    list
 

Check whether length is exactly one.

Parameters:
list  the list
Returns:
TRUE if length is exactly one

Definition at line 810 of file dbus-list.c.

void* _dbus_list_pop_first DBusList **    list
 

Removes the first value in the list and returns it.

This is a constant-time operation.

Parameters:
list  address of the list head.
Returns:
the first data in the list, or NULL for an empty list.

Definition at line 655 of file dbus-list.c.

References data.

DBusList* _dbus_list_pop_first_link DBusList **    list
 

Removes the first link in the list and returns it.

This is a constant-time operation.

Parameters:
list  address of the list head.
Returns:
the first link in the list, or NULL for an empty list.

Definition at line 634 of file dbus-list.c.

void* _dbus_list_pop_last DBusList **    list
 

Removes the last value in the list and returns it.

This is a constant-time operation.

Parameters:
list  address of the list head.
Returns:
the last data in the list, or NULL for an empty list.

Definition at line 678 of file dbus-list.c.

References data.

DBusList* _dbus_list_pop_last_link DBusList **    list
 

Removes the last link in the list and returns it.

This is a constant-time operation.

Parameters:
list  address of the list head.
Returns:
the last link in the list, or NULL for an empty list.

Definition at line 701 of file dbus-list.c.

dbus_bool_t _dbus_list_prepend DBusList **    list,
void *    data
 

Prepends a value to the list.

May return FALSE if insufficient memory exists to add a list link. This is a constant-time operation.

Parameters:
list  address of the list head.
data  the value to prepend.
Returns:
TRUE on success.

Definition at line 269 of file dbus-list.c.

void _dbus_list_prepend_link DBusList **    list,
DBusList   link
 

Prepends a link to the list.

Cannot fail due to out of memory. This is a constant-time operation.

Parameters:
list  address of the list head.
link  the link to prepend.

Definition at line 310 of file dbus-list.c.

dbus_bool_t _dbus_list_remove DBusList **    list,
void *    data
 

Removes a value from the list.

Only removes the first value equal to the given data pointer, even if multiple values exist which match. This is a linear-time operation.

Parameters:
list  address of the list head.
data  the value to remove.
Returns:
TRUE if a value was found to remove.

Definition at line 421 of file dbus-list.c.

References data.

dbus_bool_t _dbus_list_remove_last DBusList **    list,
void *    data
 

Removes a value from the list.

Only removes the last value equal to the given data pointer, even if multiple values exist which match. This is a linear-time operation.

Parameters:
list  address of the list head.
data  the value to remove.
Returns:
TRUE if a value was found to remove.

Definition at line 452 of file dbus-list.c.

void _dbus_list_remove_link DBusList **    list,
DBusList   link
 

Removes a link from the list.

This is a constant-time operation.

Parameters:
list  address of the list head.
link  the list link to remove.

Definition at line 533 of file dbus-list.c.

void _dbus_list_unlink DBusList **    list,
DBusList   link
 

Removes the given link from the list, but doesn't free it.

_dbus_list_remove_link() both removes the link and also frees it.

Parameters:
list  the list
link  the link in the list

Definition at line 505 of file dbus-list.c.

References next, and prev.


Generated on Wed Jun 9 05:01:28 2004 for D-BUS by doxygen1.2.15