From 49ae2a69f2c3acbb952406768320401cf1769425 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sat, 20 Jun 2020 12:49:46 +0900 Subject: Add `mrb_get_arg1()` that retrieves single (and only) argument. `mrb_get_arg1()` raises `ArgumentError` if the method does not receive one argument. And replaces all `mrb_get_args(mrb, "o", &arg)` by the new function. --- include/mruby.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'include') diff --git a/include/mruby.h b/include/mruby.h index fef4a0d47..5aba2934a 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -959,8 +959,21 @@ mrb_get_mid(mrb_state *mrb) /* get method symbol */ */ MRB_API mrb_int mrb_get_argc(mrb_state *mrb); +/** + * Retrieve an array of arguments from mrb_state. + * + * Correctly handles *splat arguments. + */ MRB_API mrb_value* mrb_get_argv(mrb_state *mrb); +/** + * Retrieve the first and only argument from mrb_state. + * Raises ArgumentError unless the number of arguments is exactly one. + * + * Correctly handles *splat arguments. + */ +MRB_API mrb_value mrb_get_arg1(mrb_state *mrb); + /* `strlen` for character string literals (use with caution or `strlen` instead) Adjacent string literals are concatenated in C/C++ in translation phase 6. If `lit` is not one, the compiler will report a syntax error: -- cgit v1.2.3