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