void mrb_vm_cv_set(mrb_state *mrb, mrb_sym sym, mrb_value v) { struct RClass *c = mrb->c->ci->proc->target_class; if (!c) c = mrb->c->ci->target_class; mrb_mod_cv_set(mrb, c, sym, v); }
void mrb_vm_cv_set(mrb_state *mrb, mrb_sym sym, mrb_value v) { struct RClass *c; c = MRB_PROC_TARGET_CLASS(mrb->c->ci->proc); mrb_mod_cv_set(mrb, c, sym, v); }
void mrb_mruby_rtos_toppers_gem_init(mrb_state *mrb) { struct RClass *rtos; struct RClass *tsk; mrb_value wmd; mrb_value tmo; /* RTOS module */ rtos = mrb_define_module(mrb, "RTOS"); /* RTOS api */ mrb_define_module_function(mrb, rtos, "delay", mrb_rtos_delay, MRB_ARGS_REQ(1)); mrb_define_module_function(mrb, rtos, "millis", mrb_rtos_millis, MRB_ARGS_NONE()); wmd = mrb_hash_new(mrb); mrb_hash_set(mrb, wmd, mrb_symbol_value(mrb_intern_lit(mrb, "and")), mrb_fixnum_value(TWF_ANDW)); mrb_hash_set(mrb, wmd, mrb_symbol_value(mrb_intern_lit(mrb, "or")), mrb_fixnum_value(TWF_ORW)); mrb_mod_cv_set(mrb, rtos, mrb_intern_lit(mrb, "WAITMODE"), wmd); tmo = mrb_hash_new(mrb); mrb_hash_set(mrb, tmo, mrb_symbol_value(mrb_intern_lit(mrb, "polling")), mrb_fixnum_value(TMO_POL)); mrb_hash_set(mrb, tmo, mrb_symbol_value(mrb_intern_lit(mrb, "forever")), mrb_fixnum_value(TMO_FEVR)); mrb_mod_cv_set(mrb, rtos, mrb_intern_lit(mrb, "TIMEOUT"), tmo); /* Task class */ tsk = mrb_define_class_under(mrb, rtos, "Task", mrb->object_class); mrb_define_method(mrb, tsk, "initialize", mrb_task_init, MRB_ARGS_REQ(1)); mrb_define_method(mrb, tsk, "activate", mrb_task_activate, MRB_ARGS_NONE()); mrb_define_method(mrb, tsk, "suspend", mrb_task_suspend, MRB_ARGS_NONE()); mrb_define_method(mrb, tsk, "resume", mrb_task_resume, MRB_ARGS_NONE()); mrb_define_method(mrb, tsk, "terminate", mrb_task_terminate, MRB_ARGS_NONE()); /* EventFlag class */ mrb_rtos_flag_init(mrb, rtos); /* MemoryPool, MemoryBuffer */ mrb_rtos_memory_init(mrb, rtos); /* DataQueue */ mrb_rtos_dataqueue_init(mrb, rtos); }
void ruby_cocos2dx_experimental_video_VideoPlayer_EventType_enum_init(mrb_state* mrb, struct RClass* renum) { do { mrb_value ev = mrb_fixnum_value((mrb_int)cocos2d::experimental::ui::VideoPlayer::EventType::PLAYING); mrb_mod_cv_set(mrb, renum, mrb_intern_cstr(mrb, "PLAYING"), ev); } while (0); do { mrb_value ev = mrb_fixnum_value((mrb_int)cocos2d::experimental::ui::VideoPlayer::EventType::PAUSED); mrb_mod_cv_set(mrb, renum, mrb_intern_cstr(mrb, "PAUSED"), ev); } while (0); do { mrb_value ev = mrb_fixnum_value((mrb_int)cocos2d::experimental::ui::VideoPlayer::EventType::STOPPED); mrb_mod_cv_set(mrb, renum, mrb_intern_cstr(mrb, "STOPPED"), ev); } while (0); do { mrb_value ev = mrb_fixnum_value((mrb_int)cocos2d::experimental::ui::VideoPlayer::EventType::COMPLETED); mrb_mod_cv_set(mrb, renum, mrb_intern_cstr(mrb, "COMPLETED"), ev); } while (0); }
void mrb_ev3_lcd_init(mrb_state *mrb, struct RClass *ev3) { struct RClass *lcd; mrb_value lcdo; mrb_value font; mrb_value col; /* LCD class */ lcd = mrb_define_class_under(mrb, ev3, "LCD", mrb->object_class); lcdo = mrb_obj_value(lcd); font = mrb_hash_new(mrb); mrb_hash_set(mrb, font, mrb_symbol_value(mrb_intern_lit(mrb, "small")), mrb_fixnum_value(EV3_FONT_SMALL)); mrb_hash_set(mrb, font, mrb_symbol_value(mrb_intern_lit(mrb, "medium")), mrb_fixnum_value(EV3_FONT_MEDIUM)); mrb_const_set(mrb, lcdo, mrb_intern_lit(mrb, "FONT"), font); col = mrb_hash_new(mrb); mrb_hash_set(mrb, col, mrb_symbol_value(mrb_intern_lit(mrb, "white")), mrb_fixnum_value(EV3_LCD_WHITE)); mrb_hash_set(mrb, col, mrb_symbol_value(mrb_intern_lit(mrb, "black")), mrb_fixnum_value(EV3_LCD_BLACK)); mrb_const_set(mrb, lcdo, mrb_intern_lit(mrb, "COLOR"), col); mrb_const_set(mrb, lcdo, mrb_intern_lit(mrb, "WIDTH"), mrb_fixnum_value(EV3_LCD_WIDTH)); mrb_const_set(mrb, lcdo, mrb_intern_lit(mrb, "HEIGHT"), mrb_fixnum_value(EV3_LCD_HEIGHT)); mrb_mod_cv_set(mrb, lcd, mrb_intern_lit(mrb, "@@font"), mrb_fixnum_value(EV3_FONT_SMALL)); mrb_define_class_method(mrb, lcd, "font=", mrb_lcd_set_font, MRB_ARGS_REQ(1)); mrb_define_class_method(mrb, lcd, "draw", mrb_lcd_draw_string, MRB_ARGS_REQ(3)); mrb_define_method(mrb, lcd, "initialize", mrb_lcd_init, MRB_ARGS_OPT(6)); mrb_define_method(mrb, lcd, "print", mrb_lcd_print, MRB_ARGS_ANY()); mrb_define_method(mrb, lcd, "puts", mrb_lcd_puts, MRB_ARGS_ANY()); mrb_define_method(mrb, lcd, "locate", mrb_lcd_locate, MRB_ARGS_ARG(1, 1)); mrb_define_method(mrb, lcd, "clear", mrb_lcd_clear, MRB_ARGS_OPT(1)); mrb_define_method(mrb, lcd, "font", mrb_lcd_get_font, MRB_ARGS_NONE()); mrb_define_method(mrb, lcd, "left", mrb_lcd_get_left, MRB_ARGS_NONE()); mrb_define_method(mrb, lcd, "top", mrb_lcd_get_top, MRB_ARGS_NONE()); mrb_define_method(mrb, lcd, "width", mrb_lcd_get_width, MRB_ARGS_NONE()); mrb_define_method(mrb, lcd, "height", mrb_lcd_get_height, MRB_ARGS_NONE()); mrb_define_method(mrb, lcd, "cx", mrb_lcd_get_csrx, MRB_ARGS_NONE()); mrb_define_method(mrb, lcd, "cy", mrb_lcd_get_csry, MRB_ARGS_NONE()); mrb_define_method(mrb, lcd, "color", mrb_lcd_get_color, MRB_ARGS_NONE()); // mrb_undef_method(mrb, mrb->kernel_module, "__printstr__"); // mrb_define_method(mrb, mrb->kernel_module, "__printstr__", mrb_lcd_print, MRB_ARGS_ANY()); }
void mrb_cv_set(mrb_state *mrb, mrb_value mod, mrb_sym sym, mrb_value v) { mrb_mod_cv_set(mrb, mrb_class_ptr(mod), sym, v); }