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