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.

Committer:
tk_takateku
Date:
Wed Feb 15 01:03:35 2017 +0000
Revision:
0:33feccbba3ff
Commit before publishing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tk_takateku 0:33feccbba3ff 1 #include <stddef.h>
tk_takateku 0:33feccbba3ff 2
tk_takateku 0:33feccbba3ff 3 #include "c_range.h"
tk_takateku 0:33feccbba3ff 4
tk_takateku 0:33feccbba3ff 5 #include "alloc.h"
tk_takateku 0:33feccbba3ff 6 #include "class.h"
tk_takateku 0:33feccbba3ff 7 #include "static.h"
tk_takateku 0:33feccbba3ff 8 #include "value.h"
tk_takateku 0:33feccbba3ff 9 #include "vm.h"
tk_takateku 0:33feccbba3ff 10
tk_takateku 0:33feccbba3ff 11
tk_takateku 0:33feccbba3ff 12 mrb_value mrbc_range_new(mrb_vm *vm, mrb_value *v_st, mrb_value *v_ed, int exclude)
tk_takateku 0:33feccbba3ff 13 {
tk_takateku 0:33feccbba3ff 14 mrb_value value;
tk_takateku 0:33feccbba3ff 15 value.tt = MRB_TT_RANGE;
tk_takateku 0:33feccbba3ff 16
tk_takateku 0:33feccbba3ff 17 mrb_value *ptr = (mrb_value*)mrbc_alloc(vm, sizeof(mrb_value)*3);
tk_takateku 0:33feccbba3ff 18 if( ptr == NULL ) return value; // ENOMEM
tk_takateku 0:33feccbba3ff 19
tk_takateku 0:33feccbba3ff 20 if( exclude ){
tk_takateku 0:33feccbba3ff 21 ptr[0].tt = MRB_TT_TRUE;
tk_takateku 0:33feccbba3ff 22 } else {
tk_takateku 0:33feccbba3ff 23 ptr[0].tt = MRB_TT_FALSE;
tk_takateku 0:33feccbba3ff 24 }
tk_takateku 0:33feccbba3ff 25 ptr[1] = *v_st;
tk_takateku 0:33feccbba3ff 26 ptr[2] = *v_ed;
tk_takateku 0:33feccbba3ff 27 value.value.range = ptr;
tk_takateku 0:33feccbba3ff 28
tk_takateku 0:33feccbba3ff 29 return value;
tk_takateku 0:33feccbba3ff 30 }
tk_takateku 0:33feccbba3ff 31
tk_takateku 0:33feccbba3ff 32
tk_takateku 0:33feccbba3ff 33
tk_takateku 0:33feccbba3ff 34
tk_takateku 0:33feccbba3ff 35 // init class
tk_takateku 0:33feccbba3ff 36 void mrbc_init_class_range(mrb_vm *vm)
tk_takateku 0:33feccbba3ff 37 {
tk_takateku 0:33feccbba3ff 38 mrbc_class_range = mrbc_class_alloc(vm, "Range", mrbc_class_object);
tk_takateku 0:33feccbba3ff 39
tk_takateku 0:33feccbba3ff 40
tk_takateku 0:33feccbba3ff 41 }
tk_takateku 0:33feccbba3ff 42