mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Add new specifier c to mrb_get_args.
`C` retrieves a `mrb_value` that refers a class/module. `c` retrieves a `struct RClass*` pointer to a class/module.
This commit is contained in:
+17
@@ -587,6 +587,7 @@ void mrb_hash_check_kdict(mrb_state *mrb, mrb_value self);
|
||||
s: String [char*,mrb_int] Receive two arguments; s! gives (NULL,0) for nil
|
||||
z: String [char*] NUL terminated string; z! gives NULL for nil
|
||||
a: Array [mrb_value*,mrb_int] Receive two arguments; a! gives (NULL,0) for nil
|
||||
c: Class/Module [strcut RClass*]
|
||||
f: Fixnum/Float [mrb_float]
|
||||
i: Fixnum/Float [mrb_int]
|
||||
b: boolean [mrb_bool]
|
||||
@@ -713,6 +714,22 @@ mrb_get_args(mrb_state *mrb, const char *format, ...)
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'c':
|
||||
{
|
||||
struct RClass **p;
|
||||
|
||||
p = va_arg(ap, struct RClass**);
|
||||
if (i < argc) {
|
||||
mrb_value ss;
|
||||
|
||||
ss = argv[i++];
|
||||
if (!class_ptr_p(ss)) {
|
||||
mrb_raisef(mrb, E_TYPE_ERROR, "%v is not class/module", ss);
|
||||
}
|
||||
*p = mrb_class_ptr(ss);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'S':
|
||||
{
|
||||
mrb_value *p;
|
||||
|
||||
Reference in New Issue
Block a user