This is a port of the mruby/c tutorial Chapter 03 to the mbed environment.
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.
mrubyc/c_symbol.c
- Committer:
- tk_takateku
- Date:
- 2017-02-15
- Revision:
- 0:33feccbba3ff
File content as of revision 0:33feccbba3ff:
#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); }