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

columnidに対応する値を返す。



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

columnidに対応する値を設定する。



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

columnidに対応する値をdeltaだけ減少する。deltanilの場合は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

columnidに対応する値をdeltaだけ増加する。deltanilの場合は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);
}