From 6bf63707812e17314a89eaff2bcb539fae6a09e4 Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Wed, 13 Jun 2012 23:53:57 +0900 Subject: new mrb_get_args specifier "n" to retrieve a symbol (stands for "name") --- src/class.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src') diff --git a/src/class.c b/src/class.c index 914785120..fe0a2b530 100644 --- a/src/class.c +++ b/src/class.c @@ -370,6 +370,7 @@ to_hash(mrb_state *mrb, mrb_value val) a: Array [mrb_value*,int] f: Float [mrb_float] i: Integer [mrb_int] + n: Symbol [mrb_sym] &: Block [mrb_value] *: rest argument [mrb_value*,int] |: optional @@ -560,6 +561,25 @@ mrb_get_args(mrb_state *mrb, const char *format, ...) } } break; + case 'n': + { + mrb_sym *symp; + + symp = va_arg(ap, mrb_sym*); + if (i < argc) { + mrb_value ss; + + ss = *sp++; + if (mrb_type(ss) == MRB_TT_SYMBOL) { + *symp = mrb_symbol(ss); + } + else { + *symp = mrb_intern_str(mrb, to_str(mrb, ss)); + } + i++; + } + } + break; case '&': { -- cgit v1.2.3