[Groonga-commit] groonga/grnxx at 712afc3 [master] Gnx: use GRN_BULK_*().

Back to archive index

susumu.yata null+****@clear*****
Fri May 1 15:46:06 JST 2015


susumu.yata	2015-05-01 15:46:06 +0900 (Fri, 01 May 2015)

  New Revision: 712afc362a4613fbb9b6ebbd6ae22312ff9016bb
  https://github.com/groonga/grnxx/commit/712afc362a4613fbb9b6ebbd6ae22312ff9016bb

  Message:
    Gnx: use GRN_BULK_*().

  Modified files:
    go3/gnx/grn_cgo.c

  Modified: go3/gnx/grn_cgo.c (+9 -15)
===================================================================
--- go3/gnx/grn_cgo.c    2015-05-01 15:41:30 +0900 (8878586)
+++ go3/gnx/grn_cgo.c    2015-05-01 15:46:06 +0900 (9fc2526)
@@ -382,12 +382,10 @@ grn_bool grn_cgo_column_get_bool_vector(grn_ctx *ctx, grn_obj *column,
   grn_obj value_obj;
   GRN_BOOL_INIT(&value_obj, GRN_OBJ_VECTOR);
   grn_obj_get_value(ctx, column, id, &value_obj);
-  size_t size = grn_uvector_size(ctx, &value_obj);
+  size_t size_in_bytes = GRN_BULK_VSIZE(&value_obj);
+  size_t size = size_in_bytes / sizeof(grn_bool);
   if (size <= value->size) {
-    size_t i;
-    for (i = 0; i < size; i++) {
-      ((grn_bool *)value->ptr)[i] = GRN_BOOL_VALUE_AT(&value_obj, i);
-    }
+    memcpy(value->ptr, GRN_BULK_HEAD(&value_obj), size_in_bytes);
   }
   value->size = size;
   GRN_OBJ_FIN(ctx, &value_obj);
@@ -399,12 +397,10 @@ grn_bool grn_cgo_column_get_int_vector(grn_ctx *ctx, grn_obj *column,
   grn_obj value_obj;
   GRN_INT64_INIT(&value_obj, GRN_OBJ_VECTOR);
   grn_obj_get_value(ctx, column, id, &value_obj);
-  size_t size = grn_uvector_size(ctx, &value_obj);
+  size_t size_in_bytes = GRN_BULK_VSIZE(&value_obj);
+  size_t size = size_in_bytes / sizeof(int64_t);
   if (size <= value->size) {
-    size_t i;
-    for (i = 0; i < size; i++) {
-      ((int64_t *)value->ptr)[i] = GRN_INT64_VALUE_AT(&value_obj, i);
-    }
+    memcpy(value->ptr, GRN_BULK_HEAD(&value_obj), size_in_bytes);
   }
   value->size = size;
   GRN_OBJ_FIN(ctx, &value_obj);
@@ -416,12 +412,10 @@ grn_bool grn_cgo_column_get_float_vector(grn_ctx *ctx, grn_obj *column,
   grn_obj value_obj;
   GRN_FLOAT_INIT(&value_obj, GRN_OBJ_VECTOR);
   grn_obj_get_value(ctx, column, id, &value_obj);
-  size_t size = grn_uvector_size(ctx, &value_obj);
+  size_t size_in_bytes = GRN_BULK_VSIZE(&value_obj);
+  size_t size = size_in_bytes / sizeof(double);
   if (size <= value->size) {
-    size_t i;
-    for (i = 0; i < size; i++) {
-      ((double *)value->ptr)[i] = GRN_FLOAT_VALUE_AT(&value_obj, i);
-    }
+    memcpy(value->ptr, GRN_BULK_HEAD(&value_obj), size_in_bytes);
   }
   value->size = size;
   GRN_OBJ_FIN(ctx, &value_obj);
-------------- next part --------------
HTML����������������������������...
Download 



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