Class: MTBL::Iterator
- Inherits:
-
Object
- Object
- MTBL::Iterator
- Defined in:
- ext/mtbl/ruby-mtbl.c
Instance Method Summary collapse
Constructor Details
#initialize(c_reader) ⇒ Object
74 75 76 77 78 79 80 81 82 |
# File 'ext/mtbl/ruby-mtbl.c', line 74
static VALUE rbmtbl_iterator_initialize(VALUE self, VALUE c_reader) {
rbmtbl_iterator_t *iterator;
rbmtbl_reader_t *reader;
Data_Get_Struct(self, rbmtbl_iterator_t, iterator);
// TODO: Verify that c_reader is a MTBL::Reader
Data_Get_Struct(c_reader, rbmtbl_reader_t, reader);
iterator->it = mtbl_source_iter(mtbl_reader_source(reader->r));
return self;
}
|
Instance Method Details
#each ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'ext/mtbl/ruby-mtbl.c', line 84
static VALUE rbmtbl_iterator_next(VALUE self) {
const uint8_t *key, *val;
size_t len_key, len_val;
VALUE r_key;
VALUE r_val;
VALUE r_arr;
rbmtbl_iterator_t *iterator;
Data_Get_Struct(self, rbmtbl_iterator_t, iterator);
while (mtbl_iter_next(iterator->it, &key, &len_key, &val, &len_val)) {
r_key = rb_usascii_str_new((const char *)key, len_key);
r_val = rb_usascii_str_new((const char *)val, len_val);
r_arr = rb_ary_new2(2);
rb_ary_push(r_arr, r_key);
rb_ary_push(r_arr, r_val);
if(rb_block_given_p()) {
rb_yield(r_arr);
} else {
return r_arr;
}
}
return Qnil;
}
|
#next ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'ext/mtbl/ruby-mtbl.c', line 84
static VALUE rbmtbl_iterator_next(VALUE self) {
const uint8_t *key, *val;
size_t len_key, len_val;
VALUE r_key;
VALUE r_val;
VALUE r_arr;
rbmtbl_iterator_t *iterator;
Data_Get_Struct(self, rbmtbl_iterator_t, iterator);
while (mtbl_iter_next(iterator->it, &key, &len_key, &val, &len_val)) {
r_key = rb_usascii_str_new((const char *)key, len_key);
r_val = rb_usascii_str_new((const char *)val, len_val);
r_arr = rb_ary_new2(2);
rb_ary_push(r_arr, r_key);
rb_ary_push(r_arr, r_val);
if(rb_block_given_p()) {
rb_yield(r_arr);
} else {
return r_arr;
}
}
return Qnil;
}
|