Kouhei Sutou
null+****@clear*****
Sun Oct 25 23:37:35 JST 2015
Kouhei Sutou 2015-10-25 23:37:35 +0900 (Sun, 25 Oct 2015) New Revision: 61864e78f50f4d6f5d518a48ef29902a8a8d4c6c https://github.com/groonga/groonga/commit/61864e78f50f4d6f5d518a48ef29902a8a8d4c6c Message: Export GRN_TRUEP() as GRN_OBJ_IS_TRUE() Modified files: include/groonga/obj.h lib/db.c lib/expr.c lib/grn_db.h lib/mrb/mrb_index_cursor.c lib/proc.c Modified: include/groonga/obj.h (+42 -0) =================================================================== --- include/groonga/obj.h 2015-10-22 14:39:25 +0900 (14a4ead) +++ include/groonga/obj.h 2015-10-25 23:37:35 +0900 (f22ba60) @@ -23,6 +23,48 @@ extern "C" { #endif +#define GRN_OBJ_IS_TRUE(ctx, obj, result) do { \ + grn_obj *obj_ = (obj); \ + switch (obj_->header.type) { \ + case GRN_BULK : \ + switch (obj_->header.domain) { \ + case GRN_DB_BOOL : \ + result = GRN_BOOL_VALUE(obj_); \ + break; \ + case GRN_DB_INT32 : \ + result = GRN_INT32_VALUE(obj_) != 0; \ + break; \ + case GRN_DB_UINT32 : \ + result = GRN_UINT32_VALUE(obj_) != 0; \ + break; \ + case GRN_DB_FLOAT : \ + { \ + double float_value; \ + float_value = GRN_FLOAT_VALUE(obj_); \ + result = (float_value < -DBL_EPSILON || \ + DBL_EPSILON < float_value); \ + } \ + break; \ + case GRN_DB_SHORT_TEXT : \ + case GRN_DB_TEXT : \ + case GRN_DB_LONG_TEXT : \ + result = GRN_TEXT_LEN(obj_) != 0; \ + break; \ + default : \ + result = GRN_FALSE; \ + break; \ + } \ + break; \ + case GRN_VECTOR : \ + result = GRN_TRUE; \ + break; \ + default : \ + result = GRN_FALSE; \ + break; \ + } \ +} while (0) + + GRN_API grn_bool grn_obj_is_builtin(grn_ctx *ctx, grn_obj *obj); GRN_API grn_bool grn_obj_is_table(grn_ctx *ctx, grn_obj *obj); GRN_API grn_bool grn_obj_is_type(grn_ctx *ctx, grn_obj *obj); Modified: lib/db.c (+1 -1) =================================================================== --- lib/db.c 2015-10-22 14:39:25 +0900 (c4f2fe6) +++ lib/db.c 2015-10-25 23:37:35 +0900 (381a31f) @@ -12291,7 +12291,7 @@ loader_add(grn_ctx *ctx, grn_obj *key) unsigned int result_boolean; GRN_RECORD_SET(ctx, v, id); result = grn_expr_exec(ctx, loader->ifexists, 0); - GRN_TRUEP(ctx, result, result_boolean); + GRN_OBJ_IS_TRUE(ctx, result, result_boolean); if (!result_boolean) { id = 0; } } return id; Modified: lib/expr.c (+8 -8) =================================================================== --- lib/expr.c 2015-10-22 14:39:25 +0900 (3150125) +++ lib/expr.c 2015-10-25 23:37:35 +0900 (5590870) @@ -2735,7 +2735,7 @@ grn_expr_exec(grn_ctx *ctx, grn_obj *expr, int nargs) grn_obj *v; unsigned int v_boolean; POP1(v); - GRN_TRUEP(ctx, v, v_boolean); + GRN_OBJ_IS_TRUE(ctx, v, v_boolean); if (!v_boolean) { code += code->nargs; } } code++; @@ -2931,9 +2931,9 @@ grn_expr_exec(grn_ctx *ctx, grn_obj *expr, int nargs) unsigned int x_boolean, y_boolean; grn_obj *result = NULL; POP2ALLOC1(x, y, res); - GRN_TRUEP(ctx, x, x_boolean); + GRN_OBJ_IS_TRUE(ctx, x, x_boolean); if (x_boolean) { - GRN_TRUEP(ctx, y, y_boolean); + GRN_OBJ_IS_TRUE(ctx, y, y_boolean); if (y_boolean) { result = y; } @@ -2956,11 +2956,11 @@ grn_expr_exec(grn_ctx *ctx, grn_obj *expr, int nargs) unsigned int x_boolean, y_boolean; grn_obj *result; POP2ALLOC1(x, y, res); - GRN_TRUEP(ctx, x, x_boolean); + GRN_OBJ_IS_TRUE(ctx, x, x_boolean); if (x_boolean) { result = x; } else { - GRN_TRUEP(ctx, y, y_boolean); + GRN_OBJ_IS_TRUE(ctx, y, y_boolean); if (y_boolean) { result = y; } else { @@ -2984,8 +2984,8 @@ grn_expr_exec(grn_ctx *ctx, grn_obj *expr, int nargs) grn_obj *x, *y; grn_bool x_boolean, y_boolean; POP2ALLOC1(x, y, res); - GRN_TRUEP(ctx, x, x_boolean); - GRN_TRUEP(ctx, y, y_boolean); + GRN_OBJ_IS_TRUE(ctx, x, x_boolean); + GRN_OBJ_IS_TRUE(ctx, y, y_boolean); grn_obj_reinit(ctx, res, GRN_DB_BOOL, 0); if (!x_boolean || y_boolean) { GRN_BOOL_SET(ctx, res, GRN_FALSE); @@ -3519,7 +3519,7 @@ grn_expr_exec(grn_ctx *ctx, grn_obj *expr, int nargs) grn_obj *value; grn_bool value_boolean; POP1ALLOC1(value, res); - GRN_TRUEP(ctx, value, value_boolean); + GRN_OBJ_IS_TRUE(ctx, value, value_boolean); grn_obj_reinit(ctx, res, GRN_DB_BOOL, 0); GRN_BOOL_SET(ctx, res, !value_boolean); } Modified: lib/grn_db.h (+0 -40) =================================================================== --- lib/grn_db.h 2015-10-22 14:39:25 +0900 (f647f14) +++ lib/grn_db.h 2015-10-25 23:37:35 +0900 (89e65d9) @@ -369,46 +369,6 @@ grn_rc grn_db_obj_init(grn_ctx *ctx, grn_obj *db, grn_id id, grn_db_obj *obj); #define GRN_ACCESSORP(obj) \ ((obj) && (((grn_obj *)(obj))->header.type == GRN_ACCESSOR)) -#define GRN_TRUEP(ctx, v, result) do {\ - switch (v->header.type) { \ - case GRN_BULK : \ - switch (v->header.domain) { \ - case GRN_DB_BOOL : \ - result = GRN_BOOL_VALUE(v); \ - break; \ - case GRN_DB_INT32 : \ - result = GRN_INT32_VALUE(v) != 0; \ - break; \ - case GRN_DB_UINT32 : \ - result = GRN_UINT32_VALUE(v) != 0; \ - break; \ - case GRN_DB_FLOAT : \ - { \ - double float_value; \ - float_value = GRN_FLOAT_VALUE(v); \ - result = (float_value < -DBL_EPSILON || \ - DBL_EPSILON < float_value); \ - } \ - break; \ - case GRN_DB_SHORT_TEXT : \ - case GRN_DB_TEXT : \ - case GRN_DB_LONG_TEXT : \ - result = GRN_TEXT_LEN(v) != 0; \ - break; \ - default : \ - result = GRN_FALSE; \ - break; \ - } \ - break; \ - case GRN_VECTOR : \ - result = GRN_TRUE; \ - break; \ - default : \ - result = GRN_FALSE; \ - break; \ - } \ -} while (0) - grn_id grn_obj_register(grn_ctx *ctx, grn_obj *db, const char *name, unsigned int name_size); int grn_obj_is_persistent(grn_ctx *ctx, grn_obj *obj); void grn_obj_spec_save(grn_ctx *ctx, grn_db_obj *obj); Modified: lib/mrb/mrb_index_cursor.c (+1 -1) =================================================================== --- lib/mrb/mrb_index_cursor.c 2015-10-22 14:39:25 +0900 (c99eae0) +++ lib/mrb/mrb_index_cursor.c 2015-10-25 23:37:35 +0900 (42b3fa2) @@ -180,7 +180,7 @@ mrb_grn_index_cursor_select(mrb_state *mrb, mrb_value self) grn_mrb_ctx_check(mrb); continue; } - GRN_TRUEP(ctx, matched, matched_raw); + GRN_OBJ_IS_TRUE(ctx, matched, matched_raw); if (!matched_raw) { continue; } Modified: lib/proc.c (+3 -3) =================================================================== --- lib/proc.c 2015-10-22 14:39:25 +0900 (436c0c5) +++ lib/proc.c 2015-10-25 23:37:35 +0900 (553d908) @@ -5727,7 +5727,7 @@ func_between(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data) result = grn_expr_exec(ctx, between_expr, 0); if (result) { grn_bool result_boolean; - GRN_TRUEP(ctx, result, result_boolean); + GRN_OBJ_IS_TRUE(ctx, result, result_boolean); if (result_boolean) { GRN_BOOL_SET(ctx, found, GRN_TRUE); } @@ -5921,7 +5921,7 @@ selector_between_sequential_search(grn_ctx *ctx, } if (result) { grn_bool result_boolean; - GRN_TRUEP(ctx, result, result_boolean); + GRN_OBJ_IS_TRUE(ctx, result, result_boolean); if (result_boolean) { grn_posting posting; posting.rid = record_id; @@ -6765,7 +6765,7 @@ proc_range_filter(grn_ctx *ctx, int nargs, grn_obj **args, break; } if (result) { - GRN_TRUEP(ctx, result, result_boolean); + GRN_OBJ_IS_TRUE(ctx, result, result_boolean); } } else { result_boolean = GRN_TRUE; -------------- next part -------------- HTML����������������������������...Download