Kouhei Sutou
null+****@clear*****
Sat Aug 13 12:08:21 JST 2016
Kouhei Sutou 2016-08-13 12:08:21 +0900 (Sat, 13 Aug 2016) New Revision: c30e4c41e057f2427c002b0e8877d153cef0981b https://github.com/ranguba/rroonga/commit/c30e4c41e057f2427c002b0e8877d153cef0981b Message: Use grn_column_flags Modified files: ext/groonga/rb-grn-column.c ext/groonga/rb-grn-index-column.c ext/groonga/rb-grn-object.c ext/groonga/rb-grn-table.c ext/groonga/rb-grn-variable-size-column.c Modified: ext/groonga/rb-grn-column.c (+23 -17) =================================================================== --- ext/groonga/rb-grn-column.c 2016-08-13 11:43:44 +0900 (6252bf4) +++ ext/groonga/rb-grn-column.c 2016-08-13 12:08:21 +0900 (7badfaf) @@ -72,13 +72,15 @@ rb_grn_column_bind (RbGrnColumn *rb_column, grn_ctx *context, grn_obj *column) { RbGrnObject *rb_grn_object; + grn_column_flags flags; int column_type; unsigned char value_type; rb_grn_object = RB_GRN_OBJECT(rb_column); rb_grn_named_object_bind(RB_GRN_NAMED_OBJECT(rb_column), context, column); - column_type = (column->header.flags & GRN_OBJ_COLUMN_TYPE_MASK); + flags = grn_column_get_flags(context, column); + column_type = (flags & GRN_OBJ_COLUMN_TYPE_MASK); if (column_type == GRN_OBJ_COLUMN_VECTOR) { switch (rb_grn_object->range->header.type) { case GRN_TABLE_HASH_KEY: @@ -644,18 +646,20 @@ rb_grn_column_vector_p (VALUE self) { grn_ctx *context; grn_obj *column; + grn_column_flags flags; + grn_column_flags column_type; rb_grn_column_deconstruct(SELF(self), &column, &context, NULL, NULL, NULL, NULL, NULL); - if (column->header.type == GRN_COLUMN_VAR_SIZE && - ((column->header.flags & GRN_OBJ_COLUMN_TYPE_MASK) == - GRN_OBJ_COLUMN_VECTOR)) { - return Qtrue; - } else { + if (column->header.type != GRN_COLUMN_VAR_SIZE) { return Qfalse; } + + flags = grn_column_get_flags(context, column); + column_type = (flags & GRN_OBJ_COLUMN_TYPE_MASK); + return CBOOL2RVAL(column_type == GRN_OBJ_COLUMN_VECTOR); } /* @@ -671,22 +675,21 @@ rb_grn_column_scalar_p (VALUE self) { grn_ctx *context; grn_obj *column; + grn_column_flags flags; + grn_column_flags column_type; rb_grn_column_deconstruct(SELF(self), &column, &context, NULL, NULL, NULL, NULL, NULL); switch (column->header.type) { - case GRN_COLUMN_FIX_SIZE: + case GRN_COLUMN_FIX_SIZE: return Qtrue; - case GRN_COLUMN_VAR_SIZE: - if ((column->header.flags & GRN_OBJ_COLUMN_TYPE_MASK) == - GRN_OBJ_COLUMN_SCALAR) { - return Qtrue; - } else { - return Qfalse; - } - default: + case GRN_COLUMN_VAR_SIZE: + flags = grn_column_get_flags(context, column); + column_type = (flags & GRN_OBJ_COLUMN_TYPE_MASK); + return CBOOL2RVAL(column_type == GRN_OBJ_COLUMN_SCALAR); + default: return Qfalse; } } @@ -701,12 +704,15 @@ static VALUE rb_grn_column_with_weight_p(VALUE self) { grn_obj *column; + grn_ctx *context; + grn_column_flags flags; - rb_grn_column_deconstruct(SELF(self), &column, NULL, + rb_grn_column_deconstruct(SELF(self), &column, &context, NULL, NULL, NULL, NULL, NULL); - return CBOOL2RVAL(column->header.flags & GRN_OBJ_WITH_WEIGHT); + flags = grn_column_get_flags(context, column); + return CBOOL2RVAL(flags & GRN_OBJ_WITH_WEIGHT); } /* Modified: ext/groonga/rb-grn-index-column.c (+21 -9) =================================================================== --- ext/groonga/rb-grn-index-column.c 2016-08-13 11:43:44 +0900 (9a843b3) +++ ext/groonga/rb-grn-index-column.c 2016-08-13 12:08:21 +0900 (437abaa) @@ -829,13 +829,16 @@ static VALUE rb_grn_index_column_with_section_p (VALUE self) { grn_obj *column; + grn_ctx *context; + grn_column_flags flags; - rb_grn_index_column_deconstruct(SELF(self), &column, NULL, + rb_grn_index_column_deconstruct(SELF(self), &column, &context, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); - return CBOOL2RVAL(column->header.flags & GRN_OBJ_WITH_SECTION); + flags = grn_column_get_flags(context, column); + return CBOOL2RVAL(flags & GRN_OBJ_WITH_SECTION); } /* @@ -847,13 +850,16 @@ static VALUE rb_grn_index_column_with_weight_p (VALUE self) { grn_obj *column; + grn_ctx *context; + grn_column_flags flags; - rb_grn_index_column_deconstruct(SELF(self), &column, NULL, + rb_grn_index_column_deconstruct(SELF(self), &column, &context, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); - return CBOOL2RVAL(column->header.flags & GRN_OBJ_WITH_WEIGHT); + flags = grn_column_get_flags(context, column); + return CBOOL2RVAL(flags & GRN_OBJ_WITH_WEIGHT); } /* @@ -865,13 +871,16 @@ static VALUE rb_grn_index_column_with_position_p (VALUE self) { grn_obj *column; + grn_ctx *context; + grn_column_flags flags; - rb_grn_index_column_deconstruct(SELF(self), &column, NULL, + rb_grn_index_column_deconstruct(SELF(self), &column, &context, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); - return CBOOL2RVAL(column->header.flags & GRN_OBJ_WITH_POSITION); + flags = grn_column_get_flags(context, column); + return CBOOL2RVAL(flags & GRN_OBJ_WITH_POSITION); } /* @@ -898,6 +907,7 @@ rb_grn_index_column_open_cursor (int argc, VALUE *argv, VALUE self) { grn_ctx *context; grn_obj *column; + grn_column_flags column_flags; grn_obj *range_object; grn_table_cursor *table_cursor; grn_id rid_min = GRN_ID_NIL; @@ -928,20 +938,22 @@ rb_grn_index_column_open_cursor (int argc, VALUE *argv, VALUE self) rb_table = GRNOBJECT2RVAL(Qnil, context, range_object, GRN_FALSE); rb_lexicon = rb_iv_get(rb_table_cursor, "@table"); + column_flags = grn_column_get_flags(context, column); + if (NIL_P(rb_with_section)) { - flags |= column->header.flags & GRN_OBJ_WITH_SECTION; + flags |= column_flags & GRN_OBJ_WITH_SECTION; } else if (RVAL2CBOOL(rb_with_section)) { flags |= GRN_OBJ_WITH_SECTION; } if (NIL_P(rb_with_weight)) { - flags |= column->header.flags & GRN_OBJ_WITH_WEIGHT; + flags |= column_flags & GRN_OBJ_WITH_WEIGHT; } else if (RVAL2CBOOL(rb_with_weight)) { flags |= GRN_OBJ_WITH_WEIGHT; } if (NIL_P(rb_with_position)) { - flags |= column->header.flags & GRN_OBJ_WITH_POSITION; + flags |= column_flags & GRN_OBJ_WITH_POSITION; } else if (RVAL2CBOOL(rb_with_position)) { flags |= GRN_OBJ_WITH_POSITION; } Modified: ext/groonga/rb-grn-object.c (+69 -40) =================================================================== --- ext/groonga/rb-grn-object.c 2016-08-13 11:43:44 +0900 (1a8de82) +++ ext/groonga/rb-grn-object.c 2016-08-13 12:08:21 +0900 (931fb32) @@ -830,11 +830,21 @@ rb_grn_object_inspect_content_flags_with_label (VALUE inspected, grn_obj *object) { grn_obj_flags flags; + grn_column_flags column_flags = 0; VALUE inspected_flags; rb_str_cat2(inspected, "flags: "); flags = object->header.flags; + switch (object->header.type) { + case GRN_COLUMN_FIX_SIZE: + case GRN_COLUMN_VAR_SIZE: + case GRN_COLUMN_INDEX: + column_flags = grn_column_get_flags(context, object); + break; + default: + break; + } inspected_flags = rb_ary_new(); @@ -891,9 +901,9 @@ rb_grn_object_inspect_content_flags_with_label (VALUE inspected, switch (object->header.type) { case GRN_COLUMN_FIX_SIZE: case GRN_COLUMN_VAR_SIZE: - if (flags & GRN_OBJ_COLUMN_SCALAR) { + if (column_flags & GRN_OBJ_COLUMN_SCALAR) { rb_ary_push(inspected_flags, rb_str_new_cstr("COLUMN_SCALAR")); - } else if (flags & GRN_OBJ_COLUMN_VECTOR) { + } else if (column_flags & GRN_OBJ_COLUMN_VECTOR) { rb_ary_push(inspected_flags, rb_str_new_cstr("COLUMN_VECTOR")); } break; @@ -904,44 +914,59 @@ rb_grn_object_inspect_content_flags_with_label (VALUE inspected, switch (object->header.type) { case GRN_COLUMN_FIX_SIZE: case GRN_COLUMN_VAR_SIZE: - if (flags & GRN_OBJ_COMPRESS_ZLIB) { + if (column_flags & GRN_OBJ_COMPRESS_ZLIB) { rb_ary_push(inspected_flags, rb_str_new_cstr("COMPRESS_ZLIB")); - } else if (flags & GRN_OBJ_COMPRESS_LZ4) { + } else if (column_flags & GRN_OBJ_COMPRESS_LZ4) { rb_ary_push(inspected_flags, rb_str_new_cstr("COMPRESS_LZ4")); } break; case GRN_COLUMN_INDEX: - if (flags & GRN_OBJ_WITH_SECTION) + if (column_flags & GRN_OBJ_WITH_SECTION) rb_ary_push(inspected_flags, rb_str_new_cstr("WITH_SECTION")); - if (flags & GRN_OBJ_WITH_WEIGHT) + if (column_flags & GRN_OBJ_WITH_WEIGHT) rb_ary_push(inspected_flags, rb_str_new_cstr("WITH_WEIGHT")); - if (flags & GRN_OBJ_WITH_POSITION) + if (column_flags & GRN_OBJ_WITH_POSITION) rb_ary_push(inspected_flags, rb_str_new_cstr("WITH_POSITION")); break; default: break; } - if (flags & GRN_OBJ_RING_BUFFER) - rb_ary_push(inspected_flags, rb_str_new_cstr("RING_BUFFER")); - - if (flags & GRN_OBJ_WITH_SUBREC) { - rb_ary_push(inspected_flags, rb_str_new_cstr("WITH_SUBREC")); - - if (flags & GRN_OBJ_UNIT_DOCUMENT_SECTION) - rb_ary_push(inspected_flags, rb_str_new_cstr("UNIT_DOCUMENT_SECTION")); - if (flags & GRN_OBJ_UNIT_DOCUMENT_POSITION) - rb_ary_push(inspected_flags, rb_str_new_cstr("UNIT_DOCUMENT_POSITION")); - - if (flags & GRN_OBJ_UNIT_SECTION_POSITION) - rb_ary_push(inspected_flags, rb_str_new_cstr("UNIT_SECTION_POSITION")); - - if (flags & GRN_OBJ_UNIT_USERDEF_DOCUMENT) - rb_ary_push(inspected_flags, rb_str_new_cstr("UNIT_USERDEF_DOCUMENT")); - if (flags & GRN_OBJ_UNIT_USERDEF_SECTION) - rb_ary_push(inspected_flags, rb_str_new_cstr("UNIT_USERDEF_SECTION")); - if (flags & GRN_OBJ_UNIT_USERDEF_POSITION) - rb_ary_push(inspected_flags, rb_str_new_cstr("UNIT_USERDEF_POSITION")); + switch (object->header.type) { + case GRN_TABLE_NO_KEY: + case GRN_TABLE_HASH_KEY: + case GRN_TABLE_PAT_KEY: + case GRN_TABLE_DAT_KEY: + if (flags & GRN_OBJ_RING_BUFFER) + rb_ary_push(inspected_flags, rb_str_new_cstr("RING_BUFFER")); + + if (flags & GRN_OBJ_WITH_SUBREC) { + rb_ary_push(inspected_flags, rb_str_new_cstr("WITH_SUBREC")); + + if (flags & GRN_OBJ_UNIT_DOCUMENT_SECTION) + rb_ary_push(inspected_flags, + rb_str_new_cstr("UNIT_DOCUMENT_SECTION")); + if (flags & GRN_OBJ_UNIT_DOCUMENT_POSITION) + rb_ary_push(inspected_flags, + rb_str_new_cstr("UNIT_DOCUMENT_POSITION")); + + if (flags & GRN_OBJ_UNIT_SECTION_POSITION) + rb_ary_push(inspected_flags, + rb_str_new_cstr("UNIT_SECTION_POSITION")); + + if (flags & GRN_OBJ_UNIT_USERDEF_DOCUMENT) + rb_ary_push(inspected_flags, + rb_str_new_cstr("UNIT_USERDEF_DOCUMENT")); + if (flags & GRN_OBJ_UNIT_USERDEF_SECTION) + rb_ary_push(inspected_flags, + rb_str_new_cstr("UNIT_USERDEF_SECTION")); + if (flags & GRN_OBJ_UNIT_USERDEF_POSITION) + rb_ary_push(inspected_flags, + rb_str_new_cstr("UNIT_USERDEF_POSITION")); + } + break; + default: + break; } rb_str_cat2(inspected, "<"); @@ -1281,19 +1306,23 @@ rb_grn_object_array_reference (VALUE self, VALUE rb_id) break; case GRN_COLUMN_VAR_SIZE: case GRN_COLUMN_FIX_SIZE: - switch (object->header.flags & GRN_OBJ_COLUMN_TYPE_MASK) { - case GRN_OBJ_COLUMN_VECTOR: - GRN_OBJ_INIT(&value, GRN_VECTOR, 0, range_id); - break; - case GRN_OBJ_COLUMN_SCALAR: - GRN_OBJ_INIT(&value, GRN_BULK, 0, range_id); - break; - default: - rb_raise(rb_eGrnError, "unsupported column type: %u: %s", - range_type, rb_grn_inspect(self)); - break; - } - break; + { + grn_column_flags column_flags; + column_flags = grn_column_get_flags(context, object); + switch (column_flags & GRN_OBJ_COLUMN_TYPE_MASK) { + case GRN_OBJ_COLUMN_VECTOR: + GRN_OBJ_INIT(&value, GRN_VECTOR, 0, range_id); + break; + case GRN_OBJ_COLUMN_SCALAR: + GRN_OBJ_INIT(&value, GRN_BULK, 0, range_id); + break; + default: + rb_raise(rb_eGrnError, "unsupported column type: %u: %s", + range_type, rb_grn_inspect(self)); + break; + } + } + break; case GRN_COLUMN_INDEX: GRN_UINT32_INIT(&value, 0); break; Modified: ext/groonga/rb-grn-table.c (+2 -2) =================================================================== --- ext/groonga/rb-grn-table.c 2016-08-13 11:43:44 +0900 (40a5de6) +++ ext/groonga/rb-grn-table.c 2016-08-13 12:08:21 +0900 (0082f25) @@ -242,7 +242,7 @@ rb_grn_table_define_column (int argc, VALUE *argv, VALUE self) grn_obj *value_type, *column; char *name = NULL, *path = NULL; unsigned name_size = 0; - grn_obj_flags flags = 0; + grn_column_flags flags = 0; VALUE rb_name, rb_value_type; VALUE options, rb_path, rb_persistent, rb_compress, rb_type, rb_with_weight; VALUE columns; @@ -372,7 +372,7 @@ rb_grn_table_define_index_column (int argc, VALUE *argv, VALUE self) grn_obj *value_type, *column; char *name = NULL, *path = NULL; unsigned name_size = 0; - grn_obj_flags flags = GRN_OBJ_COLUMN_INDEX; + grn_column_flags flags = GRN_OBJ_COLUMN_INDEX; VALUE rb_name, rb_value_type; VALUE options, rb_path, rb_persistent; VALUE rb_with_section, rb_with_weight, rb_with_position; Modified: ext/groonga/rb-grn-variable-size-column.c (+13 -7) =================================================================== --- ext/groonga/rb-grn-variable-size-column.c 2016-08-13 11:43:44 +0900 (a6a01dc) +++ ext/groonga/rb-grn-variable-size-column.c 2016-08-13 12:08:21 +0900 (2d7ea6b) @@ -28,14 +28,16 @@ rb_grn_variable_size_column_bind (RbGrnVariableSizeColumn *rb_column, grn_ctx *context, grn_obj *column) { RbGrnObject *rb_grn_object; - int column_type; + grn_column_flags flags; + grn_column_flags column_type; unsigned char value_type; rb_grn_object = RB_GRN_OBJECT(rb_column); rb_grn_column_bind(RB_GRN_COLUMN(rb_column), context, column); rb_column->element_value = NULL; - column_type = (column->header.flags & GRN_OBJ_COLUMN_TYPE_MASK); + flags = grn_column_get_flags(context, column); + column_type = (flags & GRN_OBJ_COLUMN_TYPE_MASK); if (column_type != GRN_OBJ_COLUMN_VECTOR) { return; } @@ -51,7 +53,7 @@ rb_grn_variable_size_column_bind (RbGrnVariableSizeColumn *rb_column, value_type = GRN_VECTOR; break; } - if (column->header.flags & GRN_OBJ_WITH_WEIGHT) { + if (flags & GRN_OBJ_WITH_WEIGHT) { rb_column->element_value = grn_obj_open(context, value_type, 0, rb_grn_object->range_id); } @@ -161,6 +163,7 @@ rb_grn_variable_size_column_array_reference (VALUE self, VALUE rb_id) { grn_ctx *context = NULL; grn_obj *column, *range; + grn_column_flags flags; grn_id id; grn_obj *value; VALUE rb_value; @@ -171,7 +174,8 @@ rb_grn_variable_size_column_array_reference (VALUE self, VALUE rb_id) NULL, NULL, &value, NULL, NULL, &range); - if (!(column->header.flags & GRN_OBJ_WITH_WEIGHT)) { + flags = grn_column_get_flags(context, column); + if (!(flags & GRN_OBJ_WITH_WEIGHT)) { return rb_call_super(1, &rb_id); } @@ -373,6 +377,7 @@ rb_grn_variable_size_column_array_set (VALUE self, VALUE rb_id, VALUE rb_value) { grn_ctx *context = NULL; grn_obj *column, *range; + grn_column_flags column_flags; grn_rc rc; grn_id id; grn_obj *value, *element_value; @@ -382,7 +387,8 @@ rb_grn_variable_size_column_array_set (VALUE self, VALUE rb_id, VALUE rb_value) NULL, NULL, &value, &element_value, NULL, &range); - if (!(column->header.flags & GRN_OBJ_WITH_WEIGHT)) { + column_flags = grn_column_get_flags(context, column); + if (!(column_flags & GRN_OBJ_WITH_WEIGHT)) { VALUE args[2]; args[0] = rb_id; args[1] = rb_value; @@ -469,7 +475,7 @@ rb_grn_variable_size_column_compressed_p (int argc, VALUE *argv, VALUE self) RbGrnVariableSizeColumn *rb_grn_column; grn_ctx *context = NULL; grn_obj *column; - grn_obj_flags flags; + grn_column_flags flags; VALUE type; grn_bool compressed_p = GRN_FALSE; grn_bool accept_any_type = GRN_FALSE; @@ -500,7 +506,7 @@ rb_grn_variable_size_column_compressed_p (int argc, VALUE *argv, VALUE self) NULL, NULL, NULL, NULL); - flags = column->header.flags; + flags = grn_column_get_flags(context, column); switch (flags & GRN_OBJ_COMPRESS_MASK) { case GRN_OBJ_COMPRESS_ZLIB: if (accept_any_type || need_zlib_check) { -------------- next part -------------- HTML����������������������������...Download