GTGList.h File Reference

Go to the source code of this file.

## Data Structures

struct | gtg_list

## Macros

#define | GTG_LIST_INIT(ptr)
| initialize a list. More...
#define | GTG_LIST(name)
| declare and initialize a list. More...
#define | gtg_list_entry(ptr, type, member) ((type *)((char *)(ptr) - (char *)(&((type *)0)->member)))
| get the structure corresponding to a list entry More...
#define | gtg_list_for_each(pos, head) for (pos = (head)->next; pos != (head); pos = pos->next)
#define | gtg_list_for_each_reverse(pos, head) for (pos = (head)->prev; pos != (head); pos = pos->prev)
#define | gtg_list_for_each_safe(pos, n, head)
#define | gtg_list_for_each_entry(pos, head, member)
| iterate over list of given type More...
#define | gtg_list_for_each_entry_safe(pos, n, head, member)
| iterate over list of given type safe against removal of list entry More...

## Typedefs

typedef struct gtg_list * | gtg_list_t

## Functions

static void | __gtg_list_add (gtg_list_t lnew, gtg_list_t prev, gtg_list_t next)
static void | gtg_list_add (gtg_list_t lnew, gtg_list_t head)
| Insert a new entry after the specified head. More...
static void | gtg_list_add_tail (gtg_list_t lnew, gtg_list_t head)
| Insert a new entry before the specified head (ie. at the tail of the list). More...
static void | __gtg_list_del (gtg_list_t prev, gtg_list_t next)
static void | gtg_list_del (gtg_list_t entry)
| delete an entry from its list and reinitialize it. More...
static int | gtg_list_size (gtg_list_t l)

## Macro Definition Documentation

GTG_LIST | ( |  | name | ) |

Value:
struct gtg_list name; \
GTG_LIST_INIT(&name)
gtg_list
Definition: GTGList.h:4
GTG_LIST_INIT
#define GTG_LIST_INIT(ptr)
initialize a list.
Definition: GTGList.h:16

declare and initialize a list.

Parameters

  name | Name of the variable

gtg_list_entry | ( |  | ptr,
|  |  | type,
|  |  | member
| ) |  | ((type *)((char *)(ptr) - (char *)(&((type *)0)->member)))

get the structure corresponding to a list entry

Parameters

  ptr | pointer to the list entry (gtg_list_t)
  type | the type of the struct this is embedded in.
  member | the name of the struct gtg_list member within the struct.

#define gtg_list_for_each | ( |  | pos,
|  |  | head
| ) |  | for (pos = (head)->next; pos != (head); pos = pos->next)

#define gtg_list_for_each_entry | ( |  | pos,
|  |  | head,
|  |  | member
| ) |  |

Value:
for (pos = gtg_list_entry((head)->next, typeof(*pos), member); \
&pos->member != (head); \
pos = gtg_list_entry(pos->member.next, typeof(*pos), member))
gtg_list_entry
#define gtg_list_entry(ptr, type, member)
get the structure corresponding to a list entry
Definition: GTGList.h:39
gtg_list::next
struct gtg_list * next
Definition: GTGList.h:6

iterate over list of given type

gtg_list_for_each_entry(pos, head, member)

Parameters

  pos | the type * to use as a loop counter.
  head | the head for the list.
  member | the name of the struct gtg_list member within the struct.

#define gtg_list_for_each_entry_safe | ( |  | pos,
|  |  | n,
|  |  | head,
|  |  | member
| ) |  |

Value:
for (pos = gtg_list_entry((head)->next, typeof(*pos), member), \
n = gtg_list_entry(pos->member.next, typeof(*pos), member); \
&pos->member != (head); \
pos = n, n = gtg_list_entry(n->member.next, typeof(*n), member))
gtg_list_entry
#define gtg_list_entry(ptr, type, member)
get the structure corresponding to a list entry
Definition: GTGList.h:39
gtg_list::next
struct gtg_list * next
Definition: GTGList.h:6

iterate over list of given type safe against removal of list entry

gtg_list_for_each_entry_safe(pos, n, head, member)

Parameters

  pos | the type * to use as a loop counter.
  n | another type * to use as temporary storage
  head | the head for the list.
  member | the name of the struct gtg_list member within the struct.

#define gtg_list_for_each_reverse | ( |  | pos,
|  |  | head
| ) |  | for (pos = (head)->prev; pos != (head); pos = pos->prev)

#define gtg_list_for_each_safe | ( |  | pos,
|  |  | n,
|  |  | head
| ) |  |

Value:
for (pos = (head)->next, n = pos->next; pos != (head); \
pos = n, n = pos->next)
gtg_list::next
struct gtg_list * next
Definition: GTGList.h:6

GTG_LIST_INIT | ( |  | ptr | ) |

Value:
do { \
(ptr)->prev = (ptr); \
(ptr)->next = (ptr); \
} while(0)
gtg_list::prev
struct gtg_list * prev
Definition: GTGList.h:5
gtg_list::next
struct gtg_list * next
Definition: GTGList.h:6

initialize a list.

Parameters

  ptr | pointer to the list (gtg_list_t).

## Typedef Documentation

typedef struct gtg_list* gtg_list_t

## Function Documentation

static void __gtg_list_add | ( | gtg_list_t | lnew,
|  | gtg_list_t | prev,
|  | gtg_list_t | next
| ) |  |

inlinestatic

static void __gtg_list_del | ( | gtg_list_t | prev,
|  | gtg_list_t | next
| ) |  |

inlinestatic

Delete a list entry by making the prev/next entries point to each other.

This is only for internal list manipulation where we know the prev/next entries already!

void gtg_list_add | ( | gtg_list_t | lnew,
|  | gtg_list_t | head
| ) |  |

inlinestatic

Insert a new entry after the specified head.

Parameters

  lnew | new entry to be added
  head | list head to add it after

void gtg_list_add_tail | ( | gtg_list_t | lnew,
|  | gtg_list_t | head
| ) |  |

inlinestatic

Insert a new entry before the specified head (ie. at the tail of the list).

Parameters

  lnew | new entry to be added
  head | list head to add it after

void gtg_list_del | ( | gtg_list_t | entry | ) |

inlinestatic

delete an entry from its list and reinitialize it.

Parameters

  entry | the element to delete from the list.

static int gtg_list_size | ( | gtg_list_t | l | ) |

inlinestatic