Kouhei Sutou
null+****@clear*****
Wed Aug 6 23:05:09 JST 2014
Kouhei Sutou 2014-08-06 23:05:09 +0900 (Wed, 06 Aug 2014) New Revision: f20487cbd78d00a1845813a85dc8182091b9cd1c https://github.com/groonga/groonga/commit/f20487cbd78d00a1845813a85dc8182091b9cd1c Message: mrb ctx: add accessors Modified files: lib/mrb/mrb_ctx.c Modified: lib/mrb/mrb_ctx.c (+122 -0) =================================================================== --- lib/mrb/mrb_ctx.c 2014-08-06 20:48:57 +0900 (88528b5) +++ lib/mrb/mrb_ctx.c 2014-08-06 23:05:09 +0900 (8e7abfc) @@ -22,6 +22,8 @@ #include <mruby.h> #include <mruby/class.h> #include <mruby/data.h> +#include <mruby/variable.h> +#include <mruby/string.h> #include "mrb_ctx.h" #include "mrb_converter.h" @@ -52,6 +54,108 @@ ctx_array_reference(mrb_state *mrb, mrb_value self) return grn_mrb_value_from_grn_obj(mrb, object); } +static mrb_value +ctx_get_rc(mrb_state *mrb, mrb_value self) +{ + grn_ctx *ctx = (grn_ctx *)mrb->ud; + + return mrb_fixnum_value(ctx->rc); +} + +static mrb_value +ctx_set_rc(mrb_state *mrb, mrb_value self) +{ + grn_ctx *ctx = (grn_ctx *)mrb->ud; + mrb_int rc; + + mrb_get_args(mrb, "i", &rc); + ctx->rc = rc; + + return mrb_fixnum_value(ctx->rc); +} + +static mrb_value +ctx_get_error_level(mrb_state *mrb, mrb_value self) +{ + grn_ctx *ctx = (grn_ctx *)mrb->ud; + + return mrb_fixnum_value(ctx->errlvl); +} + +static mrb_value +ctx_set_error_level(mrb_state *mrb, mrb_value self) +{ + grn_ctx *ctx = (grn_ctx *)mrb->ud; + mrb_int error_level; + + mrb_get_args(mrb, "i", &error_level); + ctx->errlvl = error_level; + + return mrb_fixnum_value(ctx->errlvl); +} + +static mrb_value +ctx_get_error_file(mrb_state *mrb, mrb_value self) +{ + grn_ctx *ctx = (grn_ctx *)mrb->ud; + + return mrb_str_new_cstr(mrb, ctx->errfile); +} + +static mrb_value +ctx_set_error_file(mrb_state *mrb, mrb_value self) +{ + grn_ctx *ctx = (grn_ctx *)mrb->ud; + mrb_value error_file; + + mrb_get_args(mrb, "S", &error_file); + mrb_iv_set(mrb, self, mrb_intern_lit(mrb, "@error_file"), error_file); + ctx->errfile = RSTRING_PTR(error_file); + + return error_file; +} + +static mrb_value +ctx_get_error_line(mrb_state *mrb, mrb_value self) +{ + grn_ctx *ctx = (grn_ctx *)mrb->ud; + + return mrb_fixnum_value(ctx->errline); +} + +static mrb_value +ctx_set_error_line(mrb_state *mrb, mrb_value self) +{ + grn_ctx *ctx = (grn_ctx *)mrb->ud; + mrb_int error_line; + + mrb_get_args(mrb, "i", &error_line); + ctx->errline = error_line; + + return mrb_fixnum_value(ctx->errline); +} + +static mrb_value +ctx_get_error_method(mrb_state *mrb, mrb_value self) +{ + grn_ctx *ctx = (grn_ctx *)mrb->ud; + + return mrb_str_new_cstr(mrb, ctx->errfunc); +} + +static mrb_value +ctx_set_error_method(mrb_state *mrb, mrb_value self) +{ + grn_ctx *ctx = (grn_ctx *)mrb->ud; + mrb_value error_method; + + mrb_get_args(mrb, "S", &error_method); + mrb_iv_set(mrb, self, mrb_intern_lit(mrb, "@error_method"), error_method); + ctx->errfunc = RSTRING_PTR(error_method); + + return error_method; +} + void grn_mrb_ctx_init(grn_ctx *ctx) { @@ -67,5 +171,23 @@ grn_mrb_ctx_init(grn_ctx *ctx) ctx_class_instance, MRB_ARGS_NONE()); mrb_define_method(mrb, klass, "[]", ctx_array_reference, MRB_ARGS_REQ(1)); + mrb_define_method(mrb, klass, "rc", ctx_get_rc, MRB_ARGS_NONE()); + mrb_define_method(mrb, klass, "rc=", ctx_set_rc, MRB_ARGS_REQ(1)); + mrb_define_method(mrb, klass, "error_level", ctx_get_error_level, + MRB_ARGS_NONE()); + mrb_define_method(mrb, klass, "error_level=", ctx_set_error_level, + MRB_ARGS_REQ(1)); + mrb_define_method(mrb, klass, "error_file", ctx_get_error_file, + MRB_ARGS_NONE()); + mrb_define_method(mrb, klass, "error_file=", ctx_set_error_file, + MRB_ARGS_REQ(1)); + mrb_define_method(mrb, klass, "error_line", ctx_get_error_line, + MRB_ARGS_NONE()); + mrb_define_method(mrb, klass, "error_line=", ctx_set_error_line, + MRB_ARGS_REQ(1)); + mrb_define_method(mrb, klass, "error_method", ctx_get_error_method, + MRB_ARGS_NONE()); + mrb_define_method(mrb, klass, "error_method=", ctx_set_error_method, + MRB_ARGS_REQ(1)); } #endif -------------- next part -------------- HTML����������������������������... 下载