Rizin
unix-like reverse engineering framework and cli tools
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.