Rizin
unix-like reverse engineering framework and cli tools
Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
x
z
Functions
_
a
b
c
d
e
f
g
h
i
l
m
n
p
r
s
t
u
v
w
Variables
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
x
z
Enumerations
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
l
m
o
p
r
s
t
u
v
w
x
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
Enumerator
b
d
e
h
i
k
n
p
r
s
w
Properties
Events
Related Functions
Files
File List
File Members
All
$
.
[
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
[
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
$
.
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Enumerations
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
x
y
z
Enumerator
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Macros
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Events
Friends
Macros
Modules
Pages
ql.h
Go to the documentation of this file.
1
/* List definitions. */
2
#define ql_head(a_type) \
3
struct { \
4
a_type *qlh_first; \
5
}
6
7
#define ql_head_initializer(a_head) {NULL}
8
9
#define ql_elm(a_type) qr(a_type)
10
11
/* List functions. */
12
#define ql_new(a_head) do { \
13
(a_head)->qlh_first = NULL; \
14
} while (0)
15
16
#define ql_elm_new(a_elm, a_field) qr_new((a_elm), a_field)
17
18
#define ql_first(a_head) ((a_head)->qlh_first)
19
20
#define ql_last(a_head, a_field) \
21
((ql_first(a_head) != NULL) \
22
? qr_prev(ql_first(a_head), a_field) : NULL)
23
24
#define ql_next(a_head, a_elm, a_field) \
25
((ql_last(a_head, a_field) != (a_elm)) \
26
? qr_next((a_elm), a_field) : NULL)
27
28
#define ql_prev(a_head, a_elm, a_field) \
29
((ql_first(a_head) != (a_elm)) ? qr_prev((a_elm), a_field) \
30
: NULL)
31
32
#define ql_before_insert(a_head, a_qlelm, a_elm, a_field) do { \
33
qr_before_insert((a_qlelm), (a_elm), a_field); \
34
if (ql_first(a_head) == (a_qlelm)) { \
35
ql_first(a_head) = (a_elm); \
36
} \
37
} while (0)
38
39
#define ql_after_insert(a_qlelm, a_elm, a_field) \
40
qr_after_insert((a_qlelm), (a_elm), a_field)
41
42
#define ql_head_insert(a_head, a_elm, a_field) do { \
43
if (ql_first(a_head) != NULL) { \
44
qr_before_insert(ql_first(a_head), (a_elm), a_field); \
45
} \
46
ql_first(a_head) = (a_elm); \
47
} while (0)
48
49
#define ql_tail_insert(a_head, a_elm, a_field) do { \
50
if (ql_first(a_head) != NULL) { \
51
qr_before_insert(ql_first(a_head), (a_elm), a_field); \
52
} \
53
ql_first(a_head) = qr_next((a_elm), a_field); \
54
} while (0)
55
56
#define ql_remove(a_head, a_elm, a_field) do { \
57
if (ql_first(a_head) == (a_elm)) { \
58
ql_first(a_head) = qr_next(ql_first(a_head), a_field); \
59
} \
60
if (ql_first(a_head) != (a_elm)) { \
61
qr_remove((a_elm), a_field); \
62
} else { \
63
ql_first(a_head) = NULL; \
64
} \
65
} while (0)
66
67
#define ql_head_remove(a_head, a_type, a_field) do { \
68
a_type *t = ql_first(a_head); \
69
ql_remove((a_head), t, a_field); \
70
} while (0)
71
72
#define ql_tail_remove(a_head, a_type, a_field) do { \
73
a_type *t = ql_last(a_head, a_field); \
74
ql_remove((a_head), t, a_field); \
75
} while (0)
76
77
#define ql_foreach(a_var, a_head, a_field) \
78
qr_foreach((a_var), ql_first(a_head), a_field)
79
80
#define ql_reverse_foreach(a_var, a_head, a_field) \
81
qr_reverse_foreach((a_var), ql_first(a_head), a_field)
subprojects
rzheap
rz_jemalloc
internal
ql.h
Generated by
1.9.1