summaryrefslogtreecommitdiffhomepage
path: root/src/class.c
diff options
context:
space:
mode:
authordearblue <[email protected]>2021-06-19 15:08:09 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2021-06-19 21:15:02 +0900
commitc40802865a756f97ec8ffbd2361864b1fa291d4e (patch)
tree48dd585ab8eeb33124042b3be52bd4493600332c /src/class.c
parent43eddfd4d52a1c21fb248b979fbcc7321fabe73b (diff)
downloadmruby-c40802865a756f97ec8ffbd2361864b1fa291d4e.tar.gz
mruby-c40802865a756f97ec8ffbd2361864b1fa291d4e.zip
Added `MRB_API` function to get block arguments info.
- ` mrb_block_given_p()` -- The name comes from CRuby's `rb_block_given_p ()` At the same time, it applies to `f_instance_eval()` and `f_class_eval()` of `mruby-eval`.
Diffstat (limited to 'src/class.c')
-rw-r--r--src/class.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/class.c b/src/class.c
index f02e280ef..f9474815e 100644
--- a/src/class.c
+++ b/src/class.c
@@ -859,6 +859,17 @@ mrb_get_arg1(mrb_state *mrb)
return array_argv[0];
}
+MRB_API mrb_bool
+mrb_block_given_p(mrb_state *mrb)
+{
+ const mrb_callinfo *ci = mrb->c->ci;
+ int argc = ci->argc;
+ int idx = (argc < 0) ? 2 : argc + 1;
+ mrb_value b = ci->stack[idx];
+
+ return !mrb_nil_p(b);
+}
+
void mrb_hash_check_kdict(mrb_state *mrb, mrb_value self);
/*