Kouhei Sutou
null+****@clear*****
Mon Feb 2 14:49:20 JST 2015
Kouhei Sutou 2015-02-02 14:49:20 +0900 (Mon, 02 Feb 2015) New Revision: 7e599b3a8fd8ad2a998bc2177c7712123eb21903 https://github.com/groonga/groonga/commit/7e599b3a8fd8ad2a998bc2177c7712123eb21903 Message: mrb: bind grn_ctx_output_*() Modified files: lib/mrb/mrb_ctx.c Modified: lib/mrb/mrb_ctx.c (+38 -1) =================================================================== --- lib/mrb/mrb_ctx.c 2015-02-02 14:34:19 +0900 (7cc29ea) +++ lib/mrb/mrb_ctx.c 2015-02-02 14:49:20 +0900 (8f393bd) @@ -1,6 +1,6 @@ /* -*- c-basic-offset: 2 -*- */ /* - Copyright(C) 2013-2014 Brazil + Copyright(C) 2013-2015 Brazil This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -26,6 +26,7 @@ #include <mruby/string.h> #include "../grn_mrb.h" +#include "../grn_output.h" #include "mrb_ctx.h" #include "mrb_converter.h" @@ -197,6 +198,39 @@ ctx_set_error_message(mrb_state *mrb, mrb_value self) return error_message; } +static mrb_value +ctx_output(mrb_state *mrb, mrb_value self) +{ + grn_ctx *ctx = (grn_ctx *)mrb->ud; + mrb_value target; + + mrb_get_args(mrb, "o", &target); + + switch (mrb_type(target)) { + case MRB_TT_FALSE : + GRN_OUTPUT_BOOL(GRN_FALSE); + break; + case MRB_TT_TRUE : + GRN_OUTPUT_BOOL(GRN_TRUE); + break; + case MRB_TT_FIXNUM : + GRN_OUTPUT_INT32(mrb_fixnum(target)); + break; + case MRB_TT_FLOAT : + GRN_OUTPUT_FLOAT(mrb_float(target)); + break; + case MRB_TT_STRING : + GRN_OUTPUT_STR(RSTRING_PTR(target), RSTRING_LEN(target)); + break; + default : + mrb_raisef(mrb, E_ARGUMENT_ERROR, + "must be true, false, number, float or string: %S", target); + break; + } + + return mrb_nil_value(); +} + void grn_mrb_ctx_check(mrb_state *mrb) { @@ -700,6 +734,9 @@ grn_mrb_ctx_init(grn_ctx *ctx) mrb_define_method(mrb, klass, "error_message=", ctx_set_error_message, MRB_ARGS_REQ(1)); + mrb_define_method(mrb, klass, "output", ctx_output, + MRB_ARGS_REQ(1)); + grn_mrb_load(ctx, "context/error_level.rb"); grn_mrb_load(ctx, "context/rc.rb"); grn_mrb_load(ctx, "context.rb"); -------------- next part -------------- HTML����������������������������...Download