diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-06-13 23:53:57 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-06-13 23:53:57 +0900 |
| commit | 6bf63707812e17314a89eaff2bcb539fae6a09e4 (patch) | |
| tree | 9b91947bdbb2c68171c2cd76cad6739387e1e364 /src/class.c | |
| parent | b3d83a79ea4b3817401f4f17c82763bf7b26dd74 (diff) | |
| download | mruby-6bf63707812e17314a89eaff2bcb539fae6a09e4.tar.gz mruby-6bf63707812e17314a89eaff2bcb539fae6a09e4.zip | |
new mrb_get_args specifier "n" to retrieve a symbol (stands for "name")
Diffstat (limited to 'src/class.c')
| -rw-r--r-- | src/class.c | 20 |
1 files changed, 20 insertions, 0 deletions
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 '&': { |
