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_range.c@0:33feccbba3ff, 2017-02-15 (annotated)
- Committer:
- tk_takateku
- Date:
- Wed Feb 15 01:03:35 2017 +0000
- Revision:
- 0:33feccbba3ff
Commit before publishing
Who changed what in which revision?
User | Revision | Line number | New 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 |