diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-09-05 14:54:14 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-09-05 14:55:49 +0900 |
| commit | a170c1dd7072120ba2c2cae8e1ed23bdd4b7b532 (patch) | |
| tree | c6b067c550d10e139b627381a749a1dec3c4aabb /mrbgems/mruby-sleep/src | |
| parent | 44fdd53f2e5bac6fe1cbc2ceb653aa5f2de965e6 (diff) | |
| download | mruby-a170c1dd7072120ba2c2cae8e1ed23bdd4b7b532.tar.gz mruby-a170c1dd7072120ba2c2cae8e1ed23bdd4b7b532.zip | |
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.
Diffstat (limited to 'mrbgems/mruby-sleep/src')
| -rw-r--r-- | mrbgems/mruby-sleep/src/mrb_sleep.c | 65 | ||||
| -rw-r--r-- | mrbgems/mruby-sleep/src/mrb_sleep.h | 12 |
2 files changed, 28 insertions, 49 deletions
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 |
