Class: Groonga::FixSizeColumn

Inherits:
Column
  • Object
show all
Defined in:
ext/rb-grn-fix-size-column.c,
ext/rb-grn-fix-size-column.c

Overview

固定長データ用のカラム。

Instance Method Summary collapse

Methods inherited from Column

#clear_lock, #local_name, #lock, #locked?, #select, #table, #unlock

Instance Method Details

#[](id) ⇒ Object

_column_の_id_に対応する値を返す。



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'ext/rb-grn-fix-size-column.c', line 37

VALUE
rb_grn_fix_size_column_array_reference (VALUE self, VALUE rb_id)
{
    grn_id id;
    grn_ctx *context;
    grn_obj *fix_size_column;
    grn_obj *range;
    grn_obj *value;

    rb_grn_column_deconstruct(SELF(self), &fix_size_column, &context,
			      NULL, NULL,
			      &value, NULL, &range);

    id = NUM2UINT(rb_id);
    GRN_BULK_REWIND(value);
    grn_obj_get_value(context, fix_size_column, id, value);
    rb_grn_context_check(context, self);

    return GRNVALUE2RVAL(context, value, range, self);
}

#[]=(id) ⇒ Object

_column_の_id_に対応する値を設定する。



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'ext/rb-grn-fix-size-column.c', line 64

static VALUE
rb_grn_fix_size_column_array_set (VALUE self, VALUE rb_id, VALUE rb_value)
{
    grn_ctx *context = NULL;
    grn_obj *column;
    grn_id domain_id, range_id;
    grn_obj *domain, *range;
    grn_obj *value;
    grn_rc rc;
    grn_id id;

    rb_grn_column_deconstruct(SELF(self), &column, &context,
			      &domain_id, &domain,
			      &value, &range_id, &range);

    id = NUM2UINT(rb_id);
    RVAL2GRNBULK(rb_value, context, value);
    if ((value->header.domain == GRN_DB_INT32 ||
	 value->header.domain == GRN_DB_UINT32) &&
	(GRN_TABLE_HASH_KEY <= range->header.type &&
	 range->header.type <= GRN_TABLE_VIEW)) {
	value->header.domain = range_id;
    }

    rc = grn_obj_set_value(context, column, id, value, GRN_OBJ_SET);
    rb_grn_context_check(context, self);
    rb_grn_rc_check(rc, self);

    return Qnil;
}

#decrement!(id, delta = nil) ⇒ Object

column_の_id_に対応する値を_delta_だけ減少する。_delta が+nil+の場合は1減少する。



145
146
147
148
149
# File 'ext/rb-grn-fix-size-column.c', line 145

static VALUE
rb_grn_fix_size_column_decrement (int argc, VALUE *argv, VALUE self)
{
    return rb_grn_fix_size_column_integer_set(argc, argv, self, GRN_OBJ_DECR);
}

#increment!(id, delta = nil) ⇒ Object

column_の_id_に対応する値を_delta_だけ増加する。_delta が+nil+の場合は1増加する。



132
133
134
135
136
# File 'ext/rb-grn-fix-size-column.c', line 132

static VALUE
rb_grn_fix_size_column_increment (int argc, VALUE *argv, VALUE self)
{
    return rb_grn_fix_size_column_integer_set(argc, argv, self, GRN_OBJ_INCR);
}