Class: InMemoryKV::Str2Str
- Inherits:
-
Object
- Object
- InMemoryKV::Str2Str
- Includes:
- Enumerable
- Defined in:
- ext/inmemory_kv.c
Instance Method Summary collapse
- #[](vkey) ⇒ Object
- #[]=(vkey, vval) ⇒ Object
- #clear ⇒ Object
- #count ⇒ Object
- #data_size ⇒ Object
- #delete(vkey) ⇒ Object
- #down(vkey) ⇒ Object
- #each ⇒ Object
- #each_key ⇒ Object
- #each_pair ⇒ Object
- #each_value ⇒ Object
- #empty? ⇒ Boolean
- #entries ⇒ Object
- #first ⇒ Object
- #has_key?(vkey) ⇒ Boolean
- #include?(vkey) ⇒ Boolean
- #initialize_copy(orig) ⇒ Object
- #inspect ⇒ Object
- #keys ⇒ Object
- #shift ⇒ Object
- #size ⇒ Object
- #total_size ⇒ Object
- #unshift(vkey, vval) ⇒ Object
- #up(vkey) ⇒ Object
- #values ⇒ Object
Instance Method Details
#[](vkey) ⇒ Object
572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 |
# File 'ext/inmemory_kv.c', line 572
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
635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 |
# File 'ext/inmemory_kv.c', line 635
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);
if (kv_insert(kv, key, ksize, val, vsize) == NULL) {
rb_raise(rb_eNoMemError, "could not malloc");
}
return vval;
}
|
#clear ⇒ Object
897 898 899 900 901 902 903 904 |
# File 'ext/inmemory_kv.c', line 897 static VALUE rb_kv_clear(VALUE self) { inmemory_kv* kv; GetKV(self, kv); kv_destroy(kv); memset(kv, 0, sizeof(*kv)); return self; } |
#count ⇒ Object
728 729 730 731 732 733 |
# File 'ext/inmemory_kv.c', line 728
static VALUE
rb_kv_size(VALUE self) {
inmemory_kv* kv;
GetKV(self, kv);
return UINT2NUM(kv->tab.size);
}
|
#data_size ⇒ Object
742 743 744 745 746 747 |
# File 'ext/inmemory_kv.c', line 742
static VALUE
rb_kv_data_size(VALUE self) {
inmemory_kv* kv;
GetKV(self, kv);
return SIZET2NUM(kv->total_size);
}
|
#delete(vkey) ⇒ Object
656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 |
# File 'ext/inmemory_kv.c', line 656
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
605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 |
# File 'ext/inmemory_kv.c', line 605
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);
}
|
#each ⇒ Object
843 844 845 846 847 848 849 850 |
# File 'ext/inmemory_kv.c', line 843 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_key ⇒ Object
825 826 827 828 829 830 831 832 |
# File 'ext/inmemory_kv.c', line 825 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_pair ⇒ Object
843 844 845 846 847 848 849 850 |
# File 'ext/inmemory_kv.c', line 843 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_value ⇒ Object
834 835 836 837 838 839 840 841 |
# File 'ext/inmemory_kv.c', line 834 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
735 736 737 738 739 740 |
# File 'ext/inmemory_kv.c', line 735
static VALUE
rb_kv_empty_p(VALUE self) {
inmemory_kv* kv;
GetKV(self, kv);
return kv->tab.size ? Qfalse : Qtrue;
}
|
#entries ⇒ Object
797 798 799 800 801 802 803 804 805 |
# File 'ext/inmemory_kv.c', line 797
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;
}
|
#first ⇒ Object
675 676 677 678 679 680 681 682 683 684 685 686 687 |
# File 'ext/inmemory_kv.c', line 675
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
622 623 624 625 626 627 628 629 630 631 632 633 |
# File 'ext/inmemory_kv.c', line 622
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
622 623 624 625 626 627 628 629 630 631 632 633 |
# File 'ext/inmemory_kv.c', line 622
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
888 889 890 891 892 893 894 895 |
# File 'ext/inmemory_kv.c', line 888
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;
}
|
#inspect ⇒ Object
873 874 875 876 877 878 879 880 881 882 883 884 885 886 |
# File 'ext/inmemory_kv.c', line 873
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;
}
|
#keys ⇒ Object
777 778 779 780 781 782 783 784 785 |
# File 'ext/inmemory_kv.c', line 777
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;
}
|
#shift ⇒ Object
689 690 691 692 693 694 695 696 697 698 699 700 701 702 |
# File 'ext/inmemory_kv.c', line 689
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);
}
|
#size ⇒ Object
728 729 730 731 732 733 |
# File 'ext/inmemory_kv.c', line 728
static VALUE
rb_kv_size(VALUE self) {
inmemory_kv* kv;
GetKV(self, kv);
return UINT2NUM(kv->tab.size);
}
|
#total_size ⇒ Object
749 750 751 752 753 754 |
# File 'ext/inmemory_kv.c', line 749 static VALUE rb_kv_total_size(VALUE self) { inmemory_kv* kv; GetKV(self, kv); return SIZET2NUM(rb_kv_memsize(kv)); } |
#unshift(vkey, vval) ⇒ Object
704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 |
# File 'ext/inmemory_kv.c', line 704
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);
if (item == NULL) {
rb_raise(rb_eNoMemError, "could not malloc");
}
kv_down(kv, item);
return vval;
}
|
#up(vkey) ⇒ Object
588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 |
# File 'ext/inmemory_kv.c', line 588
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);
}
|
#values ⇒ Object
787 788 789 790 791 792 793 794 795 |
# File 'ext/inmemory_kv.c', line 787
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;
}
|