Switch/ext/ebtree/ebtree.h
static inline struct eb_node *eb_walk_down(eb_troot_t *start, unsigned int side)
{
	/* A NULL pointer on an empty tree root will be returned as-is */
	while (eb_gettag(start) == EB_NODE)
		start = (eb_untag(start, EB_NODE))->b[side];
	/* NULL is left untouched (root==eb_node, EB_LEAF==0) */
	return eb_root_to_node(eb_untag(start, EB_LEAF));
}
/* Walks down starting at root pointer <start>, and always walking on side
 * <side>. It either returns the node hosting the first leaf on that side,
 * or NULL if no leaf is found. <start> may either be NULL or a branch pointer.
 * The pointer to the leaf (or NULL) is returned.
 */
Walks down starting at root pointer , and always walking on side
. It either returns the node hosting the first leaf on that side,
or NULL if no leaf is found.  may either be NULL or a branch pointer.
The pointer to the leaf (or NULL) is returned.
Walks down starting at root pointer and always walking on side . It either returns the node hosting the first leaf on that side or NULL if no leaf is found . may either be NULL or a branch pointer . The pointer to the leaf ( or NULL ) is returned .
static inline struct eb_node *eb_walk_down(eb_troot_t *start, unsigned int side)
{
	while (eb_gettag(start) == EB_NODE)
		start = (eb_untag(start, EB_NODE))->b[side];
	return eb_root_to_node(eb_untag(start, EB_LEAF));
}
static inline struct eb_node * eb_walk_down ( eb_troot_t * start , unsigned int side ) { while ( eb_gettag ( start ) == EB_NODE ) start = ( eb_untag ( start , EB_NODE ) ) -> b [ side ] ; return eb_root_to_node ( eb_untag ( start , EB_LEAF ) ) ; }
Walks down starting at root pointer <start>, and always walking on side
 <side>.
Walks down starting at root pointer <start > and always walking on side <side > .
/* A NULL pointer on an empty tree root will be returned as-is */ /* NULL is left untouched (root==eb_node, EB_LEAF==0) */