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

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers c_symbol.c Source File

c_symbol.c

00001 #include "c_symbol.h "
00002 
00003 #include "class.h "
00004 #include "static.h"
00005 #include "value.h "
00006 #include "symbol.h"
00007 
00008 static void c_symbol_to_s(mrb_vm *vm, mrb_value *v)
00009 {
00010   v->tt = MRB_TT_STRING;
00011 
00012   const char *sym = symid_to_str (v->value.i);
00013   v->value.str = mrbc_string_dup(vm, sym);
00014 }
00015 
00016 static void c_symbol_to_sym(mrb_vm *vm, mrb_value *v)
00017 {
00018   // nothing
00019 }
00020 
00021 static void c_symbol_equal(mrb_vm *vm, mrb_value *v)
00022 {
00023   if( mrbc_eq(v, &GET_ARG(0)) ){
00024     SET_TRUE_RETURN();
00025   } else {
00026     SET_FALSE_RETURN();
00027   }
00028 }
00029 
00030 
00031 void mrbc_init_class_symbol(mrb_vm *vm)
00032 {
00033   // Symbol
00034   mrbc_class_symbol = mrbc_class_alloc(vm, "Symbol", mrbc_class_object);
00035 
00036   mrbc_define_method(vm, mrbc_class_symbol, "to_s", c_symbol_to_s);
00037   mrbc_define_method(vm, mrbc_class_symbol, "id2name", c_symbol_to_s);
00038   mrbc_define_method(vm, mrbc_class_symbol, "to_sym", c_symbol_to_sym);
00039   mrbc_define_method(vm, mrbc_class_symbol, "===", c_symbol_equal);
00040 }
00041 
00042