Class: InMemoryKV::Str2Str

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
ext/inmemory_kv.c

Instance Method Summary collapse

Instance Method Details

#[](vkey) ⇒ Object



558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
# File 'ext/inmemory_kv.c', line 558

static VALUE
rb_kv_get(VALUE self, VALUE vkey) {
	inmemory_kv* kv;
	const char *key;
	size_t size;
	hash_item* item;

	GetKV(self, kv);
	StringValue(vkey);
	key = RSTRING_PTR(vkey);
	size = RSTRING_LEN(vkey);
	item = kv_fetch(kv, key, size);
	if (item == NULL) return Qnil;
	return item_val_str(item);
}

#[]=(vkey, vval) ⇒ Object



621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
# File 'ext/inmemory_kv.c', line 621

static VALUE
rb_kv_set(VALUE self, VALUE vkey, VALUE vval) {
	inmemory_kv* kv;
	const char *key, *val;
	size_t ksize, vsize;

	GetKV(self, kv);
	StringValue(vkey);
	StringValue(vval);
	key = RSTRING_PTR(vkey);
	ksize = RSTRING_LEN(vkey);
	val = RSTRING_PTR(vval);
	vsize = RSTRING_LEN(vval);

	kv_insert(kv, key, ksize, val, vsize);

	return vval;
}

#clearObject



878
879
880
881
882
883
884
885
# File 'ext/inmemory_kv.c', line 878

static VALUE
rb_kv_clear(VALUE self) {
	inmemory_kv* kv;
	GetKV(self, kv);
	kv_destroy(kv);
	memset(kv, 0, sizeof(*kv));
	return self;
}

#countObject



709
710
711
712
713
714
# File 'ext/inmemory_kv.c', line 709

static VALUE
rb_kv_size(VALUE self) {
	inmemory_kv* kv;
	GetKV(self, kv);
	return UINT2NUM(kv->tab.size);
}

#data_sizeObject



723
724
725
726
727
728
# File 'ext/inmemory_kv.c', line 723

static VALUE
rb_kv_data_size(VALUE self) {
	inmemory_kv* kv;
	GetKV(self, kv);
	return SIZET2NUM(kv->total_size);
}

#delete(vkey) ⇒ Object



640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
# File 'ext/inmemory_kv.c', line 640

static VALUE
rb_kv_del(VALUE self, VALUE vkey) {
	inmemory_kv* kv;
	const char *key;
	size_t size;
	hash_item* item;
	VALUE res;

	GetKV(self, kv);
	StringValue(vkey);
	key = RSTRING_PTR(vkey);
	size = RSTRING_LEN(vkey);
	item = kv_fetch(kv, key, size);
	if (item == NULL) return Qnil;
	res = item_val_str(item);
	kv_delete(kv, item);
	return res;
}

#down(vkey) ⇒ Object



591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
# File 'ext/inmemory_kv.c', line 591

static VALUE
rb_kv_down(VALUE self, VALUE vkey) {
	inmemory_kv* kv;
	const char *key;
	size_t size;
	hash_item* item;

	GetKV(self, kv);
	StringValue(vkey);
	key = RSTRING_PTR(vkey);
	size = RSTRING_LEN(vkey);
	item = kv_fetch(kv, key, size);
	if (item == NULL) return Qnil;
	kv_down(kv, item);
	return item_val_str(item);
}

#eachObject



824
825
826
827
828
829
830
831
# File 'ext/inmemory_kv.c', line 824

static VALUE
rb_kv_each(VALUE self) {
	inmemory_kv* kv;
	GetKV(self, kv);
	RETURN_ENUMERATOR(self, 0, 0);
	kv_each(kv, pair_i, NULL);
	return self;
}

#each_keyObject



806
807
808
809
810
811
812
813
# File 'ext/inmemory_kv.c', line 806

static VALUE
rb_kv_each_key(VALUE self) {
	inmemory_kv* kv;
	GetKV(self, kv);
	RETURN_ENUMERATOR(self, 0, 0);
	kv_each(kv, key_i, NULL);
	return self;
}

#each_pairObject



824
825
826
827
828
829
830
831
# File 'ext/inmemory_kv.c', line 824

static VALUE
rb_kv_each(VALUE self) {
	inmemory_kv* kv;
	GetKV(self, kv);
	RETURN_ENUMERATOR(self, 0, 0);
	kv_each(kv, pair_i, NULL);
	return self;
}

#each_valueObject



815
816
817
818
819
820
821
822
# File 'ext/inmemory_kv.c', line 815

static VALUE
rb_kv_each_val(VALUE self) {
	inmemory_kv* kv;
	GetKV(self, kv);
	RETURN_ENUMERATOR(self, 0, 0);
	kv_each(kv, val_i, NULL);
	return self;
}

#empty?Boolean

Returns:

  • (Boolean)


716
717
718
719
720
721
# File 'ext/inmemory_kv.c', line 716

static VALUE
rb_kv_empty_p(VALUE self) {
	inmemory_kv* kv;
	GetKV(self, kv);
	return kv->tab.size ? Qfalse : Qtrue;
}

#entriesObject



778
779
780
781
782
783
784
785
786
# File 'ext/inmemory_kv.c', line 778

static VALUE
rb_kv_entries(VALUE self) {
	inmemory_kv* kv;
	VALUE res;
	GetKV(self, kv);
	res = rb_ary_new2(kv->tab.size);
	kv_each(kv, pairs_i, (void*)res);
	return res;
}

#firstObject



659
660
661
662
663
664
665
666
667
668
669
670
671
# File 'ext/inmemory_kv.c', line 659

static VALUE
rb_kv_first(VALUE self) {
	inmemory_kv* kv;
	hash_item* item;
	VALUE key, val;

	GetKV(self, kv);
	item = kv_first(kv);
	if (item == NULL) return Qnil;
	key = item_key_str(item);
	val = item_val_str(item);
	return rb_assoc_new(key, val);
}

#has_key?(vkey) ⇒ Boolean

Returns:

  • (Boolean)


608
609
610
611
612
613
614
615
616
617
618
619
# File 'ext/inmemory_kv.c', line 608

static VALUE
rb_kv_include(VALUE self, VALUE vkey) {
	inmemory_kv* kv;
	const char *key;
	size_t size;

	GetKV(self, kv);
	StringValue(vkey);
	key = RSTRING_PTR(vkey);
	size = RSTRING_LEN(vkey);
	return kv_fetch(kv, key, size) ? Qtrue : Qfalse;
}

#include?(vkey) ⇒ Boolean

Returns:

  • (Boolean)


608
609
610
611
612
613
614
615
616
617
618
619
# File 'ext/inmemory_kv.c', line 608

static VALUE
rb_kv_include(VALUE self, VALUE vkey) {
	inmemory_kv* kv;
	const char *key;
	size_t size;

	GetKV(self, kv);
	StringValue(vkey);
	key = RSTRING_PTR(vkey);
	size = RSTRING_LEN(vkey);
	return kv_fetch(kv, key, size) ? Qtrue : Qfalse;
}

#initialize_copy(orig) ⇒ Object



869
870
871
872
873
874
875
876
# File 'ext/inmemory_kv.c', line 869

static VALUE
rb_kv_init_copy(VALUE self, VALUE orig) {
	inmemory_kv *origin, *new;
	GetKV(self, new);
	GetKV(orig, origin);
	kv_copy_to(origin, new);
	return self;
}

#inspectObject



854
855
856
857
858
859
860
861
862
863
864
865
866
867
# File 'ext/inmemory_kv.c', line 854

static VALUE
rb_kv_inspect(VALUE self) {
	struct inspect_arg ins;
	inmemory_kv* kv;
	GetKV(self, kv);
	ins.str = rb_str_buf_new2("<");
	rb_str_append(ins.str, rb_class_name(CLASS_OF(self)));
	if (kv->tab.size != 0) {
		ins.tmp = rb_str_buf_new(0);
		kv_each(kv, inspect_i, &ins);
	}
	rb_str_buf_cat2(ins.str, ">");
	return ins.str;
}

#keysObject



758
759
760
761
762
763
764
765
766
# File 'ext/inmemory_kv.c', line 758

static VALUE
rb_kv_keys(VALUE self) {
	inmemory_kv* kv;
	VALUE res;
	GetKV(self, kv);
	res = rb_ary_new2(kv->tab.size);
	kv_each(kv, keys_i, (void*)res);
	return res;
}

#shiftObject



673
674
675
676
677
678
679
680
681
682
683
684
685
686
# File 'ext/inmemory_kv.c', line 673

static VALUE
rb_kv_shift(VALUE self) {
	inmemory_kv* kv;
	hash_item* item;
	VALUE key, val;

	GetKV(self, kv);
	item = kv_first(kv);
	if (item == NULL) return Qnil;
	key = item_key_str(item);
	val = item_val_str(item);
	kv_delete(kv, item);
	return rb_assoc_new(key, val);
}

#sizeObject



709
710
711
712
713
714
# File 'ext/inmemory_kv.c', line 709

static VALUE
rb_kv_size(VALUE self) {
	inmemory_kv* kv;
	GetKV(self, kv);
	return UINT2NUM(kv->tab.size);
}

#total_sizeObject



730
731
732
733
734
735
# File 'ext/inmemory_kv.c', line 730

static VALUE
rb_kv_total_size(VALUE self) {
	inmemory_kv* kv;
	GetKV(self, kv);
	return SIZET2NUM(rb_kv_memsize(kv));
}

#unshift(vkey, vval) ⇒ Object



688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
# File 'ext/inmemory_kv.c', line 688

static VALUE
rb_kv_unshift(VALUE self, VALUE vkey, VALUE vval) {
	inmemory_kv* kv;
	const char *key, *val;
	size_t ksize, vsize;
	hash_item* item;

	GetKV(self, kv);
	StringValue(vkey);
	StringValue(vval);
	key = RSTRING_PTR(vkey);
	ksize = RSTRING_LEN(vkey);
	val = RSTRING_PTR(vval);
	vsize = RSTRING_LEN(vval);

	item = kv_insert(kv, key, ksize, val, vsize);
	kv_down(kv, item);

	return vval;
}

#up(vkey) ⇒ Object



574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
# File 'ext/inmemory_kv.c', line 574

static VALUE
rb_kv_up(VALUE self, VALUE vkey) {
	inmemory_kv* kv;
	const char *key;
	size_t size;
	hash_item* item;

	GetKV(self, kv);
	StringValue(vkey);
	key = RSTRING_PTR(vkey);
	size = RSTRING_LEN(vkey);
	item = kv_fetch(kv, key, size);
	if (item == NULL) return Qnil;
	kv_up(kv, item);
	return item_val_str(item);
}

#valuesObject



768
769
770
771
772
773
774
775
776
# File 'ext/inmemory_kv.c', line 768

static VALUE
rb_kv_vals(VALUE self) {
	inmemory_kv* kv;
	VALUE res;
	GetKV(self, kv);
	res = rb_ary_new2(kv->tab.size);
	kv_each(kv, vals_i, (void*)res);
	return res;
}