summaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2020-09-01 22:30:57 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2020-10-12 18:20:10 +0900
commit87c7064bad4fb9403ebf4b72be33f2dc51fa46db (patch)
tree83ac769e553a9270ec3983336dfadf2cd2b3eaab /include
parent4cf1da9542d6554ec23de6324c5f2d5eebe138c9 (diff)
downloadmruby-87c7064bad4fb9403ebf4b72be33f2dc51fa46db.tar.gz
mruby-87c7064bad4fb9403ebf4b72be33f2dc51fa46db.zip
Update `mrb_get_args()` keyword argument support [incompatible]
* `mrb_kwargs` structure reordered (`values` and `rest` come last) * take symbols instead of C `char*`
Diffstat (limited to 'include')
-rw-r--r--include/mruby.h16
1 files changed, 8 insertions, 8 deletions
diff --git a/include/mruby.h b/include/mruby.h
index e417dc840..72720496e 100644
--- a/include/mruby.h
+++ b/include/mruby.h
@@ -929,7 +929,7 @@ typedef const char *mrb_args_format;
* const char *kw_names[kw_num] = { "a", "b" };
* uint32_t kw_required = 0;
* mrb_value kw_values[kw_num];
- * const mrb_kwargs kwargs = { kw_num, kw_values, kw_names, kw_required, NULL };
+ * const mrb_kwargs kwargs = { kw_num, kw_required, kw_names, kw_values, NULL };
*
* mrb_get_args(mrb, ":", &kwargs);
* if (mrb_undef_p(kw_values[0])) { kw_values[0] = mrb_fixnum_value(1); }
@@ -940,10 +940,10 @@ typedef const char *mrb_args_format;
*
* mrb_value str, kw_rest;
* uint32_t kw_num = 3;
- * const char *kw_names[kw_num] = { "x", "y", "z" };
+ * const mrb_sym kw_names[kw_num] = { MRB_SYM(x), MRB_SYM(y), MRB_SYM(z) };
* uint32_t kw_required = 1;
* mrb_value kw_values[kw_num];
- * const mrb_kwargs kwargs = { kw_num, kw_values, kw_names, kw_required, &kw_rest };
+ * const mrb_kwargs kwargs = { kw_num, kw_required, kw_names, kw_values, &kw_rest };
*
* mrb_get_args(mrb, "S:", &str, &kwargs);
* // or: mrb_get_args(mrb, ":S", &kwargs, &str);
@@ -954,11 +954,11 @@ typedef struct mrb_kwargs mrb_kwargs;
struct mrb_kwargs
{
- uint32_t num;
- mrb_value *values;
- const char *const *table;
- uint32_t required;
- mrb_value *rest;
+ uint32_t num; /* number of keyword arguments */
+ uint32_t required; /* number of required keyword arguments */
+ mrb_sym *table; /* C array of symbols for keyword names */
+ mrb_value *values; /* keyword argument values */
+ mrb_value *rest; /* keyword rest (dict) */
};
/**