Lines Matching refs:field
29 #define TREE_INIT_NODE(elm, field) do { \ argument
30 (elm)->field.tn_parent = NULL; \
31 (elm)->field.tn_first = NULL; \
32 (elm)->field.tn_last = NULL; \
33 (elm)->field.tn_younger = NULL; \
34 (elm)->field.tn_older = NULL; \
37 #define TREE_INSERT_CHILD(treeelm, elm, field) do { \ argument
38 (elm)->field.tn_parent = (treeelm); \
39 if ((treeelm)->field.tn_last != NULL) { \
40 (treeelm)->field.tn_last->field.tn_younger = (elm); \
41 (elm)->field.tn_older = (treeelm)->field.tn_last; \
43 (treeelm)->field.tn_last = (elm); \
44 if ((treeelm)->field.tn_first == NULL) \
45 (treeelm)->field.tn_first = (elm); \
48 #define TREE_INSERT_YOUNGER(treeelm, elm, field) do { \ argument
49 (elm)->field.tn_parent = (treeelm)->field.tn_parent; \
50 if ((treeelm)->field.tn_younger != NULL) { \
51 (elm)->field.tn_younger = (treeelm)->field.tn_younger; \
52 (elm)->field.tn_younger->field.tn_older = (elm); \
54 else if ((treeelm)->field.tn_parent != NULL) \
55 (treeelm)->field.tn_parent->field.tn_last = (elm); \
56 (treeelm)->field.tn_younger = (elm); \
57 (elm)->field.tn_older = (treeelm); \
60 #define TREE_INSERT_OLDER(treeelm, elm, field) do { \ argument
61 (elm)->field.tn_parent = (treeelm)->field.tn_parent; \
62 if ((treeelm)->field.tn_older != NULL) { \
63 (elm)->field.tn_older = (treeelm)->field.tn_older; \
64 (elm)->field.tn_older->field.tn_younger = (elm); \
66 else if ((treeelm)->field.tn_parent != NULL) \
67 (treeelm)->field.tn_parent->field.tn_first = (elm); \
68 (treeelm)->field.tn_older = (elm); \
69 (elm)->field.tn_younger = (treeelm); \
72 #define TREE_DETACH(elm, field) do { \ argument
73 if ((elm)->field.tn_parent) { \
74 if ((elm)->field.tn_parent->field.tn_first == (elm)) \
75 (elm)->field.tn_parent->field.tn_first = (elm)->field.tn_younger; \
76 if ((elm)->field.tn_parent->field.tn_last == (elm)) \
77 (elm)->field.tn_parent->field.tn_last = (elm)->field.tn_older; \
79 if ((elm)->field.tn_younger) \
80 (elm)->field.tn_younger->field.tn_older = (elm)->field.tn_older; \
81 if ((elm)->field.tn_older) \
82 (elm)->field.tn_older->field.tn_younger = (elm)->field.tn_younger; \
83 (elm)->field.tn_older = (elm)->field.tn_younger = NULL; \
84 (elm)->field.tn_parent = NULL; \
93 #define TREE_DFS_FOREACH(var, root, scratch, field) \ argument
96 (var) = (var)->field.tn_first \
97 ? ((((var)->field.tn_younger && (var) != (root)) \
98 ? __TREE_DFS_PUSH(scratch, (var)->field.tn_younger) : 0), \
99 (var)->field.tn_first) \
100 : ((var)->field.tn_younger && (var) != (root)) \
101 ? (var)->field.tn_younger : __TREE_DFS_POP(scratch))
103 #define TREE_DFS_FOREACH_SELECTIVE(var, root, scratch, field, sel) \ argument
106 (var) = ((sel) && (var)->field.tn_first) \
107 ? ((((var)->field.tn_younger && (var) != (root)) \
108 ? __TREE_DFS_PUSH(scratch, (var)->field.tn_younger) : 0), \
109 (var)->field.tn_first) \
110 : ((var)->field.tn_younger && (var) != (root)) \
111 ? (var)->field.tn_younger : __TREE_DFS_POP(scratch))
118 #define TREE_BFS_FOREACH(var, root, scratch, field) \ argument
121 (var) = (var)->field.tn_first \
122 ? (var)->field.tn_younger \
124 (__TREE_BFS_ENQUEUE(scratch, (var)->field.tn_first), \
125 (var)->field.tn_younger) \
128 (__TREE_BFS_ENQUEUE(scratch, (var)->field.tn_first), \
131 (var)->field.tn_first \
132 : (var)->field.tn_younger \
134 (var)->field.tn_younger \
140 #define TREE_BFS_FOREACH_SELECTIVE(var, root, scratch, field, sel) \ argument
143 (var) = ((sel) && (var)->field.tn_first) \
144 ? (var)->field.tn_younger \
146 (__TREE_BFS_ENQUEUE(scratch, (var)->field.tn_first), \
147 (var)->field.tn_younger) \
150 (__TREE_BFS_ENQUEUE(scratch, (var)->field.tn_first), \
153 (var)->field.tn_first \
154 : (var)->field.tn_younger \
156 (var)->field.tn_younger \
162 #define TREE_FIRSTBORN(ent, field) ((ent)->field.tn_first) argument
163 #define TREE_LASTBORN(ent, field) ((ent)->field.tn_last) argument
164 #define TREE_YOUNGER(ent, field) ((ent)->field.tn_younger) argument
165 #define TREE_OLDER(ent, field) ((ent)->field.tn_older) argument
166 #define TREE_PARENT(ent, field) ((ent)->field.tn_parent) argument