From a170c1dd7072120ba2c2cae8e1ed23bdd4b7b532 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Wed, 5 Sep 2018 14:54:14 +0900 Subject: Refactored `mruby-sleep` gem. * Method implementation functions made `static`. * Function declaration style has been changed. * Unnecessary header file `mrb_sleep.h` removed. * Used `mrb_get_args()` instead of self parsing. * Indentation kept untouched. --- mrbgems/mruby-sleep/src/mrb_sleep.c | 65 ++++++++++++++++--------------------- mrbgems/mruby-sleep/src/mrb_sleep.h | 12 ------- 2 files changed, 28 insertions(+), 49 deletions(-) delete mode 100644 mrbgems/mruby-sleep/src/mrb_sleep.h diff --git a/mrbgems/mruby-sleep/src/mrb_sleep.c b/mrbgems/mruby-sleep/src/mrb_sleep.c index b711dd5c9..19a4f082f 100644 --- a/mrbgems/mruby-sleep/src/mrb_sleep.c +++ b/mrbgems/mruby-sleep/src/mrb_sleep.c @@ -37,25 +37,17 @@ #include "mruby.h" -mrb_value mrb_f_sleep_sleep(mrb_state *mrb, mrb_value self) -{ +static mrb_value +mrb_f_sleep(mrb_state *mrb, mrb_value self) +{ time_t beg, end; - mrb_value *argv; - mrb_int argc; - int iargc; - + mrb_int sec; + beg = time(0); - mrb_get_args(mrb, "*", &argv, &argc); - - iargc = (int)argc; - /* not implemented forever sleep (called without an argument)*/ - if (iargc == 0 || iargc >= 2) { - mrb_raise(mrb, E_ARGUMENT_ERROR, "wrong number of arguments"); - } - - if (mrb_fixnum_p(argv[0]) && mrb_fixnum(argv[0]) >= 0) { - sleep(mrb_fixnum(argv[0])); + mrb_get_args(mrb, "i", &sec); + if (sec >= 0) { + sleep(sec); } else { mrb_raise(mrb, E_ARGUMENT_ERROR, "time interval must be positive integer"); } @@ -64,10 +56,10 @@ mrb_value mrb_f_sleep_sleep(mrb_state *mrb, mrb_value self) return mrb_fixnum_value(end); } -mrb_value mrb_f_usleep_usleep(mrb_state *mrb, mrb_value self) -{ - mrb_int argc; - mrb_value *argv; +static mrb_value +mrb_f_usleep(mrb_state *mrb, mrb_value self) +{ + mrb_int usec; #ifdef _WIN32 FILETIME st_ft,ed_ft; unsigned __int64 st_time = 0; @@ -80,18 +72,14 @@ mrb_value mrb_f_usleep_usleep(mrb_state *mrb, mrb_value self) #ifdef _WIN32 GetSystemTimeAsFileTime(&st_ft); #else - gettimeofday( &st_tm, NULL ); + gettimeofday(&st_tm, NULL); #endif - mrb_get_args(mrb, "*", &argv, &argc); - /* not implemented forever sleep (called without an argument)*/ - if(argc == 0 || argc >= 2) { - mrb_raise(mrb, E_ARGUMENT_ERROR, "wrong number of arguments"); - } + mrb_get_args(mrb, "i", &usec); - if (mrb_fixnum_p(argv[0]) && mrb_fixnum(argv[0]) >= 0) { - usleep(mrb_fixnum(argv[0])); + if (usec >= 0) { + usleep(usec); } else { mrb_raise(mrb, E_ARGUMENT_ERROR, "time interval must be positive integer"); } @@ -108,11 +96,12 @@ mrb_value mrb_f_usleep_usleep(mrb_state *mrb, mrb_value self) slp_tm = (ed_time - st_time) / 10; #else - gettimeofday( &ed_tm, NULL ); + gettimeofday(&ed_tm, NULL); - if ( st_tm.tv_usec > ed_tm.tv_usec ) { + if (st_tm.tv_usec > ed_tm.tv_usec) { slp_tm = 1000000 + ed_tm.tv_usec - st_tm.tv_usec; - } else { + } + else { slp_tm = ed_tm.tv_usec - st_tm.tv_usec; } #endif @@ -120,18 +109,20 @@ mrb_value mrb_f_usleep_usleep(mrb_state *mrb, mrb_value self) return mrb_fixnum_value(slp_tm); } -void mrb_mruby_sleep_gem_init(mrb_state *mrb) +void +mrb_mruby_sleep_gem_init(mrb_state *mrb) { struct RClass *sleep; sleep = mrb_define_module(mrb, "Sleep"); - mrb_define_class_method(mrb, sleep, "sleep", mrb_f_sleep_sleep, MRB_ARGS_REQ(1)); - mrb_define_class_method(mrb, sleep, "usleep", mrb_f_usleep_usleep, MRB_ARGS_REQ(1)); + mrb_define_class_method(mrb, sleep, "sleep", mrb_f_sleep, MRB_ARGS_REQ(1)); + mrb_define_class_method(mrb, sleep, "usleep", mrb_f_usleep, MRB_ARGS_REQ(1)); - mrb_define_method(mrb, mrb->kernel_module, "sleep", mrb_f_sleep_sleep, MRB_ARGS_REQ(1)); - mrb_define_method(mrb, mrb->kernel_module, "usleep", mrb_f_usleep_usleep, MRB_ARGS_REQ(1)); + mrb_define_method(mrb, mrb->kernel_module, "sleep", mrb_f_sleep, MRB_ARGS_REQ(1)); + mrb_define_method(mrb, mrb->kernel_module, "usleep", mrb_f_usleep, MRB_ARGS_REQ(1)); } -void mrb_mruby_sleep_gem_final(mrb_state *mrb) +void +mrb_mruby_sleep_gem_final(mrb_state *mrb) { } diff --git a/mrbgems/mruby-sleep/src/mrb_sleep.h b/mrbgems/mruby-sleep/src/mrb_sleep.h deleted file mode 100644 index bf71d91f4..000000000 --- a/mrbgems/mruby-sleep/src/mrb_sleep.h +++ /dev/null @@ -1,12 +0,0 @@ -/* -// mrb_sleep.h - to provide sleep methods -// -// See Copyright Notice in mrb_sleep.c -*/ - -#ifndef MRB_SLEEP_H -#define MRB_SLEEP_H - -void mrb_mruby_sleep_gem_init(mrb_state *mrb); - -#endif -- cgit v1.2.3