define allocation method for Time class; close #1474

parent 0dfda0c9
......@@ -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 */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment