Exemplo n.º 1
0
static const Item *_rb_tree_current_frag_match_item(Frag_Match_Info *fmi_p)
{
	if( CURR_FRAG(fmi_p) == NULL )
		return NULL;
	else
		return RB_NODE_ITEM( CURR_RBT_FRAG(fmi_p) );
}
Exemplo n.º 2
0
static const char *_rb_tree_advance_frag_match(QSP_ARG_DECL  Frag_Match_Info * fmi_p, int direction )
{
	Item *ip;

	// there may be no items!?
	assert( fmi_p != NULL );

	if( direction == CYC_FORWARD ){
		if( CURR_FRAG(fmi_p) == LAST_FRAG(fmi_p) )
			return NULL;
		else {
			SET_CURR_FRAG(fmi_p, rb_successor_node( CURR_RBT_FRAG(fmi_p) ) );
			assert( CURR_FRAG(fmi_p) != NULL );
		}
	} else {
		if( CURR_FRAG(fmi_p) == FIRST_FRAG(fmi_p) )
			return NULL;
		else {
			SET_CURR_FRAG(fmi_p,rb_predecessor_node( CURR_RBT_FRAG(fmi_p) ));
			assert( CURR_FRAG(fmi_p) != NULL );
		}
	}
	ip = RB_NODE_ITEM( CURR_RBT_FRAG(fmi_p) );
	return ITEM_NAME(ip);
}
Exemplo n.º 3
0
Arquivo: rbtree.c Projeto: nasa/QuIP
static void _add_rb_node_to_list(QSP_ARG_DECL  qrb_node *rbn_p, qrb_tree *tree_p)
{
	Node *np;
	Item *ip;

	ip = RB_NODE_ITEM(rbn_p);
	np = mk_node(ip);
	addTail( RB_TREE_ITEM_LIST(tree_p), np );
}