Class: MTBL::Reader
- Inherits:
-
Object
- Object
- MTBL::Reader
- Defined in:
- ext/mtbl/ruby-mtbl.c
Instance Method Summary collapse
- #get(key) ⇒ Object
- #get_prefix(prefix) ⇒ Object
- #get_range(kstart, kend) ⇒ Object
- #initialize(fname) ⇒ Object constructor
- #iterator ⇒ Object
Constructor Details
#initialize(fname) ⇒ Object
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
# File 'ext/mtbl/ruby-mtbl.c', line 129 static VALUE rbmtbl_reader_initialize(VALUE self, VALUE fname) { rbmtbl_reader_t *reader; Data_Get_Struct(self, rbmtbl_reader_t, reader); if (TYPE(fname) != T_STRING) { rb_raise(rb_eArgError, "File name must be a string"); return Qnil; } reader->r = mtbl_reader_init(StringValueCStr(fname), NULL); if (reader->r == NULL) { rb_raise(rb_eRuntimeError, "Failed to open %s", StringValueCStr(fname)); return (false); } return self; } |
Instance Method Details
#get(key) ⇒ Object
152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
# File 'ext/mtbl/ruby-mtbl.c', line 152 static VALUE rbmtbl_reader_get(VALUE self, VALUE key) { VALUE iter = rb_obj_alloc(rb_cMTBLIterator); rbmtbl_reader_t *reader; rbmtbl_iterator_t *iterator; Data_Get_Struct(self, rbmtbl_reader_t, reader); Data_Get_Struct(iter, rbmtbl_iterator_t, iterator); if (TYPE(key) != T_STRING) { rb_raise(rb_eArgError, "Key must be a string"); return Qnil; } iterator->it = mtbl_source_get(mtbl_reader_source(reader->r), (const uint8_t *) RSTRING_PTR(key), RSTRING_LEN(key)); return iter; } |
#get_prefix(prefix) ⇒ Object
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 |
# File 'ext/mtbl/ruby-mtbl.c', line 169 static VALUE rbmtbl_reader_get_prefix(VALUE self, VALUE prefix) { VALUE iter = rb_obj_alloc(rb_cMTBLIterator); rbmtbl_reader_t *reader; rbmtbl_iterator_t *iterator; Data_Get_Struct(self, rbmtbl_reader_t, reader); Data_Get_Struct(iter, rbmtbl_iterator_t, iterator); if (TYPE(prefix) != T_STRING) { rb_raise(rb_eArgError, "Prefix must be a string"); return Qnil; } iterator->it = mtbl_source_get_prefix(mtbl_reader_source(reader->r), (const uint8_t *) RSTRING_PTR(prefix), RSTRING_LEN(prefix)); return iter; } |
#get_range(kstart, kend) ⇒ Object
186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 |
# File 'ext/mtbl/ruby-mtbl.c', line 186 static VALUE rbmtbl_reader_get_range(VALUE self, VALUE kstart, VALUE kend) { VALUE iter = rb_obj_alloc(rb_cMTBLIterator); rbmtbl_reader_t *reader; rbmtbl_iterator_t *iterator; Data_Get_Struct(self, rbmtbl_reader_t, reader); Data_Get_Struct(iter, rbmtbl_iterator_t, iterator); if (TYPE(kstart) != T_STRING) { rb_raise(rb_eArgError, "Range start must be a string"); return Qnil; } if (TYPE(kend) != T_STRING) { rb_raise(rb_eArgError, "Range stop must be a string"); return Qnil; } iterator->it = mtbl_source_get_range(mtbl_reader_source(reader->r), (const uint8_t *) RSTRING_PTR(kstart), RSTRING_LEN(kstart), (const uint8_t *) RSTRING_PTR(kend), RSTRING_LEN(kend)); return iter; } |
#iterator ⇒ Object
146 147 148 149 150 |
# File 'ext/mtbl/ruby-mtbl.c', line 146 static VALUE rbmtbl_reader_iterator(VALUE self) { VALUE argv[1]; argv[0] = self; return rb_class_new_instance(1, argv, rb_cMTBLIterator); } |