summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-print/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2013-03-23 08:30:03 -0700
committerYukihiro "Matz" Matsumoto <[email protected]>2013-03-23 08:30:03 -0700
commit6954153fa06630aa9aaf642f8f1221cddb01793a (patch)
tree20e4d43b0078807f58ca1e2b1a8e716fa614edac /mrbgems/mruby-print/src
parentf0ac204f21661d7f1dd2fbd1e3f08a95b81d0b21 (diff)
parentb69761e28623c88f142fbff92d7b361d1129ee5f (diff)
downloadmruby-6954153fa06630aa9aaf642f8f1221cddb01793a.tar.gz
mruby-6954153fa06630aa9aaf642f8f1221cddb01793a.zip
Merge pull request #1057 from mattn/mruby-print
mruby-print gem
Diffstat (limited to 'mrbgems/mruby-print/src')
-rw-r--r--mrbgems/mruby-print/src/print.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/mrbgems/mruby-print/src/print.c b/mrbgems/mruby-print/src/print.c
new file mode 100644
index 000000000..608e3cc2d
--- /dev/null
+++ b/mrbgems/mruby-print/src/print.c
@@ -0,0 +1,44 @@
+#include "mruby.h"
+#include "mruby/string.h"
+#include <stdio.h>
+
+static void
+printstr(mrb_state *mrb, mrb_value obj)
+{
+ struct RString *str;
+ char *s;
+ int len;
+
+ if (mrb_string_p(obj)) {
+ str = mrb_str_ptr(obj);
+ s = str->ptr;
+ len = str->len;
+ fwrite(s, len, 1, stdout);
+ }
+}
+
+/* 15.3.1.2.9 */
+/* 15.3.1.3.34 */
+mrb_value
+mrb_printstr(mrb_state *mrb, mrb_value self)
+{
+ mrb_value argv;
+
+ mrb_get_args(mrb, "o", &argv);
+ printstr(mrb, argv);
+
+ return argv;
+}
+
+void
+mrb_mruby_print_gem_init(mrb_state* mrb)
+{
+ struct RClass *krn;
+ krn = mrb->kernel_module;
+ mrb_define_method(mrb, krn, "__printstr__", mrb_printstr, ARGS_REQ(1));
+}
+
+void
+mrb_mruby_print_gem_final(mrb_state* mrb)
+{
+}