Lines Matching refs:sp

53 splay_tree_delete_helper (splay_tree sp, splay_tree_node node)  in splay_tree_delete_helper()  argument
61 #define KDEL(x) if (sp->delete_key) (*sp->delete_key)(x); in splay_tree_delete_helper()
62 #define VDEL(x) if (sp->delete_value) (*sp->delete_value)(x); in splay_tree_delete_helper()
103 (*sp->deallocate) ((char*) temp, sp->allocate_data); in splay_tree_delete_helper()
139 splay_tree_splay (splay_tree sp, splay_tree_key key) in splay_tree_splay() argument
141 if (sp->root == 0) in splay_tree_splay()
148 n = sp->root; in splay_tree_splay()
149 cmp1 = (*sp->comp) (key, n->key); in splay_tree_splay()
165 cmp2 = (*sp->comp) (key, c->key); in splay_tree_splay()
171 rotate_left (&sp->root, n, c); in splay_tree_splay()
173 rotate_right (&sp->root, n, c); in splay_tree_splay()
181 rotate_left (&sp->root, n, n->left); in splay_tree_splay()
186 rotate_right (&sp->root, n, n->right); in splay_tree_splay()
191 rotate_left (&sp->root, n, n->left); in splay_tree_splay()
196 rotate_right (&sp->root, n, n->right); in splay_tree_splay()
334 splay_tree sp = (splay_tree) (*tree_allocate_fn) in splay_tree_new_typed_alloc() local
337 sp->root = 0; in splay_tree_new_typed_alloc()
338 sp->comp = compare_fn; in splay_tree_new_typed_alloc()
339 sp->delete_key = delete_key_fn; in splay_tree_new_typed_alloc()
340 sp->delete_value = delete_value_fn; in splay_tree_new_typed_alloc()
341 sp->allocate = node_allocate_fn; in splay_tree_new_typed_alloc()
342 sp->deallocate = deallocate_fn; in splay_tree_new_typed_alloc()
343 sp->allocate_data = allocate_data; in splay_tree_new_typed_alloc()
345 return sp; in splay_tree_new_typed_alloc()
351 splay_tree_delete (splay_tree sp) in splay_tree_delete() argument
353 splay_tree_delete_helper (sp, sp->root); in splay_tree_delete()
354 (*sp->deallocate) ((char*) sp, sp->allocate_data); in splay_tree_delete()
362 splay_tree_insert (splay_tree sp, splay_tree_key key, splay_tree_value value) in splay_tree_insert() argument
366 splay_tree_splay (sp, key); in splay_tree_insert()
368 if (sp->root) in splay_tree_insert()
369 comparison = (*sp->comp)(sp->root->key, key); in splay_tree_insert()
371 if (sp->root && comparison == 0) in splay_tree_insert()
375 if (sp->delete_value) in splay_tree_insert()
376 (*sp->delete_value)(sp->root->value); in splay_tree_insert()
377 sp->root->value = value; in splay_tree_insert()
385 (*sp->allocate) (sizeof (struct splay_tree_node_s), in splay_tree_insert()
386 sp->allocate_data)); in splay_tree_insert()
390 if (!sp->root) in splay_tree_insert()
394 node->left = sp->root; in splay_tree_insert()
400 node->right = sp->root; in splay_tree_insert()
405 sp->root = node; in splay_tree_insert()
408 return sp->root; in splay_tree_insert()
414 splay_tree_remove (splay_tree sp, splay_tree_key key) in splay_tree_remove() argument
416 splay_tree_splay (sp, key); in splay_tree_remove()
418 if (sp->root && (*sp->comp) (sp->root->key, key) == 0) in splay_tree_remove()
422 left = sp->root->left; in splay_tree_remove()
423 right = sp->root->right; in splay_tree_remove()
426 if (sp->delete_value) in splay_tree_remove()
427 (*sp->delete_value) (sp->root->value); in splay_tree_remove()
428 (*sp->deallocate) (sp->root, sp->allocate_data); in splay_tree_remove()
434 sp->root = left; in splay_tree_remove()
446 sp->root = right; in splay_tree_remove()
454 splay_tree_lookup (splay_tree sp, splay_tree_key key) in splay_tree_lookup() argument
456 splay_tree_splay (sp, key); in splay_tree_lookup()
458 if (sp->root && (*sp->comp)(sp->root->key, key) == 0) in splay_tree_lookup()
459 return sp->root; in splay_tree_lookup()
467 splay_tree_max (splay_tree sp) in splay_tree_max() argument
469 splay_tree_node n = sp->root; in splay_tree_max()
483 splay_tree_min (splay_tree sp) in splay_tree_min() argument
485 splay_tree_node n = sp->root; in splay_tree_min()
500 splay_tree_predecessor (splay_tree sp, splay_tree_key key) in splay_tree_predecessor() argument
506 if (!sp->root) in splay_tree_predecessor()
511 splay_tree_splay (sp, key); in splay_tree_predecessor()
512 comparison = (*sp->comp)(sp->root->key, key); in splay_tree_predecessor()
516 return sp->root; in splay_tree_predecessor()
519 node = sp->root->left; in splay_tree_predecessor()
531 splay_tree_successor (splay_tree sp, splay_tree_key key) in splay_tree_successor() argument
537 if (!sp->root) in splay_tree_successor()
542 splay_tree_splay (sp, key); in splay_tree_successor()
543 comparison = (*sp->comp)(sp->root->key, key); in splay_tree_successor()
547 return sp->root; in splay_tree_successor()
550 node = sp->root->right; in splay_tree_successor()
564 splay_tree_foreach (splay_tree sp, splay_tree_foreach_fn fn, void *data) in splay_tree_foreach() argument
566 return splay_tree_foreach_helper (sp->root, fn, data); in splay_tree_foreach()