Lines Matching refs:scratch
87 #define __TREE_DFS_PUSH(scratch, var) \ argument
88 (assert(&(scratch)->stack[sizeof((scratch)->stack)] > (scratch)->sp), \
89 *(++((scratch)->sp)) = (var))
90 #define __TREE_DFS_POP(scratch) \ argument
91 (*(((scratch)->sp)--))
93 #define TREE_DFS_FOREACH(var, root, scratch, field) \ argument
94 for ((scratch)->stack[0] = NULL, (scratch)->sp = (scratch)->stack, \
98 ? __TREE_DFS_PUSH(scratch, (var)->field.tn_younger) : 0), \
101 ? (var)->field.tn_younger : __TREE_DFS_POP(scratch))
103 #define TREE_DFS_FOREACH_SELECTIVE(var, root, scratch, field, sel) \ argument
104 for ((scratch)->stack[0] = NULL, (scratch)->sp = (scratch)->stack, \
108 ? __TREE_DFS_PUSH(scratch, (var)->field.tn_younger) : 0), \
111 ? (var)->field.tn_younger : __TREE_DFS_POP(scratch))
113 #define __TREE_BFS_ENQUEUE(scratch, var) \ argument
114 (*(((scratch)->tail)++) = (var))
115 #define __TREE_BFS_DEQUEUE(scratch) \ argument
116 (*(((scratch)->head)++))
118 #define TREE_BFS_FOREACH(var, root, scratch, field) \ argument
119 for ((scratch)->head = (scratch)->tail = (scratch)->queue, \
124 (__TREE_BFS_ENQUEUE(scratch, (var)->field.tn_first), \
126 : (scratch)->head != (scratch)->tail \
128 (__TREE_BFS_ENQUEUE(scratch, (var)->field.tn_first), \
129 __TREE_BFS_DEQUEUE(scratch)) \
135 : (scratch)->head != (scratch)->tail \
137 __TREE_BFS_DEQUEUE(scratch) \
140 #define TREE_BFS_FOREACH_SELECTIVE(var, root, scratch, field, sel) \ argument
141 for ((scratch)->head = (scratch)->tail = (scratch)->queue, \
146 (__TREE_BFS_ENQUEUE(scratch, (var)->field.tn_first), \
148 : (scratch)->head != (scratch)->tail \
150 (__TREE_BFS_ENQUEUE(scratch, (var)->field.tn_first), \
151 __TREE_BFS_DEQUEUE(scratch)) \
157 : (scratch)->head != (scratch)->tail \
159 __TREE_BFS_DEQUEUE(scratch) \