susumu.yata
null+****@clear*****
Fri Jun 19 17:17:07 JST 2015
susumu.yata 2015-06-19 17:17:07 +0900 (Fri, 19 Jun 2015) New Revision: 851ee02574e5e2699afb108f30930a04e6539fce https://github.com/groonga/grngo/commit/851ee02574e5e2699afb108f30930a04e6539fce Message: Rename grn_cgo.* to grngo.* and grn_cgo_* to grngo_*. GitHub: #1 Added files: grngo.h Removed files: grngo_cgo.h Modified files: grngo.go Renamed files: grngo.c (from grngo_cgo.c) Renamed: grngo.c (+91 -91) 63% =================================================================== --- grngo_cgo.c 2015-06-19 16:59:39 +0900 (03f172e) +++ grngo.c 2015-06-19 17:17:07 +0900 (0cfa941) @@ -1,10 +1,10 @@ -#include "grngo_cgo.h" +#include "grngo.h" #include <string.h> -#define GRN_CGO_MAX_DATA_TYPE_ID GRN_DB_WGS84_GEO_POINT +#define GRNGO_MAX_DATA_TYPE_ID GRN_DB_WGS84_GEO_POINT -grn_obj *grn_cgo_find_table(grn_ctx *ctx, const char *name, int name_len) { +grn_obj *grngo_find_table(grn_ctx *ctx, const char *name, int name_len) { grn_obj *obj = grn_ctx_get(ctx, name, name_len); if (!obj) { return NULL; @@ -23,23 +23,23 @@ grn_obj *grn_cgo_find_table(grn_ctx *ctx, const char *name, int name_len) { } } -// grn_cgo_init_type_info() initializes the members of type_info. +// grngo_init_type_info() initializes the members of type_info. // The initialized type info specifies a valid Void type. -static void grn_cgo_init_type_info(grn_cgo_type_info *type_info) { +static void grngo_init_type_info(grngo_type_info *type_info) { type_info->data_type = GRN_DB_VOID; type_info->dimension = 0; type_info->ref_table = NULL; } -grn_bool grn_cgo_table_get_key_info(grn_ctx *ctx, grn_obj *table, - grn_cgo_type_info *key_info) { - grn_cgo_init_type_info(key_info); +grn_bool grngo_table_get_key_info(grn_ctx *ctx, grn_obj *table, + grngo_type_info *key_info) { + grngo_init_type_info(key_info); while (table) { switch (table->header.type) { case GRN_TABLE_HASH_KEY: case GRN_TABLE_PAT_KEY: case GRN_TABLE_DAT_KEY: { - if (table->header.domain <= GRN_CGO_MAX_DATA_TYPE_ID) { + if (table->header.domain <= GRNGO_MAX_DATA_TYPE_ID) { key_info->data_type = table->header.domain; return GRN_TRUE; } @@ -65,9 +65,9 @@ grn_bool grn_cgo_table_get_key_info(grn_ctx *ctx, grn_obj *table, return GRN_FALSE; } -grn_bool grn_cgo_table_get_value_info(grn_ctx *ctx, grn_obj *table, - grn_cgo_type_info *value_info) { - grn_cgo_init_type_info(value_info); +grn_bool grngo_table_get_value_info(grn_ctx *ctx, grn_obj *table, + grngo_type_info *value_info) { + grngo_init_type_info(value_info); if (!table) { return GRN_FALSE; } @@ -77,13 +77,13 @@ grn_bool grn_cgo_table_get_value_info(grn_ctx *ctx, grn_obj *table, case GRN_TABLE_DAT_KEY: case GRN_TABLE_NO_KEY: { grn_id range = grn_obj_get_range(ctx, table); - if (range <= GRN_CGO_MAX_DATA_TYPE_ID) { + if (range <= GRNGO_MAX_DATA_TYPE_ID) { value_info->data_type = range; return GRN_TRUE; } value_info->ref_table = grn_ctx_at(ctx, range); - grn_cgo_type_info key_info; - if (!grn_cgo_table_get_key_info(ctx, value_info->ref_table, &key_info)) { + grngo_type_info key_info; + if (!grngo_table_get_key_info(ctx, value_info->ref_table, &key_info)) { return GRN_FALSE; } value_info->data_type = key_info.data_type; @@ -96,9 +96,9 @@ grn_bool grn_cgo_table_get_value_info(grn_ctx *ctx, grn_obj *table, } } -grn_bool grn_cgo_column_get_value_info(grn_ctx *ctx, grn_obj *column, - grn_cgo_type_info *value_info) { - grn_cgo_init_type_info(value_info); +grn_bool grngo_column_get_value_info(grn_ctx *ctx, grn_obj *column, + grngo_type_info *value_info) { + grngo_init_type_info(value_info); if (!column) { return GRN_FALSE; } @@ -119,20 +119,20 @@ grn_bool grn_cgo_column_get_value_info(grn_ctx *ctx, grn_obj *column, } } grn_id range = grn_obj_get_range(ctx, column); - if (range <= GRN_CGO_MAX_DATA_TYPE_ID) { + if (range <= GRNGO_MAX_DATA_TYPE_ID) { value_info->data_type = range; return GRN_TRUE; } value_info->ref_table = grn_ctx_at(ctx, range); - grn_cgo_type_info key_info; - if (!grn_cgo_table_get_key_info(ctx, value_info->ref_table, &key_info)) { + grngo_type_info key_info; + if (!grngo_table_get_key_info(ctx, value_info->ref_table, &key_info)) { return GRN_FALSE; } value_info->data_type = key_info.data_type; return GRN_TRUE; } -char *grn_cgo_table_get_name(grn_ctx *ctx, grn_obj *table) { +char *grngo_table_get_name(grn_ctx *ctx, grn_obj *table) { if (!table) { return NULL; } @@ -162,47 +162,47 @@ char *grn_cgo_table_get_name(grn_ctx *ctx, grn_obj *table) { return table_name; } -// grn_cgo_table_insert_row() calls grn_table_add() and converts the result. -static grn_cgo_row_info grn_cgo_table_insert_row( +// grngo_table_insert_row() calls grn_table_add() and converts the result. +static grngo_row_info grngo_table_insert_row( grn_ctx *ctx, grn_obj *table, const void *key_ptr, size_t key_size) { - grn_cgo_row_info row_info; + grngo_row_info row_info; int inserted; row_info.id = grn_table_add(ctx, table, key_ptr, key_size, &inserted); row_info.inserted = inserted ? GRN_TRUE : GRN_FALSE; return row_info; } -grn_cgo_row_info grn_cgo_table_insert_void(grn_ctx *ctx, grn_obj *table) { - return grn_cgo_table_insert_row(ctx, table, NULL, 0); +grngo_row_info grngo_table_insert_void(grn_ctx *ctx, grn_obj *table) { + return grngo_table_insert_row(ctx, table, NULL, 0); } -grn_cgo_row_info grn_cgo_table_insert_bool(grn_ctx *ctx, grn_obj *table, - grn_bool key) { - return grn_cgo_table_insert_row(ctx, table, &key, sizeof(key)); +grngo_row_info grngo_table_insert_bool(grn_ctx *ctx, grn_obj *table, + grn_bool key) { + return grngo_table_insert_row(ctx, table, &key, sizeof(key)); } -grn_cgo_row_info grn_cgo_table_insert_int(grn_ctx *ctx, grn_obj *table, - int64_t key) { - return grn_cgo_table_insert_row(ctx, table, &key, sizeof(key)); +grngo_row_info grngo_table_insert_int(grn_ctx *ctx, grn_obj *table, + int64_t key) { + return grngo_table_insert_row(ctx, table, &key, sizeof(key)); } -grn_cgo_row_info grn_cgo_table_insert_float(grn_ctx *ctx, grn_obj *table, - double key) { - return grn_cgo_table_insert_row(ctx, table, &key, sizeof(key)); +grngo_row_info grngo_table_insert_float(grn_ctx *ctx, grn_obj *table, + double key) { + return grngo_table_insert_row(ctx, table, &key, sizeof(key)); } -grn_cgo_row_info grn_cgo_table_insert_geo_point(grn_ctx *ctx, grn_obj *table, - grn_geo_point key) { - return grn_cgo_table_insert_row(ctx, table, &key, sizeof(key)); +grngo_row_info grngo_table_insert_geo_point(grn_ctx *ctx, grn_obj *table, + grn_geo_point key) { + return grngo_table_insert_row(ctx, table, &key, sizeof(key)); } -grn_cgo_row_info grn_cgo_table_insert_text(grn_ctx *ctx, grn_obj *table, - const grn_cgo_text *key) { - return grn_cgo_table_insert_row(ctx, table, key->ptr, key->size); +grngo_row_info grngo_table_insert_text(grn_ctx *ctx, grn_obj *table, + const grngo_text *key) { + return grngo_table_insert_row(ctx, table, key->ptr, key->size); } -grn_bool grn_cgo_column_set_bool(grn_ctx *ctx, grn_obj *column, - grn_id id, grn_bool value) { +grn_bool grngo_column_set_bool(grn_ctx *ctx, grn_obj *column, + grn_id id, grn_bool value) { grn_obj obj; GRN_BOOL_INIT(&obj, 0); GRN_BOOL_SET(ctx, &obj, value); @@ -211,8 +211,8 @@ grn_bool grn_cgo_column_set_bool(grn_ctx *ctx, grn_obj *column, return rc == GRN_SUCCESS; } -grn_bool grn_cgo_column_set_int(grn_ctx *ctx, grn_obj *column, - grn_id id, int64_t value) { +grn_bool grngo_column_set_int(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); @@ -221,8 +221,8 @@ grn_bool grn_cgo_column_set_int(grn_ctx *ctx, grn_obj *column, return rc == GRN_SUCCESS; } -grn_bool grn_cgo_column_set_float(grn_ctx *ctx, grn_obj *column, - grn_id id, double value) { +grn_bool grngo_column_set_float(grn_ctx *ctx, grn_obj *column, + grn_id id, double value) { grn_obj obj; GRN_FLOAT_INIT(&obj, 0); GRN_FLOAT_SET(ctx, &obj, value); @@ -231,8 +231,8 @@ grn_bool grn_cgo_column_set_float(grn_ctx *ctx, grn_obj *column, return rc == GRN_SUCCESS; } -grn_bool grn_cgo_column_set_geo_point(grn_ctx *ctx, grn_obj *column, - grn_id id, grn_geo_point value) { +grn_bool grngo_column_set_geo_point(grn_ctx *ctx, grn_obj *column, + grn_id id, grn_geo_point value) { grn_obj obj; GRN_WGS84_GEO_POINT_INIT(&obj, 0); GRN_GEO_POINT_SET(ctx, &obj, value.latitude, value.longitude); @@ -241,8 +241,8 @@ grn_bool grn_cgo_column_set_geo_point(grn_ctx *ctx, grn_obj *column, return rc == GRN_SUCCESS; } -grn_bool grn_cgo_column_set_text(grn_ctx *ctx, grn_obj *column, - grn_id id, const grn_cgo_text *value) { +grn_bool grngo_column_set_text(grn_ctx *ctx, grn_obj *column, + grn_id id, const grngo_text *value) { grn_obj obj; GRN_TEXT_INIT(&obj, 0); if (value) { @@ -255,9 +255,9 @@ grn_bool grn_cgo_column_set_text(grn_ctx *ctx, grn_obj *column, return rc == GRN_SUCCESS; } -grn_bool grn_cgo_column_set_bool_vector(grn_ctx *ctx, grn_obj *column, - grn_id id, - const grn_cgo_vector *value) { +grn_bool grngo_column_set_bool_vector(grn_ctx *ctx, grn_obj *column, + grn_id id, + const grngo_vector *value) { grn_obj obj; GRN_BOOL_INIT(&obj, GRN_OBJ_VECTOR); size_t i; @@ -269,9 +269,9 @@ grn_bool grn_cgo_column_set_bool_vector(grn_ctx *ctx, grn_obj *column, return rc == GRN_SUCCESS; } -grn_bool grn_cgo_column_set_int_vector(grn_ctx *ctx, grn_obj *column, - grn_id id, - const grn_cgo_vector *value) { +grn_bool grngo_column_set_int_vector(grn_ctx *ctx, grn_obj *column, + grn_id id, + const grngo_vector *value) { grn_obj obj; GRN_INT64_INIT(&obj, GRN_OBJ_VECTOR); size_t i; @@ -283,9 +283,9 @@ grn_bool grn_cgo_column_set_int_vector(grn_ctx *ctx, grn_obj *column, return rc == GRN_SUCCESS; } -grn_bool grn_cgo_column_set_float_vector(grn_ctx *ctx, grn_obj *column, - grn_id id, - const grn_cgo_vector *value) { +grn_bool grngo_column_set_float_vector(grn_ctx *ctx, grn_obj *column, + grn_id id, + const grngo_vector *value) { grn_obj obj; GRN_FLOAT_INIT(&obj, GRN_OBJ_VECTOR); size_t i; @@ -297,9 +297,9 @@ grn_bool grn_cgo_column_set_float_vector(grn_ctx *ctx, grn_obj *column, return rc == GRN_SUCCESS; } -grn_bool grn_cgo_column_set_geo_point_vector(grn_ctx *ctx, grn_obj *column, - grn_id id, - const grn_cgo_vector *value) { +grn_bool grngo_column_set_geo_point_vector(grn_ctx *ctx, grn_obj *column, + grn_id id, + const grngo_vector *value) { grn_obj obj; GRN_WGS84_GEO_POINT_INIT(&obj, GRN_OBJ_VECTOR); size_t i; @@ -312,13 +312,13 @@ grn_bool grn_cgo_column_set_geo_point_vector(grn_ctx *ctx, grn_obj *column, return rc == GRN_SUCCESS; } -grn_bool grn_cgo_column_set_text_vector(grn_ctx *ctx, grn_obj *column, - grn_id id, - const grn_cgo_vector *value) { +grn_bool grngo_column_set_text_vector(grn_ctx *ctx, grn_obj *column, + grn_id id, + const grngo_vector *value) { grn_obj obj; GRN_TEXT_INIT(&obj, GRN_OBJ_VECTOR); size_t i; - const grn_cgo_text *values = (const grn_cgo_text *)value->ptr; + const grngo_text *values = (const grngo_text *)value->ptr; for (i = 0; i < value->size; i++) { grn_vector_add_element(ctx, &obj, values[i].ptr, values[i].size, 0, obj.header.domain); @@ -328,8 +328,8 @@ grn_bool grn_cgo_column_set_text_vector(grn_ctx *ctx, grn_obj *column, return rc == GRN_SUCCESS; } -grn_bool grn_cgo_column_get_bool(grn_ctx *ctx, grn_obj *column, - grn_id id, grn_bool *value) { +grn_bool grngo_column_get_bool(grn_ctx *ctx, grn_obj *column, + grn_id id, grn_bool *value) { grn_obj value_obj; GRN_BOOL_INIT(&value_obj, 0); grn_obj_get_value(ctx, column, id, &value_obj); @@ -338,8 +338,8 @@ grn_bool grn_cgo_column_get_bool(grn_ctx *ctx, grn_obj *column, return GRN_TRUE; } -grn_bool grn_cgo_column_get_int(grn_ctx *ctx, grn_obj *column, - grn_id id, int64_t *value) { +grn_bool grngo_column_get_int(grn_ctx *ctx, grn_obj *column, + grn_id id, int64_t *value) { grn_obj value_obj; GRN_INT64_INIT(&value_obj, 0); grn_obj_get_value(ctx, column, id, &value_obj); @@ -348,8 +348,8 @@ grn_bool grn_cgo_column_get_int(grn_ctx *ctx, grn_obj *column, return GRN_TRUE; } -grn_bool grn_cgo_column_get_float(grn_ctx *ctx, grn_obj *column, - grn_id id, double *value) { +grn_bool grngo_column_get_float(grn_ctx *ctx, grn_obj *column, + grn_id id, double *value) { grn_obj value_obj; GRN_FLOAT_INIT(&value_obj, 0); grn_obj_get_value(ctx, column, id, &value_obj); @@ -358,8 +358,8 @@ grn_bool grn_cgo_column_get_float(grn_ctx *ctx, grn_obj *column, return GRN_TRUE; } -grn_bool grn_cgo_column_get_geo_point(grn_ctx *ctx, grn_obj *column, - grn_id id, grn_geo_point *value) { +grn_bool grngo_column_get_geo_point(grn_ctx *ctx, grn_obj *column, + grn_id id, grn_geo_point *value) { grn_obj value_obj; GRN_WGS84_GEO_POINT_INIT(&value_obj, 0); grn_obj_get_value(ctx, column, id, &value_obj); @@ -368,8 +368,8 @@ grn_bool grn_cgo_column_get_geo_point(grn_ctx *ctx, grn_obj *column, return GRN_TRUE; } -grn_bool grn_cgo_column_get_text(grn_ctx *ctx, grn_obj *column, - grn_id id, grn_cgo_text *value) { +grn_bool grngo_column_get_text(grn_ctx *ctx, grn_obj *column, + grn_id id, grngo_text *value) { grn_obj value_obj; GRN_TEXT_INIT(&value_obj, 0); grn_obj_get_value(ctx, column, id, &value_obj); @@ -382,8 +382,8 @@ grn_bool grn_cgo_column_get_text(grn_ctx *ctx, grn_obj *column, return GRN_TRUE; } -grn_bool grn_cgo_column_get_bool_vector(grn_ctx *ctx, grn_obj *column, - grn_id id, grn_cgo_vector *value) { +grn_bool grngo_column_get_bool_vector(grn_ctx *ctx, grn_obj *column, + grn_id id, grngo_vector *value) { grn_obj value_obj; GRN_BOOL_INIT(&value_obj, GRN_OBJ_VECTOR); grn_obj_get_value(ctx, column, id, &value_obj); @@ -397,8 +397,8 @@ grn_bool grn_cgo_column_get_bool_vector(grn_ctx *ctx, grn_obj *column, return GRN_TRUE; } -grn_bool grn_cgo_column_get_int_vector(grn_ctx *ctx, grn_obj *column, - grn_id id, grn_cgo_vector *value) { +grn_bool grngo_column_get_int_vector(grn_ctx *ctx, grn_obj *column, + grn_id id, grngo_vector *value) { grn_obj value_obj; GRN_INT64_INIT(&value_obj, GRN_OBJ_VECTOR); grn_obj_get_value(ctx, column, id, &value_obj); @@ -412,8 +412,8 @@ grn_bool grn_cgo_column_get_int_vector(grn_ctx *ctx, grn_obj *column, return GRN_TRUE; } -grn_bool grn_cgo_column_get_float_vector(grn_ctx *ctx, grn_obj *column, - grn_id id, grn_cgo_vector *value) { +grn_bool grngo_column_get_float_vector(grn_ctx *ctx, grn_obj *column, + grn_id id, grngo_vector *value) { grn_obj value_obj; GRN_FLOAT_INIT(&value_obj, GRN_OBJ_VECTOR); grn_obj_get_value(ctx, column, id, &value_obj); @@ -427,8 +427,8 @@ grn_bool grn_cgo_column_get_float_vector(grn_ctx *ctx, grn_obj *column, return GRN_TRUE; } -grn_bool grn_cgo_column_get_geo_point_vector(grn_ctx *ctx, grn_obj *column, - grn_id id, grn_cgo_vector *value) { +grn_bool grngo_column_get_geo_point_vector(grn_ctx *ctx, grn_obj *column, + grn_id id, grngo_vector *value) { grn_obj value_obj; GRN_WGS84_GEO_POINT_INIT(&value_obj, GRN_OBJ_VECTOR); grn_obj_get_value(ctx, column, id, &value_obj); @@ -442,8 +442,8 @@ grn_bool grn_cgo_column_get_geo_point_vector(grn_ctx *ctx, grn_obj *column, return GRN_TRUE; } -grn_bool grn_cgo_column_get_text_vector(grn_ctx *ctx, grn_obj *column, - grn_id id, grn_cgo_vector *value) { +grn_bool grngo_column_get_text_vector(grn_ctx *ctx, grn_obj *column, + grn_id id, grngo_vector *value) { grn_obj value_obj; GRN_TEXT_INIT(&value_obj, GRN_OBJ_VECTOR); grn_obj_get_value(ctx, column, id, &value_obj); @@ -456,7 +456,7 @@ grn_bool grn_cgo_column_get_text_vector(grn_ctx *ctx, grn_obj *column, const char *text_ptr; unsigned int text_size = grn_vector_get_element(ctx, &value_obj, i, &text_ptr, NULL, NULL); - grn_cgo_text *text = &((grn_cgo_text *)value->ptr)[i]; + grngo_text *text = &((grngo_text *)value->ptr)[i]; if (text_size <= text->size) { memcpy(text->ptr, text_ptr, text_size); } @@ -468,8 +468,8 @@ grn_bool grn_cgo_column_get_text_vector(grn_ctx *ctx, grn_obj *column, return GRN_TRUE; } -grn_bool grn_cgo_column_get_bools(grn_ctx *ctx, grn_obj *column, size_t n, - const int64_t *ids, grn_bool *values) { +grn_bool grngo_column_get_bools(grn_ctx *ctx, grn_obj *column, size_t n, + const int64_t *ids, grn_bool *values) { grn_obj value_obj; GRN_BOOL_INIT(&value_obj, 0); size_t i; Modified: grngo.go (+98 -98) =================================================================== --- grngo.go 2015-06-19 16:59:39 +0900 (ea81577) +++ grngo.go 2015-06-19 17:17:07 +0900 (b9c89ab) @@ -2,7 +2,7 @@ package grngo /* #cgo pkg-config: groonga -#include "grngo_cgo.h" +#include "grngo.h" */ import "C" @@ -431,13 +431,13 @@ func (db *DB) FindTable(name string) (*Table, error) { if len(nameBytes) != 0 { cName = (*C.char)(unsafe.Pointer(&nameBytes[0])) } - obj := C.grn_cgo_find_table(db.ctx, cName, C.int(len(nameBytes))) + obj := C.grngo_find_table(db.ctx, cName, C.int(len(nameBytes))) if obj == nil { return nil, fmt.Errorf("table not found: name = <%s>", name) } - var keyInfo C.grn_cgo_type_info - if ok := C.grn_cgo_table_get_key_info(db.ctx, obj, &keyInfo); ok != C.GRN_TRUE { - return nil, fmt.Errorf("grn_cgo_table_get_key_info() failed: name = <%s>", + var keyInfo C.grngo_type_info + if ok := C.grngo_table_get_key_info(db.ctx, obj, &keyInfo); ok != C.GRN_TRUE { + return nil, fmt.Errorf("grngo_table_get_key_info() failed: name = <%s>", name) } // Check the key type. @@ -465,9 +465,9 @@ func (db *DB) FindTable(name string) (*Table, error) { if keyType == VoidID { return nil, fmt.Errorf("reference to void: name = <%s>", name) } - cKeyTableName := C.grn_cgo_table_get_name(db.ctx, keyInfo.ref_table) + cKeyTableName := C.grngo_table_get_name(db.ctx, keyInfo.ref_table) if cKeyTableName == nil { - return nil, fmt.Errorf("grn_cgo_table_get_name() failed") + return nil, fmt.Errorf("grngo_table_get_name() failed") } defer C.free(unsafe.Pointer(cKeyTableName)) var err error @@ -476,9 +476,9 @@ func (db *DB) FindTable(name string) (*Table, error) { return nil, err } } - var valueInfo C.grn_cgo_type_info - if ok := C.grn_cgo_table_get_value_info(db.ctx, obj, &valueInfo); ok != C.GRN_TRUE { - return nil, fmt.Errorf("grn_cgo_table_get_value_info() failed: name = <%s>", + var valueInfo C.grngo_type_info + if ok := C.grngo_table_get_value_info(db.ctx, obj, &valueInfo); ok != C.GRN_TRUE { + return nil, fmt.Errorf("grngo_table_get_value_info() failed: name = <%s>", name) } // Check the value type. @@ -506,9 +506,9 @@ func (db *DB) FindTable(name string) (*Table, error) { if valueType == VoidID { return nil, fmt.Errorf("reference to void: name = <%s>", name) } - cValueTableName := C.grn_cgo_table_get_name(db.ctx, valueInfo.ref_table) + cValueTableName := C.grngo_table_get_name(db.ctx, valueInfo.ref_table) if cValueTableName == nil { - return nil, fmt.Errorf("grn_cgo_table_get_name() failed") + return nil, fmt.Errorf("grngo_table_get_name() failed") } defer C.free(unsafe.Pointer(cValueTableName)) var err error @@ -583,9 +583,9 @@ func (table *Table) insertVoid() (bool, Int, error) { if table.keyType != VoidID { return false, NullInt(), fmt.Errorf("key type conflict") } - rowInfo := C.grn_cgo_table_insert_void(table.db.ctx, table.obj) + rowInfo := C.grngo_table_insert_void(table.db.ctx, table.obj) if rowInfo.id == C.GRN_ID_NIL { - return false, NullInt(), fmt.Errorf("grn_cgo_table_insert_void() failed") + return false, NullInt(), fmt.Errorf("grngo_table_insert_void() failed") } return rowInfo.inserted == C.GRN_TRUE, Int(rowInfo.id), nil } @@ -599,9 +599,9 @@ func (table *Table) insertBool(key Bool) (bool, Int, error) { if key == True { grnKey = C.grn_bool(C.GRN_TRUE) } - rowInfo := C.grn_cgo_table_insert_bool(table.db.ctx, table.obj, grnKey) + rowInfo := C.grngo_table_insert_bool(table.db.ctx, table.obj, grnKey) if rowInfo.id == C.GRN_ID_NIL { - return false, NullInt(), fmt.Errorf("grn_cgo_table_insert_bool() failed") + return false, NullInt(), fmt.Errorf("grngo_table_insert_bool() failed") } return rowInfo.inserted == C.GRN_TRUE, Int(rowInfo.id), nil } @@ -612,9 +612,9 @@ func (table *Table) insertInt(key Int) (bool, Int, error) { return false, NullInt(), fmt.Errorf("key type conflict") } grnKey := C.int64_t(key) - rowInfo := C.grn_cgo_table_insert_int(table.db.ctx, table.obj, grnKey) + rowInfo := C.grngo_table_insert_int(table.db.ctx, table.obj, grnKey) if rowInfo.id == C.GRN_ID_NIL { - return false, NullInt(), fmt.Errorf("grn_cgo_table_insert_int() failed") + return false, NullInt(), fmt.Errorf("grngo_table_insert_int() failed") } return rowInfo.inserted == C.GRN_TRUE, Int(rowInfo.id), nil } @@ -625,9 +625,9 @@ func (table *Table) insertFloat(key Float) (bool, Int, error) { return false, NullInt(), fmt.Errorf("key type conflict") } grnKey := C.double(key) - rowInfo := C.grn_cgo_table_insert_float(table.db.ctx, table.obj, grnKey) + rowInfo := C.grngo_table_insert_float(table.db.ctx, table.obj, grnKey) if rowInfo.id == C.GRN_ID_NIL { - return false, NullInt(), fmt.Errorf("grn_cgo_table_insert_float() failed") + return false, NullInt(), fmt.Errorf("grngo_table_insert_float() failed") } return rowInfo.inserted == C.GRN_TRUE, Int(rowInfo.id), nil } @@ -638,9 +638,9 @@ func (table *Table) insertGeoPoint(key GeoPoint) (bool, Int, error) { return false, NullInt(), fmt.Errorf("key type conflict") } grnKey := C.grn_geo_point{C.int(key.Latitude), C.int(key.Longitude)} - rowInfo := C.grn_cgo_table_insert_geo_point(table.db.ctx, table.obj, grnKey) + rowInfo := C.grngo_table_insert_geo_point(table.db.ctx, table.obj, grnKey) if rowInfo.id == C.GRN_ID_NIL { - return false, NullInt(), fmt.Errorf("grn_cgo_table_insert_geo_point() failed") + return false, NullInt(), fmt.Errorf("grngo_table_insert_geo_point() failed") } return rowInfo.inserted == C.GRN_TRUE, Int(rowInfo.id), nil } @@ -650,14 +650,14 @@ func (table *Table) insertText(key Text) (bool, Int, error) { if table.keyType != TextID { return false, NullInt(), fmt.Errorf("key type conflict") } - var grnKey C.grn_cgo_text + var grnKey C.grngo_text if len(key) != 0 { grnKey.ptr = (*C.char)(unsafe.Pointer(&key[0])) grnKey.size = C.size_t(len(key)) } - rowInfo := C.grn_cgo_table_insert_text(table.db.ctx, table.obj, &grnKey) + rowInfo := C.grngo_table_insert_text(table.db.ctx, table.obj, &grnKey) if rowInfo.id == C.GRN_ID_NIL { - return false, NullInt(), fmt.Errorf("grn_cgo_table_insert_text() failed") + return false, NullInt(), fmt.Errorf("grngo_table_insert_text() failed") } return rowInfo.inserted == C.GRN_TRUE, Int(rowInfo.id), nil } @@ -779,9 +779,9 @@ func (table *Table) findColumn(name string) (*Column, error) { valueType = table.valueType valueTable = table.valueTable default: - var valueInfo C.grn_cgo_type_info - if ok := C.grn_cgo_column_get_value_info(table.db.ctx, obj, &valueInfo); ok != C.GRN_TRUE { - return nil, fmt.Errorf("grn_cgo_column_get_value_info() failed: name = <%s>", + var valueInfo C.grngo_type_info + if ok := C.grngo_column_get_value_info(table.db.ctx, obj, &valueInfo); ok != C.GRN_TRUE { + return nil, fmt.Errorf("grngo_column_get_value_info() failed: name = <%s>", name) } // Check the value type. @@ -806,9 +806,9 @@ func (table *Table) findColumn(name string) (*Column, error) { if valueType == VoidID { return nil, fmt.Errorf("reference to void: name = <%s>", name) } - cValueTableName := C.grn_cgo_table_get_name(table.db.ctx, valueInfo.ref_table) + cValueTableName := C.grngo_table_get_name(table.db.ctx, valueInfo.ref_table) if cValueTableName == nil { - return nil, fmt.Errorf("grn_cgo_table_get_name() failed") + return nil, fmt.Errorf("grngo_table_get_name() failed") } defer C.free(unsafe.Pointer(cValueTableName)) var err error @@ -901,9 +901,9 @@ func (column *Column) setBool(id Int, value Bool) error { if value == True { grnValue = C.GRN_TRUE } - if ok := C.grn_cgo_column_set_bool(column.table.db.ctx, column.obj, + if ok := C.grngo_column_set_bool(column.table.db.ctx, column.obj, C.grn_id(id), grnValue); ok != C.GRN_TRUE { - return fmt.Errorf("grn_cgo_column_set_bool() failed") + return fmt.Errorf("grngo_column_set_bool() failed") } return nil } @@ -914,9 +914,9 @@ func (column *Column) setInt(id Int, value Int) error { return fmt.Errorf("value type conflict") } grnValue := C.int64_t(value) - if ok := C.grn_cgo_column_set_int(column.table.db.ctx, column.obj, + 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("grn_cgo_column_set_int() failed") + return fmt.Errorf("grngo_column_set_int() failed") } return nil } @@ -927,9 +927,9 @@ func (column *Column) setFloat(id Int, value Float) error { return fmt.Errorf("value type conflict") } grnValue := C.double(value) - if ok := C.grn_cgo_column_set_float(column.table.db.ctx, column.obj, + if ok := C.grngo_column_set_float(column.table.db.ctx, column.obj, C.grn_id(id), grnValue); ok != C.GRN_TRUE { - return fmt.Errorf("grn_cgo_column_set_float() failed") + return fmt.Errorf("grngo_column_set_float() failed") } return nil } @@ -940,9 +940,9 @@ func (column *Column) setGeoPoint(id Int, value GeoPoint) error { return fmt.Errorf("value type conflict") } grnValue := C.grn_geo_point{C.int(value.Latitude), C.int(value.Longitude)} - if ok := C.grn_cgo_column_set_geo_point(column.table.db.ctx, column.obj, + if ok := C.grngo_column_set_geo_point(column.table.db.ctx, column.obj, C.grn_id(id), grnValue); ok != C.GRN_TRUE { - return fmt.Errorf("grn_cgo_column_set_geo_point() failed") + return fmt.Errorf("grngo_column_set_geo_point() failed") } return nil } @@ -952,14 +952,14 @@ func (column *Column) setText(id Int, value Text) error { if (column.valueType != TextID) || column.isVector { return fmt.Errorf("value type conflict") } - var grnValue C.grn_cgo_text + var grnValue C.grngo_text if len(value) != 0 { grnValue.ptr = (*C.char)(unsafe.Pointer(&value[0])) grnValue.size = C.size_t(len(value)) } - if ok := C.grn_cgo_column_set_text(column.table.db.ctx, column.obj, + if ok := C.grngo_column_set_text(column.table.db.ctx, column.obj, C.grn_id(id), &grnValue); ok != C.GRN_TRUE { - return fmt.Errorf("grn_cgo_column_set_text() failed") + return fmt.Errorf("grngo_column_set_text() failed") } return nil } @@ -972,77 +972,77 @@ func (column *Column) setBoolVector(id Int, value []Bool) error { grnValue[i] = C.GRN_TRUE } } - var grnVector C.grn_cgo_vector + var grnVector C.grngo_vector if len(grnValue) != 0 { grnVector.ptr = unsafe.Pointer(&grnValue[0]) grnVector.size = C.size_t(len(grnValue)) } - if ok := C.grn_cgo_column_set_bool_vector(column.table.db.ctx, column.obj, + if ok := C.grngo_column_set_bool_vector(column.table.db.ctx, column.obj, C.grn_id(id), &grnVector); ok != C.GRN_TRUE { - return fmt.Errorf("grn_cgo_column_set_bool_vector() failed") + return fmt.Errorf("grngo_column_set_bool_vector() failed") } return nil } // setIntVector() assigns an Int vector. func (column *Column) setIntVector(id Int, value []Int) error { - var grnVector C.grn_cgo_vector + var grnVector C.grngo_vector if len(value) != 0 { grnVector.ptr = unsafe.Pointer(&value[0]) grnVector.size = C.size_t(len(value)) } - if ok := C.grn_cgo_column_set_int_vector(column.table.db.ctx, column.obj, + if ok := C.grngo_column_set_int_vector(column.table.db.ctx, column.obj, C.grn_id(id), &grnVector); ok != C.GRN_TRUE { - return fmt.Errorf("grn_cgo_column_set_int_vector() failed") + return fmt.Errorf("grngo_column_set_int_vector() failed") } return nil } // setFloatVector() assigns a Float vector. func (column *Column) setFloatVector(id Int, value []Float) error { - var grnVector C.grn_cgo_vector + var grnVector C.grngo_vector if len(value) != 0 { grnVector.ptr = unsafe.Pointer(&value[0]) grnVector.size = C.size_t(len(value)) } - if ok := C.grn_cgo_column_set_float_vector(column.table.db.ctx, column.obj, + if ok := C.grngo_column_set_float_vector(column.table.db.ctx, column.obj, C.grn_id(id), &grnVector); ok != C.GRN_TRUE { - return fmt.Errorf("grn_cgo_column_set_float_vector() failed") + return fmt.Errorf("grngo_column_set_float_vector() failed") } return nil } // setGeoPointVector() assigns a GeoPoint vector. func (column *Column) setGeoPointVector(id Int, value []GeoPoint) error { - var grnVector C.grn_cgo_vector + var grnVector C.grngo_vector if len(value) != 0 { grnVector.ptr = unsafe.Pointer(&value[0]) grnVector.size = C.size_t(len(value)) } - if ok := C.grn_cgo_column_set_geo_point_vector(column.table.db.ctx, + if ok := C.grngo_column_set_geo_point_vector(column.table.db.ctx, column.obj, C.grn_id(id), &grnVector); ok != C.GRN_TRUE { - return fmt.Errorf("grn_cgo_column_set_geo_point_vector() failed") + return fmt.Errorf("grngo_column_set_geo_point_vector() failed") } return nil } // setTextVector() assigns a Text vector. func (column *Column) setTextVector(id Int, value []Text) error { - grnValue := make([]C.grn_cgo_text, len(value)) + grnValue := make([]C.grngo_text, len(value)) for i, v := range value { if len(v) != 0 { grnValue[i].ptr = (*C.char)(unsafe.Pointer(&v[0])) grnValue[i].size = C.size_t(len(v)) } } - var grnVector C.grn_cgo_vector + var grnVector C.grngo_vector if len(grnValue) != 0 { grnVector.ptr = unsafe.Pointer(&grnValue[0]) grnVector.size = C.size_t(len(grnValue)) } - if ok := C.grn_cgo_column_set_text_vector(column.table.db.ctx, + if ok := C.grngo_column_set_text_vector(column.table.db.ctx, column.obj, C.grn_id(id), &grnVector); ok != C.GRN_TRUE { - return fmt.Errorf("grn_cgo_column_set_text_vector() failed") + return fmt.Errorf("grngo_column_set_text_vector() failed") } return nil } @@ -1079,9 +1079,9 @@ func (column *Column) SetValue(id Int, value interface{}) error { // getBool() gets a Bool value. func (column *Column) getBool(id Int) (interface{}, error) { var grnValue C.grn_bool - if ok := C.grn_cgo_column_get_bool(column.table.db.ctx, column.obj, + if ok := C.grngo_column_get_bool(column.table.db.ctx, column.obj, C.grn_id(id), &grnValue); ok != C.GRN_TRUE { - return nil, fmt.Errorf("grn_cgo_column_get_bool() failed") + return nil, fmt.Errorf("grngo_column_get_bool() failed") } if grnValue == C.GRN_TRUE { return True, nil @@ -1093,9 +1093,9 @@ func (column *Column) getBool(id Int) (interface{}, error) { // getInt() gets an Int value. func (column *Column) getInt(id Int) (interface{}, error) { var grnValue C.int64_t - if ok := C.grn_cgo_column_get_int(column.table.db.ctx, column.obj, + if ok := C.grngo_column_get_int(column.table.db.ctx, column.obj, C.grn_id(id), &grnValue); ok != C.GRN_TRUE { - return nil, fmt.Errorf("grn_cgo_column_get_int() failed") + return nil, fmt.Errorf("grngo_column_get_int() failed") } return Int(grnValue), nil } @@ -1103,9 +1103,9 @@ func (column *Column) getInt(id Int) (interface{}, error) { // getFloat() gets a Float value. func (column *Column) getFloat(id Int) (interface{}, error) { var grnValue C.double - if ok := C.grn_cgo_column_get_float(column.table.db.ctx, column.obj, + if ok := C.grngo_column_get_float(column.table.db.ctx, column.obj, C.grn_id(id), &grnValue); ok != C.GRN_TRUE { - return nil, fmt.Errorf("grn_cgo_column_get_float() failed") + return nil, fmt.Errorf("grngo_column_get_float() failed") } return Float(grnValue), nil } @@ -1113,47 +1113,47 @@ func (column *Column) getFloat(id Int) (interface{}, error) { // getGeoPoint() gets a GeoPoint value. func (column *Column) getGeoPoint(id Int) (interface{}, error) { var grnValue C.grn_geo_point - if ok := C.grn_cgo_column_get_geo_point(column.table.db.ctx, column.obj, + if ok := C.grngo_column_get_geo_point(column.table.db.ctx, column.obj, C.grn_id(id), &grnValue); ok != C.GRN_TRUE { - return nil, fmt.Errorf("grn_cgo_column_get_geo_point() failed") + return nil, fmt.Errorf("grngo_column_get_geo_point() failed") } return GeoPoint{int32(grnValue.latitude), int32(grnValue.longitude)}, nil } // getText() gets a Text value. func (column *Column) getText(id Int) (interface{}, error) { - var grnValue C.grn_cgo_text - if ok := C.grn_cgo_column_get_text(column.table.db.ctx, column.obj, + var grnValue C.grngo_text + if ok := C.grngo_column_get_text(column.table.db.ctx, column.obj, C.grn_id(id), &grnValue); ok != C.GRN_TRUE { - return nil, fmt.Errorf("grn_cgo_column_get_text() failed") + return nil, fmt.Errorf("grngo_column_get_text() failed") } if grnValue.size == 0 { return make(Text, 0), nil } value := make(Text, int(grnValue.size)) grnValue.ptr = (*C.char)(unsafe.Pointer(&value[0])) - if ok := C.grn_cgo_column_get_text(column.table.db.ctx, column.obj, + if ok := C.grngo_column_get_text(column.table.db.ctx, column.obj, C.grn_id(id), &grnValue); ok != C.GRN_TRUE { - return nil, fmt.Errorf("grn_cgo_column_get_text() failed") + return nil, fmt.Errorf("grngo_column_get_text() failed") } return value, nil } // getBoolVector() gets a BoolVector. func (column *Column) getBoolVector(id Int) (interface{}, error) { - var grnVector C.grn_cgo_vector - if ok := C.grn_cgo_column_get_bool_vector(column.table.db.ctx, column.obj, + var grnVector C.grngo_vector + if ok := C.grngo_column_get_bool_vector(column.table.db.ctx, column.obj, C.grn_id(id), &grnVector); ok != C.GRN_TRUE { - return nil, fmt.Errorf("grn_cgo_column_get_bool_vector() failed") + return nil, fmt.Errorf("grngo_column_get_bool_vector() failed") } if grnVector.size == 0 { return make([]Bool, 0), nil } grnValue := make([]C.grn_bool, int(grnVector.size)) grnVector.ptr = unsafe.Pointer(&grnValue[0]) - if ok := C.grn_cgo_column_get_bool_vector(column.table.db.ctx, column.obj, + if ok := C.grngo_column_get_bool_vector(column.table.db.ctx, column.obj, C.grn_id(id), &grnVector); ok != C.GRN_TRUE { - return nil, fmt.Errorf("grn_cgo_column_get_bool_vector() failed") + return nil, fmt.Errorf("grngo_column_get_bool_vector() failed") } value := make([]Bool, int(grnVector.size)) for i, v := range grnValue { @@ -1166,76 +1166,76 @@ func (column *Column) getBoolVector(id Int) (interface{}, error) { // getIntVector() gets a IntVector. func (column *Column) getIntVector(id Int) (interface{}, error) { - var grnValue C.grn_cgo_vector - if ok := C.grn_cgo_column_get_int_vector(column.table.db.ctx, column.obj, + var grnValue C.grngo_vector + if ok := C.grngo_column_get_int_vector(column.table.db.ctx, column.obj, C.grn_id(id), &grnValue); ok != C.GRN_TRUE { - return nil, fmt.Errorf("grn_cgo_column_get_int_vector() failed") + return nil, fmt.Errorf("grngo_column_get_int_vector() failed") } if grnValue.size == 0 { return make([]Int, 0), nil } value := make([]Int, int(grnValue.size)) grnValue.ptr = unsafe.Pointer(&value[0]) - if ok := C.grn_cgo_column_get_int_vector(column.table.db.ctx, column.obj, + if ok := C.grngo_column_get_int_vector(column.table.db.ctx, column.obj, C.grn_id(id), &grnValue); ok != C.GRN_TRUE { - return nil, fmt.Errorf("grn_cgo_column_get_int_vector() failed") + return nil, fmt.Errorf("grngo_column_get_int_vector() failed") } return value, nil } // getFloatVector() gets a FloatVector. func (column *Column) getFloatVector(id Int) (interface{}, error) { - var grnValue C.grn_cgo_vector - if ok := C.grn_cgo_column_get_float_vector(column.table.db.ctx, column.obj, + var grnValue C.grngo_vector + if ok := C.grngo_column_get_float_vector(column.table.db.ctx, column.obj, C.grn_id(id), &grnValue); ok != C.GRN_TRUE { - return nil, fmt.Errorf("grn_cgo_column_get_float_vector() failed") + return nil, fmt.Errorf("grngo_column_get_float_vector() failed") } if grnValue.size == 0 { return make([]Float, 0), nil } value := make([]Float, int(grnValue.size)) grnValue.ptr = unsafe.Pointer(&value[0]) - if ok := C.grn_cgo_column_get_float_vector(column.table.db.ctx, column.obj, + if ok := C.grngo_column_get_float_vector(column.table.db.ctx, column.obj, C.grn_id(id), &grnValue); ok != C.GRN_TRUE { - return nil, fmt.Errorf("grn_cgo_column_get_float_vector() failed") + return nil, fmt.Errorf("grngo_column_get_float_vector() failed") } return value, nil } // getGeoPointVector() gets a GeoPointVector. func (column *Column) getGeoPointVector(id Int) (interface{}, error) { - var grnValue C.grn_cgo_vector - if ok := C.grn_cgo_column_get_geo_point_vector(column.table.db.ctx, column.obj, + var grnValue C.grngo_vector + if ok := C.grngo_column_get_geo_point_vector(column.table.db.ctx, column.obj, C.grn_id(id), &grnValue); ok != C.GRN_TRUE { - return nil, fmt.Errorf("grn_cgo_column_get_geo_point_vector() failed") + return nil, fmt.Errorf("grngo_column_get_geo_point_vector() failed") } if grnValue.size == 0 { return make([]GeoPoint, 0), nil } value := make([]GeoPoint, int(grnValue.size)) grnValue.ptr = unsafe.Pointer(&value[0]) - if ok := C.grn_cgo_column_get_geo_point_vector(column.table.db.ctx, column.obj, + if ok := C.grngo_column_get_geo_point_vector(column.table.db.ctx, column.obj, C.grn_id(id), &grnValue); ok != C.GRN_TRUE { - return nil, fmt.Errorf("grn_cgo_column_get_geo_point_vector() failed") + return nil, fmt.Errorf("grngo_column_get_geo_point_vector() failed") } return value, nil } // getTextVector() gets a TextVector. func (column *Column) getTextVector(id Int) (interface{}, error) { - var grnVector C.grn_cgo_vector - if ok := C.grn_cgo_column_get_text_vector(column.table.db.ctx, column.obj, + var grnVector C.grngo_vector + if ok := C.grngo_column_get_text_vector(column.table.db.ctx, column.obj, C.grn_id(id), &grnVector); ok != C.GRN_TRUE { - return nil, fmt.Errorf("grn_cgo_column_get_text_vector() failed") + return nil, fmt.Errorf("grngo_column_get_text_vector() failed") } if grnVector.size == 0 { return make([]Text, 0), nil } - grnValues := make([]C.grn_cgo_text, int(grnVector.size)) + grnValues := make([]C.grngo_text, int(grnVector.size)) grnVector.ptr = unsafe.Pointer(&grnValues[0]) - if ok := C.grn_cgo_column_get_text_vector(column.table.db.ctx, column.obj, + if ok := C.grngo_column_get_text_vector(column.table.db.ctx, column.obj, C.grn_id(id), &grnVector); ok != C.GRN_TRUE { - return nil, fmt.Errorf("grn_cgo_column_get_text_vector() failed") + return nil, fmt.Errorf("grngo_column_get_text_vector() failed") } value := make([]Text, int(grnVector.size)) for i, grnValue := range grnValues { @@ -1244,9 +1244,9 @@ func (column *Column) getTextVector(id Int) (interface{}, error) { grnValues[i].ptr = (*C.char)(unsafe.Pointer(&value[i][0])) } } - if ok := C.grn_cgo_column_get_text_vector(column.table.db.ctx, column.obj, + if ok := C.grngo_column_get_text_vector(column.table.db.ctx, column.obj, C.grn_id(id), &grnVector); ok != C.GRN_TRUE { - return nil, fmt.Errorf("grn_cgo_column_get_text_vector() failed") + return nil, fmt.Errorf("grngo_column_get_text_vector() failed") } return value, nil } Added: grngo.h (+148 -0) 100644 =================================================================== --- /dev/null +++ grngo.h 2015-06-19 17:17:07 +0900 (144d362) @@ -0,0 +1,148 @@ +#ifndef GRNGO_H +#define GRNGO_H + +#include <stdint.h> +#include <stdlib.h> + +#include <groonga.h> + +typedef struct { + char *ptr; + size_t size; +} grngo_text; + +typedef struct { + void *ptr; + size_t size; +} grngo_vector; + +// grngo_find_table() finds a table with the given name. +// If found, an object associated with the table is returned. +// If not found, NULL is returned. +grn_obj *grngo_find_table(grn_ctx *ctx, const char *name, int name_len); + +typedef struct { + grn_id data_type; // Data type (GRN_DB_VOID, GRN_DB_BOOL, etc.). + // If the type is table reference, the key type of the + // referenced table is stored. + int dimension; // Vector depth, 0 means the type is scalar. + grn_obj *ref_table; // The referenced table of table reference. +} grngo_type_info; + +// grngo_table_get_key_info() gets information of the table key. +grn_bool grngo_table_get_key_info(grn_ctx *ctx, grn_obj *table, + grngo_type_info *key_info); +// grngo_table_get_value_info() gets information of the table value. +grn_bool grngo_table_get_value_info(grn_ctx *ctx, grn_obj *table, + grngo_type_info *value_info); +// grngo_column_get_value_info() gets information of the column value. +grn_bool grngo_column_get_value_info(grn_ctx *ctx, grn_obj *column, + grngo_type_info *value_info); + +// grngo_table_get_name() returns the name of table. +// On success, a non-NULL pointer is returned and it must be freed by free(). +// On failure, NULL is returned. +char *grngo_table_get_name(grn_ctx *ctx, grn_obj *table); + +typedef struct { + grn_id id; // Row ID, GRN_ID_NIL means the info is invalid. + grn_bool inserted; // Inserted or not. +} grngo_row_info; + +// grngo_table_insert_void() inserts an empty row. +grngo_row_info grngo_table_insert_void(grn_ctx *ctx, grn_obj *table); +// grngo_table_insert_bool() inserts a row with Bool key. +grngo_row_info grngo_table_insert_bool(grn_ctx *ctx, grn_obj *table, + grn_bool key); +// grngo_table_insert_int() inserts a row with Int key. +grngo_row_info grngo_table_insert_int(grn_ctx *ctx, grn_obj *table, + int64_t key); +// grngo_table_insert_float() inserts a row with Float key. +grngo_row_info grngo_table_insert_float(grn_ctx *ctx, grn_obj *table, + double key); +// grngo_table_insert_geo_point() inserts a row with GeoPoint key. +grngo_row_info grngo_table_insert_geo_point(grn_ctx *ctx, grn_obj *table, + grn_geo_point key); +// grngo_table_insert_text() inserts a row with Text key. +grngo_row_info grngo_table_insert_text(grn_ctx *ctx, grn_obj *table, + const grngo_text *key); + +// grngo_column_set_bool() assigns a Bool value. +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); +// 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); +// grngo_column_set_geo_point() assigns a GeoPoint value. +grn_bool grngo_column_set_geo_point(grn_ctx *ctx, grn_obj *column, + grn_id id, grn_geo_point value); +// grngo_column_set_text() assigns a Text value. +grn_bool grngo_column_set_text(grn_ctx *ctx, grn_obj *column, + grn_id id, const grngo_text *value); +// grngo_column_set_bool_vector() assigns a Bool vector. +grn_bool grngo_column_set_bool_vector(grn_ctx *ctx, grn_obj *column, + grn_id id, + const grngo_vector *value); +// grngo_column_set_int_vector() assigns an Int vector. +grn_bool grngo_column_set_int_vector(grn_ctx *ctx, grn_obj *column, + grn_id id, + const grngo_vector *value); +// grngo_column_set_float_vector() assigns a Float vector. +grn_bool grngo_column_set_float_vector(grn_ctx *ctx, grn_obj *column, + grn_id id, + const grngo_vector *value); +// grngo_column_set_geo_point_vector() assigns a GeoPoint vector. +grn_bool grngo_column_set_geo_point_vector(grn_ctx *ctx, grn_obj *column, + grn_id id, + const grngo_vector *value); +// grngo_column_set_text_vector() assigns a Text vector. +// value must refer to an array of grngo_text. +grn_bool grngo_column_set_text_vector(grn_ctx *ctx, grn_obj *column, + grn_id id, + const grngo_vector *value); + +// grngo_column_get_X_vector() sets *(X *)(value.ptr)[i] if value->size >= +// the actual vector size. +// In the case of Text, bodies are copied to (X *)(value.ptr)[i].ptr if +// (X *)(value.ptr)[i].size >= the actual body size. +// Then, grngo_column_get_X_vector() sets value->size. + +// grngo_column_get_bool() gets a stored Bool value. +grn_bool grngo_column_get_bool(grn_ctx *ctx, grn_obj *column, + grn_id id, grn_bool *value); +// grngo_column_get_int() gets a stored Int value. +grn_bool grngo_column_get_int(grn_ctx *ctx, grn_obj *column, + grn_id id, int64_t *value); +// grngo_column_get_float() gets a stored Float value. +grn_bool grngo_column_get_float(grn_ctx *ctx, grn_obj *column, + grn_id id, double *value); +// grngo_column_get_geo_point() gets a stored GeoPoint value. +grn_bool grngo_column_get_geo_point(grn_ctx *ctx, grn_obj *column, + grn_id id, grn_geo_point *value); +// grngo_column_get_text() gets a stored Text value. +grn_bool grngo_column_get_text(grn_ctx *ctx, grn_obj *column, + grn_id id, grngo_text *value); +// grngo_column_get_bool_vector() gets a stored Bool vector. +grn_bool grngo_column_get_bool_vector(grn_ctx *ctx, grn_obj *column, + grn_id id, grngo_vector *value); +// grngo_column_get_int_vector() gets a stored Int vector. +grn_bool grngo_column_get_int_vector(grn_ctx *ctx, grn_obj *column, + grn_id id, grngo_vector *value); +// grngo_column_get_float_vector() gets a stored Float vector. +grn_bool grngo_column_get_float_vector(grn_ctx *ctx, grn_obj *column, + grn_id id, grngo_vector *value); +// grngo_column_get_geo_point_vector() gets a stored GeoPoint vector. +grn_bool grngo_column_get_geo_point_vector(grn_ctx *ctx, grn_obj *column, + grn_id id, grngo_vector *value); +// grngo_column_get_text_vector() gets a stored Text vector. +// value must refer to an array of grngo_text. +grn_bool grngo_column_get_text_vector(grn_ctx *ctx, grn_obj *column, + grn_id id, grngo_vector *value); + +grn_bool grngo_column_get_bools(grn_ctx *ctx, grn_obj *column, size_t n, + const int64_t *ids, grn_bool *values); + +#endif // GRNGO_H Deleted: grngo_cgo.h (+0 -148) 100644 =================================================================== --- grngo_cgo.h 2015-06-19 16:59:39 +0900 (53bb968) +++ /dev/null @@ -1,148 +0,0 @@ -#ifndef GRN_CGO_H -#define GRN_CGO_H - -#include <stdint.h> -#include <stdlib.h> - -#include <groonga.h> - -typedef struct { - char *ptr; - size_t size; -} grn_cgo_text; - -typedef struct { - void *ptr; - size_t size; -} grn_cgo_vector; - -// grn_cgo_find_table() finds a table with the given name. -// If found, an object associated with the table is returned. -// If not found, NULL is returned. -grn_obj *grn_cgo_find_table(grn_ctx *ctx, const char *name, int name_len); - -typedef struct { - grn_id data_type; // Data type (GRN_DB_VOID, GRN_DB_BOOL, etc.). - // If the type is table reference, the key type of the - // referenced table is stored. - int dimension; // Vector depth, 0 means the type is scalar. - grn_obj *ref_table; // The referenced table of table reference. -} grn_cgo_type_info; - -// grn_cgo_table_get_key_info() gets information of the table key. -grn_bool grn_cgo_table_get_key_info(grn_ctx *ctx, grn_obj *table, - grn_cgo_type_info *key_info); -// grn_cgo_table_get_value_info() gets information of the table value. -grn_bool grn_cgo_table_get_value_info(grn_ctx *ctx, grn_obj *table, - grn_cgo_type_info *value_info); -// grn_cgo_column_get_value_info() gets information of the column value. -grn_bool grn_cgo_column_get_value_info(grn_ctx *ctx, grn_obj *column, - grn_cgo_type_info *value_info); - -// grn_cgo_table_get_name() returns the name of table. -// On success, a non-NULL pointer is returned and it must be freed by free(). -// On failure, NULL is returned. -char *grn_cgo_table_get_name(grn_ctx *ctx, grn_obj *table); - -typedef struct { - grn_id id; // Row ID, GRN_ID_NIL means the info is invalid. - grn_bool inserted; // Inserted or not. -} grn_cgo_row_info; - -// grn_cgo_table_insert_void() inserts an empty row. -grn_cgo_row_info grn_cgo_table_insert_void(grn_ctx *ctx, grn_obj *table); -// grn_cgo_table_insert_bool() inserts a row with Bool key. -grn_cgo_row_info grn_cgo_table_insert_bool(grn_ctx *ctx, grn_obj *table, - grn_bool key); -// grn_cgo_table_insert_int() inserts a row with Int key. -grn_cgo_row_info grn_cgo_table_insert_int(grn_ctx *ctx, grn_obj *table, - int64_t key); -// grn_cgo_table_insert_float() inserts a row with Float key. -grn_cgo_row_info grn_cgo_table_insert_float(grn_ctx *ctx, grn_obj *table, - double key); -// grn_cgo_table_insert_geo_point() inserts a row with GeoPoint key. -grn_cgo_row_info grn_cgo_table_insert_geo_point(grn_ctx *ctx, grn_obj *table, - grn_geo_point key); -// grn_cgo_table_insert_text() inserts a row with Text key. -grn_cgo_row_info grn_cgo_table_insert_text(grn_ctx *ctx, grn_obj *table, - const grn_cgo_text *key); - -// grn_cgo_column_set_bool() assigns a Bool value. -grn_bool grn_cgo_column_set_bool(grn_ctx *ctx, grn_obj *column, - grn_id id, grn_bool value); -// grn_cgo_column_set_int() assigns an Int value. -grn_bool grn_cgo_column_set_int(grn_ctx *ctx, grn_obj *column, - grn_id id, int64_t value); -// grn_cgo_column_set_float() assigns a Float value. -grn_bool grn_cgo_column_set_float(grn_ctx *ctx, grn_obj *column, - grn_id id, double value); -// grn_cgo_column_set_geo_point() assigns a GeoPoint value. -grn_bool grn_cgo_column_set_geo_point(grn_ctx *ctx, grn_obj *column, - grn_id id, grn_geo_point value); -// grn_cgo_column_set_text() assigns a Text value. -grn_bool grn_cgo_column_set_text(grn_ctx *ctx, grn_obj *column, - grn_id id, const grn_cgo_text *value); -// grn_cgo_column_set_bool_vector() assigns a Bool vector. -grn_bool grn_cgo_column_set_bool_vector(grn_ctx *ctx, grn_obj *column, - grn_id id, - const grn_cgo_vector *value); -// grn_cgo_column_set_int_vector() assigns an Int vector. -grn_bool grn_cgo_column_set_int_vector(grn_ctx *ctx, grn_obj *column, - grn_id id, - const grn_cgo_vector *value); -// grn_cgo_column_set_float_vector() assigns a Float vector. -grn_bool grn_cgo_column_set_float_vector(grn_ctx *ctx, grn_obj *column, - grn_id id, - const grn_cgo_vector *value); -// grn_cgo_column_set_geo_point_vector() assigns a GeoPoint vector. -grn_bool grn_cgo_column_set_geo_point_vector(grn_ctx *ctx, grn_obj *column, - grn_id id, - const grn_cgo_vector *value); -// grn_cgo_column_set_text_vector() assigns a Text vector. -// value must refer to an array of grn_cgo_text. -grn_bool grn_cgo_column_set_text_vector(grn_ctx *ctx, grn_obj *column, - grn_id id, - const grn_cgo_vector *value); - -// grn_cgo_column_get_X_vector() sets *(X *)(value.ptr)[i] if value->size >= -// the actual vector size. -// In the case of Text, bodies are copied to (X *)(value.ptr)[i].ptr if -// (X *)(value.ptr)[i].size >= the actual body size. -// Then, grn_cgo_column_get_X_vector() sets value->size. - -// grn_cgo_column_get_bool() gets a stored Bool value. -grn_bool grn_cgo_column_get_bool(grn_ctx *ctx, grn_obj *column, - grn_id id, grn_bool *value); -// grn_cgo_column_get_int() gets a stored Int value. -grn_bool grn_cgo_column_get_int(grn_ctx *ctx, grn_obj *column, - grn_id id, int64_t *value); -// grn_cgo_column_get_float() gets a stored Float value. -grn_bool grn_cgo_column_get_float(grn_ctx *ctx, grn_obj *column, - grn_id id, double *value); -// grn_cgo_column_get_geo_point() gets a stored GeoPoint value. -grn_bool grn_cgo_column_get_geo_point(grn_ctx *ctx, grn_obj *column, - grn_id id, grn_geo_point *value); -// grn_cgo_column_get_text() gets a stored Text value. -grn_bool grn_cgo_column_get_text(grn_ctx *ctx, grn_obj *column, - grn_id id, grn_cgo_text *value); -// grn_cgo_column_get_bool_vector() gets a stored Bool vector. -grn_bool grn_cgo_column_get_bool_vector(grn_ctx *ctx, grn_obj *column, - grn_id id, grn_cgo_vector *value); -// grn_cgo_column_get_int_vector() gets a stored Int vector. -grn_bool grn_cgo_column_get_int_vector(grn_ctx *ctx, grn_obj *column, - grn_id id, grn_cgo_vector *value); -// grn_cgo_column_get_float_vector() gets a stored Float vector. -grn_bool grn_cgo_column_get_float_vector(grn_ctx *ctx, grn_obj *column, - grn_id id, grn_cgo_vector *value); -// grn_cgo_column_get_geo_point_vector() gets a stored GeoPoint vector. -grn_bool grn_cgo_column_get_geo_point_vector(grn_ctx *ctx, grn_obj *column, - grn_id id, grn_cgo_vector *value); -// grn_cgo_column_get_text_vector() gets a stored Text vector. -// value must refer to an array of grn_cgo_text. -grn_bool grn_cgo_column_get_text_vector(grn_ctx *ctx, grn_obj *column, - grn_id id, grn_cgo_vector *value); - -grn_bool grn_cgo_column_get_bools(grn_ctx *ctx, grn_obj *column, size_t n, - const int64_t *ids, grn_bool *values); - -#endif // GRN_CGO_H -------------- next part -------------- HTML����������������������������...Download