diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-08-14 16:50:52 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-08-14 16:50:52 +0900 |
| commit | b7d6b4d0ce388599b36cacd42069944c326d2582 (patch) | |
| tree | 3a4756be851a1a0fc056ab6e1312e0bf48503a47 | |
| parent | 0dfda0c9704a0375705cf401ccda6b277bc68bed (diff) | |
| download | mruby-b7d6b4d0ce388599b36cacd42069944c326d2582.tar.gz mruby-b7d6b4d0ce388599b36cacd42069944c326d2582.zip | |
define allocation method for Time class; close #1474
| -rw-r--r-- | mrbgems/mruby-time/src/time.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/mrbgems/mruby-time/src/time.c b/mrbgems/mruby-time/src/time.c index 0273f2b27..07e10e2c6 100644 --- a/mrbgems/mruby-time/src/time.c +++ b/mrbgems/mruby-time/src/time.c @@ -147,7 +147,7 @@ mrb_time_wrap(mrb_state *mrb, struct RClass *tc, struct mrb_time *tm) /* Allocates a mrb_time object and initializes it. */ static struct mrb_time* -mrb_time_alloc(mrb_state *mrb, double sec, double usec, enum mrb_timezone timezone) +time_alloc(mrb_state *mrb, double sec, double usec, enum mrb_timezone timezone) { struct mrb_time *tm; @@ -171,7 +171,14 @@ mrb_time_alloc(mrb_state *mrb, double sec, double usec, enum mrb_timezone timezo static mrb_value mrb_time_make(mrb_state *mrb, struct RClass *c, double sec, double usec, enum mrb_timezone timezone) { - return mrb_time_wrap(mrb, c, mrb_time_alloc(mrb, sec, usec, timezone)); + return mrb_time_wrap(mrb, c, time_alloc(mrb, sec, usec, timezone)); +} + +/* Allocates a mrb_time object and initializes it. */ +static mrb_value +mrb_time_alloc(mrb_state *mrb, mrb_value cv) +{ + return mrb_time_make(mrb, mrb_class_ptr(cv), 0, 0, MRB_TIMEZONE_NONE); } static struct mrb_time* @@ -253,7 +260,7 @@ time_mktime(mrb_state *mrb, mrb_int ayear, mrb_int amonth, mrb_int aday, mrb_raise(mrb, E_ARGUMENT_ERROR, "Not a valid time."); } - return mrb_time_alloc(mrb, nowsecs, ausec, timezone); + return time_alloc(mrb, nowsecs, ausec, timezone); } /* 15.2.19.6.2 */ @@ -685,6 +692,7 @@ mrb_mruby_time_gem_init(mrb_state* mrb) tc = mrb_define_class(mrb, "Time", mrb->object_class); MRB_SET_INSTANCE_TT(tc, MRB_TT_DATA); mrb_include_module(mrb, tc, mrb_class_get(mrb, "Comparable")); + mrb_define_class_method(mrb, tc, "alloc", mrb_time_alloc, MRB_ARGS_NONE()); mrb_define_class_method(mrb, tc, "at", mrb_time_at, MRB_ARGS_ANY()); /* 15.2.19.6.1 */ mrb_define_class_method(mrb, tc, "gm", mrb_time_gm, MRB_ARGS_ARG(1,6)); /* 15.2.19.6.2 */ mrb_define_class_method(mrb, tc, "local", mrb_time_local, MRB_ARGS_ARG(1,6)); /* 15.2.19.6.3 */ |
