Rizin
unix-like reverse engineering framework and cli tools
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Friends Macros Modules Pages
ql.h File Reference

Go to the source code of this file.

Macros

#define ql_head(a_type)
 
#define ql_head_initializer(a_head)   {NULL}
 
#define ql_elm(a_type)   qr(a_type)
 
#define ql_new(a_head)
 
#define ql_elm_new(a_elm, a_field)   qr_new((a_elm), a_field)
 
#define ql_first(a_head)   ((a_head)->qlh_first)
 
#define ql_last(a_head, a_field)
 
#define ql_next(a_head, a_elm, a_field)
 
#define ql_prev(a_head, a_elm, a_field)
 
#define ql_before_insert(a_head, a_qlelm, a_elm, a_field)
 
#define ql_after_insert(a_qlelm, a_elm, a_field)    qr_after_insert((a_qlelm), (a_elm), a_field)
 
#define ql_head_insert(a_head, a_elm, a_field)
 
#define ql_tail_insert(a_head, a_elm, a_field)
 
#define ql_remove(a_head, a_elm, a_field)
 
#define ql_head_remove(a_head, a_type, a_field)
 
#define ql_tail_remove(a_head, a_type, a_field)
 
#define ql_foreach(a_var, a_head, a_field)    qr_foreach((a_var), ql_first(a_head), a_field)
 
#define ql_reverse_foreach(a_var, a_head, a_field)    qr_reverse_foreach((a_var), ql_first(a_head), a_field)
 

Macro Definition Documentation

◆ ql_after_insert

#define ql_after_insert (   a_qlelm,
  a_elm,
  a_field 
)     qr_after_insert((a_qlelm), (a_elm), a_field)

Definition at line 39 of file ql.h.

◆ ql_before_insert

#define ql_before_insert (   a_head,
  a_qlelm,
  a_elm,
  a_field 
)
Value:
do { \
qr_before_insert((a_qlelm), (a_elm), a_field); \
if (ql_first(a_head) == (a_qlelm)) { \
ql_first(a_head) = (a_elm); \
} \
} while (0)
#define ql_first(a_head)
Definition: ql.h:18

Definition at line 32 of file ql.h.

◆ ql_elm

#define ql_elm (   a_type)    qr(a_type)

Definition at line 9 of file ql.h.

◆ ql_elm_new

#define ql_elm_new (   a_elm,
  a_field 
)    qr_new((a_elm), a_field)

Definition at line 16 of file ql.h.

◆ ql_first

#define ql_first (   a_head)    ((a_head)->qlh_first)

Definition at line 18 of file ql.h.

◆ ql_foreach

#define ql_foreach (   a_var,
  a_head,
  a_field 
)     qr_foreach((a_var), ql_first(a_head), a_field)

Definition at line 77 of file ql.h.

◆ ql_head

#define ql_head (   a_type)
Value:
struct { \
a_type *qlh_first; \
}

Definition at line 2 of file ql.h.

◆ ql_head_initializer

#define ql_head_initializer (   a_head)    {NULL}

Definition at line 7 of file ql.h.

◆ ql_head_insert

#define ql_head_insert (   a_head,
  a_elm,
  a_field 
)
Value:
do { \
if (ql_first(a_head) != NULL) { \
qr_before_insert(ql_first(a_head), (a_elm), a_field); \
} \
ql_first(a_head) = (a_elm); \
} while (0)
#define NULL
Definition: cris-opc.c:27

Definition at line 42 of file ql.h.

◆ ql_head_remove

#define ql_head_remove (   a_head,
  a_type,
  a_field 
)
Value:
do { \
a_type *t = ql_first(a_head); \
ql_remove((a_head), t, a_field); \
} while (0)

Definition at line 67 of file ql.h.

◆ ql_last

#define ql_last (   a_head,
  a_field 
)
Value:
((ql_first(a_head) != NULL) \
? qr_prev(ql_first(a_head), a_field) : NULL)
#define qr_prev(a_qr, a_field)
Definition: qr.h:16

Definition at line 20 of file ql.h.

◆ ql_new

#define ql_new (   a_head)
Value:
do { \
(a_head)->qlh_first = NULL; \
} while (0)

Definition at line 12 of file ql.h.

◆ ql_next

#define ql_next (   a_head,
  a_elm,
  a_field 
)
Value:
((ql_last(a_head, a_field) != (a_elm)) \
? qr_next((a_elm), a_field) : NULL)
#define ql_last(a_head, a_field)
Definition: ql.h:20
#define qr_next(a_qr, a_field)
Definition: qr.h:14

Definition at line 24 of file ql.h.

◆ ql_prev

#define ql_prev (   a_head,
  a_elm,
  a_field 
)
Value:
((ql_first(a_head) != (a_elm)) ? qr_prev((a_elm), a_field) \
: NULL)

Definition at line 28 of file ql.h.

◆ ql_remove

#define ql_remove (   a_head,
  a_elm,
  a_field 
)
Value:
do { \
if (ql_first(a_head) == (a_elm)) { \
ql_first(a_head) = qr_next(ql_first(a_head), a_field); \
} \
if (ql_first(a_head) != (a_elm)) { \
qr_remove((a_elm), a_field); \
} else { \
ql_first(a_head) = NULL; \
} \
} while (0)

Definition at line 56 of file ql.h.

◆ ql_reverse_foreach

#define ql_reverse_foreach (   a_var,
  a_head,
  a_field 
)     qr_reverse_foreach((a_var), ql_first(a_head), a_field)

Definition at line 80 of file ql.h.

◆ ql_tail_insert

#define ql_tail_insert (   a_head,
  a_elm,
  a_field 
)
Value:
do { \
if (ql_first(a_head) != NULL) { \
qr_before_insert(ql_first(a_head), (a_elm), a_field); \
} \
ql_first(a_head) = qr_next((a_elm), a_field); \
} while (0)

Definition at line 49 of file ql.h.

◆ ql_tail_remove

#define ql_tail_remove (   a_head,
  a_type,
  a_field 
)
Value:
do { \
a_type *t = ql_last(a_head, a_field); \
ql_remove((a_head), t, a_field); \
} while (0)

Definition at line 72 of file ql.h.