24 rz_list_foreach_prev(el->
children, it,
n) {
58 n->depth =
n->parent ?
n->parent->depth + 1 : 0;
104 if (!t || (node && node->
tree != t) || (t->
root && !node)) {
109 if (!node && !t->
root) {
125 if (!t || !t->
root) {
133 if (!t || !t->
root) {
RZ_API void Ht_() free(HtName_(Ht) *ht)
RZ_API RZ_OWN RzList * rz_list_new(void)
Returns a new initialized RzList pointer (free method is not initialized)
RZ_API RZ_BORROW RzListIter * rz_list_append(RZ_NONNULL RzList *list, void *data)
Appends at the end of the list a new element.
RZ_API void rz_list_free(RZ_NONNULL RzList *list)
Empties the list and frees the list pointer.
static void free_all_children(RTree *t)
static void node_free(RTreeNode *n, RTreeVisitor *vis)
RZ_API RTreeNode * rz_tree_add_node(RTree *t, RTreeNode *node, void *child_data)
RZ_API void rz_tree_reset(RTree *t)
RZ_API void rz_tree_free(RTree *t)
RZ_API void rz_tree_bfs(RTree *t, RTreeVisitor *vis)
static void tree_dfs_node(RTreeNode *r, RTreeVisitor *vis)
static RTreeNode * node_new(RTree *t, void *data)
RZ_API RTree * rz_tree_new(void)
RZ_API void rz_tree_dfs(RTree *t, RTreeVisitor *vis)
static void update_depth(RTreeNode *n, RTreeVisitor *vis)
static void rz_tree_node_free(RTreeNode *n)
RZ_API bool rz_stack_is_empty(RzStack *s)
RZ_API void * rz_stack_pop(RzStack *s)
RZ_API bool rz_stack_push(RzStack *s, void *el)
RZ_API RzStack * rz_stack_new(ut32 n)
RZ_API void rz_stack_free(RzStack *s)
void(* RTreeNodeVisitCb)(RTreeNode *n, RTreeVisitor *vis)
static void ** rz_pvector_reserve(RzPVector *vec, size_t capacity)
RZ_API RzPVector * rz_pvector_new(RzPVectorFree free)
static bool rz_pvector_empty(RzPVector *vec)
static void ** rz_pvector_push(RzPVector *vec, void *x)
RZ_API void * rz_pvector_pop_front(RzPVector *vec)
RZ_API void rz_pvector_free(RzPVector *vec)
struct rz_tree_node_t * parent
void(* discover_child)(RTreeNode *, struct rz_tree_visitor_t *)
void(* pre_visit)(RTreeNode *, struct rz_tree_visitor_t *)
void(* post_visit)(RTreeNode *, struct rz_tree_visitor_t *)