[Groonga-commit] groonga/groonga at 7e599b3 [master] mrb: bind grn_ctx_output_*()

Back to archive index

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 



More information about the Groonga-commit mailing list
Back to archive index