Skip to content

mrb_get_args

cremno edited this page Sep 11, 2013 · 2 revisions

mrb_get_args

Declaration Definition
mruby.h class.c
int mrb_get_args(mrb_state *mrb, const char *format, ...);

Retrieves arguments from a mrb_state.

Parameters

  • mrb: mruby VM state

  • format: pointer to a null-terminated string.

The following format specifiers are available:

Character Explanation Argument type
o Object mrb_value*
S String mrb_value*
A Array mrb_value*
H Hash mrb_value*
s char array (may include null byte!), length char**, int*
z null-terminated char array char**
a Array (elements, length) mrb_value**, mrb_int*
f Float mrb_float*
i Integer mrb_int*
b boolean mrb_bool*
n Symbol mrb_sym*
& block mrb_value*
  •     | rest (arguments, count)                     | ```mrb_value*```, ```int*```
    

Format specifiers after | are optional.

  • ...: receiving arguments

Return value

number of parsed arguments (greater than or equal to 0)

Example

#include <mruby.h>
#include <mruby/compile.h>

static mrb_value
test_method(mrb_state *mrb, mrb_value self)
{
  mrb_value o;
  mrb_int i = 38250574;
  int n = mrb_get_args(mrb, "o|i", &o, &i);
  mrb_p(mrb, o);
  mrb_p(mrb, mrb_fixnum_value(i));
  mrb_p(mrb, mrb_fixnum_value(n));
  return mrb_nil_value();
}

int
main(void)
{
  const char code[] =
    "test('Second argument is optional. Print default value and number of parsed arguments: ')\n" \
    "test('Second argument is optional. Print 123 and number of parsed arguments:', 123)";
  mrb_state *mrb = mrb_open();
  mrb_define_method(mrb, mrb->kernel_module, "test", test_method, MRB_ARGS_ARG(1, 1));
  mrb_gc_arena_restore(mrb, 0);
  mrb_load_string(mrb, code);
  mrb_close(mrb);
  return 0;
}

Output:

"Second argument is optional. Print default value and parsed arguments: "
38250574
1
"Second argument is optional. Print 123 and parsed arguments:"
123
2

See also

Clone this wiki locally