Takashi Kawai
/
Nucleo_blink_led_for_mrubyc
This is a port of the mruby/c tutorial Chapter 03 to the mbed environment.
Embed:
(wiki syntax)
Show/hide line numbers
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
Generated on Tue Jul 12 2022 23:36:30 by 1.7.2