[Groonga-commit] groonga/grngo at a8399a8 [master] Support setting integer values other than Int64.

Back to archive index

susumu.yata null+****@clear*****
Mon Jun 22 15:44:05 JST 2015


susumu.yata	2015-06-22 15:44:05 +0900 (Mon, 22 Jun 2015)

  New Revision: a8399a88fea0a86e19b1ef644210e04e54713a39
  https://github.com/groonga/grngo/commit/a8399a88fea0a86e19b1ef644210e04e54713a39

  Message:
    Support setting integer values other than Int64.
    
    GitHub: #5

  Modified files:
    grngo.c
    grngo.go
    grngo.h

  Modified: grngo.c (+72 -2)
===================================================================
--- grngo.c    2015-06-22 15:17:58 +0900 (626596c)
+++ grngo.c    2015-06-22 15:44:05 +0900 (fd90338)
@@ -246,8 +246,38 @@ grn_bool grngo_column_set_bool(grn_ctx *ctx, grn_obj *column,
   return rc == GRN_SUCCESS;
 }
 
-grn_bool grngo_column_set_int(grn_ctx *ctx, grn_obj *column,
-                              grn_id id, int64_t value) {
+grn_bool grngo_column_set_int8(grn_ctx *ctx, grn_obj *column,
+                               grn_id id, int8_t value) {
+  grn_obj obj;
+  GRN_INT8_INIT(&obj, 0);
+  GRN_INT8_SET(ctx, &obj, value);
+  grn_rc rc = grn_obj_set_value(ctx, column, id, &obj, GRN_OBJ_SET);
+  GRN_OBJ_FIN(ctx, &obj);
+  return rc == GRN_SUCCESS;
+}
+
+grn_bool grngo_column_set_int16(grn_ctx *ctx, grn_obj *column,
+                                grn_id id, int16_t value) {
+  grn_obj obj;
+  GRN_INT16_INIT(&obj, 0);
+  GRN_INT16_SET(ctx, &obj, value);
+  grn_rc rc = grn_obj_set_value(ctx, column, id, &obj, GRN_OBJ_SET);
+  GRN_OBJ_FIN(ctx, &obj);
+  return rc == GRN_SUCCESS;
+}
+
+grn_bool grngo_column_set_int32(grn_ctx *ctx, grn_obj *column,
+                                grn_id id, int32_t value) {
+  grn_obj obj;
+  GRN_INT32_INIT(&obj, 0);
+  GRN_INT32_SET(ctx, &obj, value);
+  grn_rc rc = grn_obj_set_value(ctx, column, id, &obj, GRN_OBJ_SET);
+  GRN_OBJ_FIN(ctx, &obj);
+  return rc == GRN_SUCCESS;
+}
+
+grn_bool grngo_column_set_int64(grn_ctx *ctx, grn_obj *column,
+                                grn_id id, int64_t value) {
   grn_obj obj;
   GRN_INT64_INIT(&obj, 0);
   GRN_INT64_SET(ctx, &obj, value);
@@ -256,6 +286,46 @@ grn_bool grngo_column_set_int(grn_ctx *ctx, grn_obj *column,
   return rc == GRN_SUCCESS;
 }
 
+grn_bool grngo_column_set_uint8(grn_ctx *ctx, grn_obj *column,
+                                grn_id id, uint8_t value) {
+  grn_obj obj;
+  GRN_UINT8_INIT(&obj, 0);
+  GRN_UINT8_SET(ctx, &obj, value);
+  grn_rc rc = grn_obj_set_value(ctx, column, id, &obj, GRN_OBJ_SET);
+  GRN_OBJ_FIN(ctx, &obj);
+  return rc == GRN_SUCCESS;
+}
+
+grn_bool grngo_column_set_uint16(grn_ctx *ctx, grn_obj *column,
+                                 grn_id id, uint16_t value) {
+  grn_obj obj;
+  GRN_UINT16_INIT(&obj, 0);
+  GRN_UINT16_SET(ctx, &obj, value);
+  grn_rc rc = grn_obj_set_value(ctx, column, id, &obj, GRN_OBJ_SET);
+  GRN_OBJ_FIN(ctx, &obj);
+  return rc == GRN_SUCCESS;
+}
+
+grn_bool grngo_column_set_uint32(grn_ctx *ctx, grn_obj *column,
+                                 grn_id id, uint32_t value) {
+  grn_obj obj;
+  GRN_UINT32_INIT(&obj, 0);
+  GRN_UINT32_SET(ctx, &obj, value);
+  grn_rc rc = grn_obj_set_value(ctx, column, id, &obj, GRN_OBJ_SET);
+  GRN_OBJ_FIN(ctx, &obj);
+  return rc == GRN_SUCCESS;
+}
+
+grn_bool grngo_column_set_uint64(grn_ctx *ctx, grn_obj *column,
+                                 grn_id id, uint64_t value) {
+  grn_obj obj;
+  GRN_UINT64_INIT(&obj, 0);
+  GRN_UINT64_SET(ctx, &obj, value);
+  grn_rc rc = grn_obj_set_value(ctx, column, id, &obj, GRN_OBJ_SET);
+  GRN_OBJ_FIN(ctx, &obj);
+  return rc == GRN_SUCCESS;
+}
+
 grn_bool grngo_column_set_float(grn_ctx *ctx, grn_obj *column,
                                 grn_id id, double value) {
   grn_obj obj;

  Modified: grngo.go (+31 -8)
===================================================================
--- grngo.go    2015-06-22 15:17:58 +0900 (3a4d0cd)
+++ grngo.go    2015-06-22 15:44:05 +0900 (05cc9da)
@@ -904,18 +904,41 @@ func (column *Column) setBool(id uint32, value bool) error {
 
 // setInt() assigns an Int value.
 func (column *Column) setInt(id uint32, value int64) error {
-	switch column.valueType {
-	case Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64:
-	default:
+	if column.isVector {
 		return fmt.Errorf("value type conflict")
 	}
-	if column.isVector {
+	ctx := column.table.db.ctx
+	var ok C.grn_bool
+	switch column.valueType {
+	case Int8:
+		grnValue := C.int8_t(value)
+		ok = C.grngo_column_set_int8(ctx, column.obj, C.grn_id(id), grnValue)
+	case Int16:
+		grnValue := C.int16_t(value)
+		ok = C.grngo_column_set_int16(ctx, column.obj, C.grn_id(id), grnValue)
+	case Int32:
+		grnValue := C.int32_t(value)
+		ok = C.grngo_column_set_int32(ctx, column.obj, C.grn_id(id), grnValue)
+	case Int64:
+		grnValue := C.int64_t(value)
+		ok = C.grngo_column_set_int64(ctx, column.obj, C.grn_id(id), grnValue)
+	case UInt8:
+		grnValue := C.uint8_t(value)
+		ok = C.grngo_column_set_uint8(ctx, column.obj, C.grn_id(id), grnValue)
+	case UInt16:
+		grnValue := C.uint16_t(value)
+		ok = C.grngo_column_set_uint16(ctx, column.obj, C.grn_id(id), grnValue)
+	case UInt32:
+		grnValue := C.uint32_t(value)
+		ok = C.grngo_column_set_uint32(ctx, column.obj, C.grn_id(id), grnValue)
+	case UInt64:
+		grnValue := C.uint64_t(value)
+		ok = C.grngo_column_set_uint64(ctx, column.obj, C.grn_id(id), grnValue)
+	default:
 		return fmt.Errorf("value type conflict")
 	}
-	grnValue := C.int64_t(value)
-	if ok := C.grngo_column_set_int(column.table.db.ctx, column.obj,
-		C.grn_id(id), grnValue); ok != C.GRN_TRUE {
-		return fmt.Errorf("grngo_column_set_int() failed")
+	if ok != C.GRN_TRUE {
+		return fmt.Errorf("grngo_column_set_int*() failed")
 	}
 	return nil
 }

  Modified: grngo.h (+16 -2)
===================================================================
--- grngo.h    2015-06-22 15:17:58 +0900 (d82e5a3)
+++ grngo.h    2015-06-22 15:44:05 +0900 (42c4b84)
@@ -85,8 +85,22 @@ grngo_row_info grngo_table_insert_text(grn_ctx *ctx, grn_obj *table,
 grn_bool grngo_column_set_bool(grn_ctx *ctx, grn_obj *column,
                                grn_id id, grn_bool value);
 // grngo_column_set_int() assigns an Int value.
-grn_bool grngo_column_set_int(grn_ctx *ctx, grn_obj *column,
-                              grn_id id, int64_t value);
+grn_bool grngo_column_set_int8(grn_ctx *ctx, grn_obj *column,
+                               grn_id id, int8_t value);
+grn_bool grngo_column_set_int16(grn_ctx *ctx, grn_obj *column,
+                                grn_id id, int16_t value);
+grn_bool grngo_column_set_int32(grn_ctx *ctx, grn_obj *column,
+                                grn_id id, int32_t value);
+grn_bool grngo_column_set_int64(grn_ctx *ctx, grn_obj *column,
+                                grn_id id, int64_t value);
+grn_bool grngo_column_set_uint8(grn_ctx *ctx, grn_obj *column,
+                                grn_id id, uint8_t value);
+grn_bool grngo_column_set_uint16(grn_ctx *ctx, grn_obj *column,
+                                 grn_id id, uint16_t value);
+grn_bool grngo_column_set_uint32(grn_ctx *ctx, grn_obj *column,
+                                 grn_id id, uint32_t value);
+grn_bool grngo_column_set_uint64(grn_ctx *ctx, grn_obj *column,
+                                 grn_id id, uint64_t value);
 // grngo_column_set_float() assigns a Float value.
 grn_bool grngo_column_set_float(grn_ctx *ctx, grn_obj *column,
                                 grn_id id, double value);
-------------- next part --------------
HTML����������������������������...
Download 



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