Navigation Menu

Skip to content

Commit

Permalink
Export GRN_TRUEP() as GRN_OBJ_IS_TRUE()
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Oct 25, 2015
1 parent de3bbc6 commit 61864e7
Show file tree
Hide file tree
Showing 6 changed files with 55 additions and 53 deletions.
42 changes: 42 additions & 0 deletions include/groonga/obj.h
Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion lib/db.c
Expand Up @@ -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;
Expand Down
16 changes: 8 additions & 8 deletions lib/expr.c
Expand Up @@ -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++;
Expand Down Expand Up @@ -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;
}
Expand All @@ -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 {
Expand All @@ -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);
Expand Down Expand Up @@ -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);
}
Expand Down
40 changes: 0 additions & 40 deletions lib/grn_db.h
Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion lib/mrb/mrb_index_cursor.c
Expand Up @@ -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;
}
Expand Down
6 changes: 3 additions & 3 deletions lib/proc.c
Expand Up @@ -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);
}
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 61864e7

Please sign in to comment.