[Groonga-commit] ranguba/rroonga at c30e4c4 [master] Use grn_column_flags

Back to archive index

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 



More information about the Groonga-commit mailing list
Back to archive index