libFirm 1.20
|
double ended queue of generic pointers. More...
#include <stddef.h>
#include "../begin.h"
#include "../end.h"
Go to the source code of this file.
Defines | |
#define | new_waitq() new_pdeq() |
Creates a new pointer wait queue (fifo). | |
#define | del_waitq(wq) del_pdeq(wq) |
Delete a wait queue (fifo) | |
#define | waitq_get(wq) pdeq_getl(wq) |
Retrieve a pointer from the wait queue (fifo). | |
#define | waitq_put(wq, x) pdeq_putr((wq), (x)) |
Add a pointer to the wait queue (fifo). | |
#define | waitq_empty(wq) pdeq_empty(wq) |
Checks if a wait queue is empty. | |
#define | new_stack() new_pdeq() |
Creates a new pointer stack (lifo). | |
#define | stack_pop(st) pdeq_getr(st) |
Pop a pointer from the stack (lifo). | |
#define | stack_push(st, x) pdeq_putr((st), (x)) |
Push a pointer to the stack (lifo). | |
#define | stack_empty(st) pdeq_empty(wq) |
Checks if a stack is empty. | |
Typedefs | |
typedef int(* | cmp_fun )(const void *elem, const void *key) |
The type of the pointer compare function. | |
typedef struct pdeq | pdeq |
The pointer double ended queue (list). | |
typedef pdeq | waitq |
The pdeq is often used as a wait queue. | |
typedef pdeq | stack |
The pdeq can be used as a stack. | |
Functions | |
pdeq * | new_pdeq (void) |
Creates a new double ended pointer list. | |
pdeq * | new_pdeq1 (const void *x) |
Creates a new double ended pointer list and puts an initial pointer element in. | |
void | del_pdeq (pdeq *dq) |
Delete a double ended pointer list. | |
size_t | pdeq_len (pdeq *dq) |
Returns the length of a double ended pointer list. | |
int | pdeq_empty (pdeq *dq) |
Checks if a list is empty. | |
int | pdeq_contains (pdeq *dq, const void *x) |
Returns non-zero if a double ended pointer list contains a pointer x. | |
void * | pdeq_search (pdeq *qp, cmp_fun cmp, const void *key) |
Search a key in a double ended pointer list, the search is controlled by a compare function. | |
void ** | pdeq_copyl (pdeq *qp, const void **dst) |
Convert the double ended pointer list into a linear array beginning from left, the first element in the linear array will be the left one. | |
void ** | pdeq_copyr (pdeq *qp, const void **dst) |
Convert the double ended pointer list into a linear array beginning from right, the first element in the linear array will be the right one. | |
pdeq * | pdeq_putl (pdeq *dq, const void *x) |
Add a pointer to the left side of a double ended pointer list. | |
pdeq * | pdeq_putr (pdeq *dq, const void *x) |
Add a pointer to the right side of a double ended pointer list. | |
void * | pdeq_getl (pdeq *dq) |
Retrieve (and remove) a pointer from the left site of a double ended pointer list. | |
void * | pdeq_getr (pdeq *dq) |
Retrieve (and remove) a pointer from the right site of a double ended pointer list. |
double ended queue of generic pointers.
Definition in file pdeq.h.