This is a port of the mruby/c tutorial Chapter 03 to the mbed environment.

Dependencies:   mbed

For details, refer to the following.

http://www.s-itoc.jp/activity/research/mrubyc/mrubyc_tutorial/436

Note:There is a change in rtt0.h from the original source in the mruby/c. It was necessary for inclusion in C ++ source.

Revision:
0:33feccbba3ff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mrubyc/c_symbol.c	Wed Feb 15 01:03:35 2017 +0000
@@ -0,0 +1,42 @@
+#include "c_symbol.h"
+
+#include "class.h"
+#include "static.h"
+#include "value.h"
+#include "symbol.h"
+
+static void c_symbol_to_s(mrb_vm *vm, mrb_value *v)
+{
+  v->tt = MRB_TT_STRING;
+
+  const char *sym = symid_to_str(v->value.i);
+  v->value.str = mrbc_string_dup(vm, sym);
+}
+
+static void c_symbol_to_sym(mrb_vm *vm, mrb_value *v)
+{
+  // nothing
+}
+
+static void c_symbol_equal(mrb_vm *vm, mrb_value *v)
+{
+  if( mrbc_eq(v, &GET_ARG(0)) ){
+    SET_TRUE_RETURN();
+  } else {
+    SET_FALSE_RETURN();
+  }
+}
+
+
+void mrbc_init_class_symbol(mrb_vm *vm)
+{
+  // Symbol
+  mrbc_class_symbol = mrbc_class_alloc(vm, "Symbol", mrbc_class_object);
+
+  mrbc_define_method(vm, mrbc_class_symbol, "to_s", c_symbol_to_s);
+  mrbc_define_method(vm, mrbc_class_symbol, "id2name", c_symbol_to_s);
+  mrbc_define_method(vm, mrbc_class_symbol, "to_sym", c_symbol_to_sym);
+  mrbc_define_method(vm, mrbc_class_symbol, "===", c_symbol_equal);
+}
+
+