Class: Containers::CSplayTreeMap

Inherits:
Object
  • Object
show all
Defined in:
ext/containers/splaytree_map/splaytree.c

Instance Method Summary collapse

Constructor Details

#initializeObject


250
251
252
253
# File 'ext/containers/splaytree_map/splaytree.c', line 250

static VALUE splaytree_init(VALUE self)
{
  return self;
}

Instance Method Details

#clearObject


378
379
380
381
382
383
# File 'ext/containers/splaytree_map/splaytree.c', line 378

static VALUE splaytree_clear(VALUE self) {
  splaytree *tree = get_tree_from_self(self);
  recursively_free_nodes(tree->root);
  tree->root = NULL;
  return Qnil;
}

#delete(key) ⇒ Object


368
369
370
371
372
373
374
375
376
# File 'ext/containers/splaytree_map/splaytree.c', line 368

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;
}

#eachObject


389
390
391
392
393
# File 'ext/containers/splaytree_map/splaytree.c', line 389

static VALUE splaytree_each(VALUE self) {
  splaytree *tree = get_tree_from_self(self);
  splay_each(tree, &splaytree_each_helper, NULL);
  return self;
}

#empty?Boolean

Returns:

  • (Boolean)

321
322
323
324
# File 'ext/containers/splaytree_map/splaytree.c', line 321

static VALUE splaytree_is_empty(VALUE self) {
  splaytree *tree = get_tree_from_self(self);
  return (tree->root ? Qfalse : Qtrue);
}

#get(key) ⇒ Object Also known as: []


310
311
312
313
# File 'ext/containers/splaytree_map/splaytree.c', line 310

static VALUE splaytree_get(VALUE self, VALUE key) {
  splaytree *tree = get_tree_from_self(self);
  return get(tree, key);
}

#has_key?(key) ⇒ Boolean

Returns:

  • (Boolean)

331
332
333
334
335
336
337
338
# File 'ext/containers/splaytree_map/splaytree.c', line 331

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;
}

#heightObject


326
327
328
329
# File 'ext/containers/splaytree_map/splaytree.c', line 326

static VALUE splaytree_height(VALUE self) {
  splaytree *tree = get_tree_from_self(self);
  return INT2NUM(height(tree->root));
}

#max_keyObject


354
355
356
357
358
359
360
361
362
363
364
365
366
# File 'ext/containers/splaytree_map/splaytree.c', line 354

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_keyObject


340
341
342
343
344
345
346
347
348
349
350
351
352
# File 'ext/containers/splaytree_map/splaytree.c', line 340

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(key, value) ⇒ Object Also known as: []=


304
305
306
307
308
# File 'ext/containers/splaytree_map/splaytree.c', line 304

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;
}

#sizeObject


315
316
317
318
319
# File 'ext/containers/splaytree_map/splaytree.c', line 315

static VALUE splaytree_size(VALUE self) {
  splaytree *tree = get_tree_from_self(self);
  if(!tree->root) { return INT2NUM(0); }
  return INT2NUM(tree->root->size);
}