Lines Matching refs:sm

29 static AvlNode *mkNode(const struct sm_state *sm);
32 static AvlNode *lookup(const struct stree *avl, AvlNode *node, const struct sm_state *sm);
34 static bool insert_sm(struct stree *avl, AvlNode **p, const struct sm_state *sm);
35 static bool remove_sm(struct stree *avl, AvlNode **p, const struct sm_state *sm, AvlNode **ret);
95 struct sm_state *avl_lookup(const struct stree *avl, const struct sm_state *sm) in avl_lookup() argument
101 if (sm->owner != USHRT_MAX && in avl_lookup()
102 !avl->has_states[sm->owner]) in avl_lookup()
104 found = lookup(avl, avl->root, sm); in avl_lookup()
107 return (struct sm_state *)found->sm; in avl_lookup()
110 AvlNode *avl_lookup_node(const struct stree *avl, const struct sm_state *sm) in avl_lookup_node() argument
112 return lookup(avl, avl->root, sm); in avl_lookup_node()
128 avl_insert(&new, i.sm); in clone_stree_real()
134 bool avl_insert(struct stree **avl, const struct sm_state *sm) in avl_insert() argument
146 if (sm->owner != USHRT_MAX) in avl_insert()
147 (*avl)->has_states[sm->owner] = 1; in avl_insert()
148 insert_sm(*avl, &(*avl)->root, sm); in avl_insert()
152 bool avl_remove(struct stree **avl, const struct sm_state *sm) in avl_remove() argument
164 remove_sm(*avl, &(*avl)->root, sm, &node); in avl_remove()
177 static AvlNode *mkNode(const struct sm_state *sm) in mkNode() argument
183 node->sm = sm; in mkNode()
199 static AvlNode *lookup(const struct stree *avl, AvlNode *node, const struct sm_state *sm) in lookup() argument
206 cmp = cmp_tracker(sm, node->sm); in lookup()
209 return lookup(avl, node->lr[0], sm); in lookup()
211 return lookup(avl, node->lr[1], sm); in lookup()
220 static bool insert_sm(struct stree *avl, AvlNode **p, const struct sm_state *sm) in insert_sm() argument
223 *p = mkNode(sm); in insert_sm()
228 int cmp = cmp_tracker(sm, node->sm); in insert_sm()
231 node->sm = sm; in insert_sm()
235 if (!insert_sm(avl, &node->lr[side(cmp)], sm)) in insert_sm()
250 static bool remove_sm(struct stree *avl, AvlNode **p, const struct sm_state *sm, AvlNode **ret) in remove_sm() argument
256 int cmp = cmp_tracker(sm, node->sm); in remove_sm()
295 if (!remove_sm(avl, &node->lr[side(cmp)], sm, ret)) in remove_sm()
433 if (last_set && cmp_tracker(last, i.sm) >= 0) in checkOrder()
435 last = i.sm; in checkOrder()
461 iter->sm = NULL; in avl_iter_begin()
472 iter->sm = (struct sm_state *) node->sm; in avl_iter_begin()
493 iter->sm = NULL; in avl_iter_next()
499 iter->sm = (struct sm_state *) node->sm; in avl_iter_next()