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
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;
}
|
#clear ⇒ Object
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; } |
#count ⇒ Object
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_size ⇒ Object
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);
}
|
#each ⇒ Object
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_key ⇒ Object
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_pair ⇒ Object
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_value ⇒ Object
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
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;
}
|
#entries ⇒ Object
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;
}
|
#first ⇒ Object
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
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
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;
}
|
#inspect ⇒ Object
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;
}
|
#keys ⇒ Object
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;
}
|
#shift ⇒ Object
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);
}
|
#size ⇒ Object
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_size ⇒ Object
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);
}
|
#values ⇒ Object
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;
}
|