Navigation Menu

Skip to content

Commit

Permalink
mrb: bind grn_scan_info_push_arg()
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Jun 11, 2014
1 parent d1731ca commit f4452fc
Showing 1 changed file with 23 additions and 2 deletions.
25 changes: 23 additions & 2 deletions lib/mrb/mrb_expr.c
Expand Up @@ -196,7 +196,9 @@ scan_info_build(grn_ctx *ctx, grn_obj *expr, int *n,
if (c->value == var) {
stat = SCAN_VAR;
} else {
grn_scan_info_push_arg(si, c->value);
mrb_si = mrb_grn_scan_info_new(mrb, si);
mrb_funcall(mrb, mrb_si, "push_arg",
1, grn_mrb_value_from_grn_obj(mrb, c->value));
if (stat == SCAN_START) { grn_scan_info_set_flags(si, grn_scan_info_get_flags(si) | SCAN_PRE_CONST); }
stat = SCAN_CONST;
}
Expand All @@ -217,7 +219,9 @@ scan_info_build(grn_ctx *ctx, grn_obj *expr, int *n,
case SCAN_CONST :
case SCAN_VAR :
stat = SCAN_COL1;
grn_scan_info_push_arg(si, c->value);
mrb_si = mrb_grn_scan_info_new(mrb, si);
mrb_funcall(mrb, mrb_si, "push_arg",
1, grn_mrb_value_from_grn_obj(mrb, c->value));
break;
case SCAN_COL1 :
{
Expand Down Expand Up @@ -434,6 +438,21 @@ mrb_grn_scan_info_get_arg(mrb_state *mrb, mrb_value self)
return grn_mrb_value_from_grn_obj(mrb, arg);
}

static mrb_value
mrb_grn_scan_info_push_arg(mrb_state *mrb, mrb_value self)
{
scan_info *si;
mrb_value mrb_arg;
grn_bool success;

mrb_get_args(mrb, "o", &mrb_arg);

si = DATA_PTR(self);
success = grn_scan_info_push_arg(si, DATA_PTR(mrb_arg));

return mrb_bool_value(success);
}

static mrb_value
mrb_grn_expr_code_get_weight(mrb_state *mrb, mrb_value self)
{
Expand Down Expand Up @@ -519,6 +538,8 @@ grn_mrb_expr_init(grn_ctx *ctx)
mrb_grn_scan_info_set_flags, MRB_ARGS_REQ(1));
mrb_define_method(mrb, klass, "get_arg",
mrb_grn_scan_info_get_arg, MRB_ARGS_REQ(1));
mrb_define_method(mrb, klass, "push_arg",
mrb_grn_scan_info_push_arg, MRB_ARGS_REQ(1));

klass = mrb_define_class_under(mrb, module,
"ExpressionCode", mrb->object_class);
Expand Down

0 comments on commit f4452fc

Please sign in to comment.