Class: Groonga::TableCursor

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
ext/groonga/rb-grn-table-cursor.c,
ext/groonga/rb-grn-table-cursor.c

Overview

テーブルに登録されているレコードを順番に取り出すための オブジェクト。 Groonga::Table#open_cursor で生成できる。

Defined Under Namespace

Modules: KeySupport

Instance Method Summary collapse

Instance Method Details

#closeObject

object が使用しているリソースを開放する。これ以降 object を 使うことはできない。



611
612
613
614
615
616
617
618
619
620
# File 'ext/groonga/rb-grn-object.c', line 611

VALUE
rb_grn_object_close (VALUE self)
{
    RbGrnObject *rb_grn_object;

    rb_grn_object = SELF(self);
    rb_grn_object_close_raw(rb_grn_object);

    return Qnil;
}

#closed?Boolean

object が開放済みの場合は +true+ を返し、そうでない場合は +false+ を返す。

Returns:

  • (Boolean)


654
655
656
657
658
659
660
661
662
663
664
665
# File 'ext/groonga/rb-grn-object.c', line 654

VALUE
rb_grn_object_closed_p (VALUE self)
{
    RbGrnObject *rb_grn_object;

    rb_grn_object = SELF(self);
    if (rb_grn_object->context && rb_grn_object->object) {
        return Qfalse;
    } else {
        return Qtrue;
    }
}

#deleteObject

カレントレコードを削除する。



190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
# File 'ext/groonga/rb-grn-table-cursor.c', line 190

static VALUE
rb_grn_table_cursor_delete (VALUE self)
{
    grn_ctx *context;
    grn_table_cursor *cursor;

    rb_grn_table_cursor_deconstruct(SELF(self), &cursor, &context,
                                    NULL, NULL, NULL, NULL);
    if (context && cursor) {
        grn_rc rc;

        rc = grn_table_cursor_delete(context, cursor);
        rb_grn_rc_check(rc, self);
    }

    return Qnil;
}

#each {|record| ... } ⇒ Object

カーソルの範囲内にあるレコードを順番にブロックに渡す。

Yields:

  • (record)


241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
# File 'ext/groonga/rb-grn-table-cursor.c', line 241

static VALUE
rb_grn_table_cursor_each (VALUE self)
{
    grn_id record_id;
    grn_ctx *context;
    grn_table_cursor *cursor;

    RETURN_ENUMERATOR(self, 0, NULL);

    rb_grn_table_cursor_deconstruct(SELF(self), &cursor, &context,
                                    NULL, NULL, NULL, NULL);

    if (context && cursor) {
        while ((record_id = grn_table_cursor_next(context, cursor))) {
            rb_yield(rb_grn_record_new(rb_iv_get(self, "@table"),
                                       record_id, Qnil));
        }
    }

    return Qnil;
}

#nextGroonga::Record

カレントレコードを一件進めてそのレコードを返す。

Returns:



214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
# File 'ext/groonga/rb-grn-table-cursor.c', line 214

static VALUE
rb_grn_table_cursor_next (VALUE self)
{
    VALUE rb_record = Qnil;
    grn_ctx *context;
    grn_table_cursor *cursor;

    rb_grn_table_cursor_deconstruct(SELF(self), &cursor, &context,
                                    NULL, NULL, NULL, NULL);
    if (context && cursor) {
        grn_id record_id;

        record_id = grn_table_cursor_next(context, cursor);
        if (record_id != GRN_ID_NIL) /* FIXME: use grn_table_cursor_table */
            rb_record = rb_grn_record_new(rb_iv_get(self, "@table"),
                                          record_id, Qnil);
    }

    return rb_record;
}

#valueString

カレントレコードの値を返す。

Returns カレントレコードの値

Returns:

  • (String)

    カレントレコードの値



138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# File 'ext/groonga/rb-grn-table-cursor.c', line 138

static VALUE
rb_grn_table_cursor_get_value (VALUE self)
{
    grn_ctx *context;
    grn_table_cursor *cursor;
    VALUE rb_value = Qnil;

    rb_grn_table_cursor_deconstruct(SELF(self), &cursor, &context,
                                    NULL, NULL, NULL, NULL);
    if (context && cursor) {
        int n;
        void *value;

        n = grn_table_cursor_get_value(context, cursor, &value);
        rb_value = rb_str_new(value, n);
    }

    return rb_value;
}

#value=(value) ⇒ Object

カレントレコードの値を設定する。既存の値は上書きされる。

Parameters:

  • value (String)

    カレントレコードに設定する値



164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
# File 'ext/groonga/rb-grn-table-cursor.c', line 164

static VALUE
rb_grn_table_cursor_set_value (VALUE self, VALUE value)
{
    grn_ctx *context;
    grn_table_cursor *cursor;

    rb_grn_table_cursor_deconstruct(SELF(self), &cursor, &context,
                                    NULL, NULL, NULL, NULL);
    if (context && cursor) {
        grn_rc rc;

        rc = grn_table_cursor_set_value(context,
                                        cursor,
                                        StringValuePtr(value),
                                        GRN_OBJ_SET);
        rb_grn_rc_check(rc, self);
    }

    return Qnil;
}