class Containers::CSplayTreeMap

  1. ext/containers/bst/bst.c
Parent: Containers

Methods

Public Class

  1. new

Public Instance

  1. clear
  2. delete
  3. each
  4. empty?
  5. get
  6. has_key?
  7. height
  8. max_key
  9. min_key
  10. push
  11. size

Public Instance Aliases

[] -> get
[]= -> push

Public Class methods

new ()
[show source]
static VALUE splaytree_init(VALUE self)
{
        return self;
}

Public Instance methods

clear ()
[show source]
static VALUE splaytree_clear(VALUE self) {
        splaytree *tree = get_tree_from_self(self);
        recursively_free_nodes(tree->root);
        tree->root = NULL;
        return Qnil;
}
delete (p1)
[show source]
static VALUE splaytree_delete(VALUE self, VALUE key) {
        VALUE deleted = Qnil;
        splaytree *tree = get_tree_from_self(self);
        if(!tree->root)
                return Qnil;
        
        tree->root = delete(tree, tree->root, key, &deleted);
        return deleted;
}
each ()
[show source]
static VALUE splaytree_each(VALUE self) {
        splaytree *tree = get_tree_from_self(self);
        splay_each(tree, &splaytree_each_helper, NULL);
        return self;
}
empty? ()
[show source]
static VALUE splaytree_is_empty(VALUE self) {
        splaytree *tree = get_tree_from_self(self);
        return (tree->root ? Qfalse : Qtrue);
}
get (p1)
[show source]
static VALUE splaytree_get(VALUE self, VALUE key) {
        splaytree *tree = get_tree_from_self(self);
        return get(tree, key);
}
has_key? (p1)
[show source]
static VALUE splaytree_has_key(VALUE self, VALUE key) {
        splaytree *tree = get_tree_from_self(self);
        if(!tree->root) { return Qfalse; }
        if(get(tree, key) == Qnil)
                return Qfalse;
        
        return Qtrue;
}
height ()
[show source]
static VALUE splaytree_height(VALUE self) {
        splaytree *tree = get_tree_from_self(self);
        return INT2NUM(height(tree->root));
}
max_key ()
[show source]
static VALUE splaytree_max_key(VALUE self) {
        splaytree *tree = get_tree_from_self(self);
        splaytree_node *node;
        
        if(!tree->root)
                return Qnil;
        
        node = tree->root;
        while (node->right)
                node = node->right;
        
        return node->key;
}
min_key ()
[show source]
static VALUE splaytree_min_key(VALUE self) {
        splaytree *tree = get_tree_from_self(self);
        splaytree_node *node;
        
        if(!tree->root)
                return Qnil;
        
        node = tree->root;
        while (node->left)
                node = node->left;
        
        return node->key;
}
push (p1, p2)
[show source]
static VALUE splaytree_push(VALUE self, VALUE key, VALUE value) {
        splaytree *tree = get_tree_from_self(self);
        tree->root = insert(tree, tree->root, key, value);
        return value;
}
size ()
[show source]
static VALUE splaytree_size(VALUE self) {
        splaytree *tree = get_tree_from_self(self);
        if(!tree->root) { return INT2NUM(0); }
        return INT2NUM(tree->root->size);
}