summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--include/mruby.h3
-rw-r--r--mrbgems/mruby-time/src/time.c12
2 files changed, 9 insertions, 6 deletions
diff --git a/include/mruby.h b/include/mruby.h
index 5a9e2e359..88ab12b05 100644
--- a/include/mruby.h
+++ b/include/mruby.h
@@ -173,6 +173,9 @@ struct RClass * mrb_define_module_under(mrb_state *mrb, struct RClass *outer, co
#define MRB_ARGS_REQ(n) ((mrb_aspec)((n)&0x1f) << 19)
/* optional arguments */
#define MRB_ARGS_OPT(n) ((mrb_aspec)((n)&0x1f) << 14)
+/* mandatory and optinal arguments */
+#define MRB_ARGS_ARG(n1,n2) (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
+
/* rest argument */
#define MRB_ARGS_REST() ((mrb_aspec)(1 << 13))
/* required arguments after rest */
diff --git a/mrbgems/mruby-time/src/time.c b/mrbgems/mruby-time/src/time.c
index 2a1238586..6a44590a8 100644
--- a/mrbgems/mruby-time/src/time.c
+++ b/mrbgems/mruby-time/src/time.c
@@ -691,12 +691,12 @@ 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, "at", mrb_time_at, MRB_ARGS_ANY()); /* 15.2.19.6.1 */
- mrb_define_class_method(mrb, tc, "gm", mrb_time_gm, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(6)); /* 15.2.19.6.2 */
- mrb_define_class_method(mrb, tc, "local", mrb_time_local, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(6)); /* 15.2.19.6.3 */
- mrb_define_class_method(mrb, tc, "mktime", mrb_time_local, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(6));/* 15.2.19.6.4 */
- mrb_define_class_method(mrb, tc, "now", mrb_time_now, MRB_ARGS_NONE()); /* 15.2.19.6.5 */
- mrb_define_class_method(mrb, tc, "utc", mrb_time_gm, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(6)); /* 15.2.19.6.6 */
+ 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 */
+ mrb_define_class_method(mrb, tc, "mktime", mrb_time_local, MRB_ARGS_ARG(1,6));/* 15.2.19.6.4 */
+ mrb_define_class_method(mrb, tc, "now", mrb_time_now, MRB_ARGS_NONE()); /* 15.2.19.6.5 */
+ mrb_define_class_method(mrb, tc, "utc", mrb_time_gm, MRB_ARGS_ARG(1,6)); /* 15.2.19.6.6 */
mrb_define_method(mrb, tc, "==" , mrb_time_eq , MRB_ARGS_REQ(1));
mrb_define_method(mrb, tc, "<=>" , mrb_time_cmp , MRB_ARGS_REQ(1)); /* 15.2.19.7.1 */