summaryrefslogtreecommitdiffhomepage
path: root/include/mruby.h
diff options
context:
space:
mode:
authorKOBAYASHI Shuji <[email protected]>2019-04-09 18:23:11 +0900
committerKOBAYASHI Shuji <[email protected]>2019-04-09 18:23:11 +0900
commite3beef065c2de80a843f329599b424676d83086c (patch)
tree0c54fbf5e4f25febbc3bcf547427ba9c238b54ce /include/mruby.h
parentec1688807ef301483321919778b2ccb578822767 (diff)
downloadmruby-e3beef065c2de80a843f329599b424676d83086c.tar.gz
mruby-e3beef065c2de80a843f329599b424676d83086c.zip
Extract frozen checking to function
Diffstat (limited to 'include/mruby.h')
-rw-r--r--include/mruby.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/mruby.h b/include/mruby.h
index 5b0d84cd3..939601b4d 100644
--- a/include/mruby.h
+++ b/include/mruby.h
@@ -1143,6 +1143,7 @@ MRB_API mrb_noreturn void mrb_exc_raise(mrb_state *mrb, mrb_value exc);
MRB_API mrb_noreturn void mrb_raise(mrb_state *mrb, struct RClass *c, const char *msg);
MRB_API mrb_noreturn void mrb_raisef(mrb_state *mrb, struct RClass *c, const char *fmt, ...);
MRB_API mrb_noreturn void mrb_name_error(mrb_state *mrb, mrb_sym id, const char *fmt, ...);
+MRB_API mrb_noreturn void mrb_frozen_error(mrb_state *mrb, void *frozen_obj);
MRB_API void mrb_warn(mrb_state *mrb, const char *fmt, ...);
MRB_API mrb_noreturn void mrb_bug(mrb_state *mrb, const char *fmt, ...);
MRB_API void mrb_print_backtrace(mrb_state *mrb);
@@ -1196,6 +1197,11 @@ MRB_API mrb_value mrb_to_int(mrb_state *mrb, mrb_value val);
MRB_API mrb_value mrb_to_str(mrb_state *mrb, mrb_value val);
MRB_API void mrb_check_type(mrb_state *mrb, mrb_value x, enum mrb_vtype t);
+static inline void mrb_check_frozen(mrb_state *mrb, void *o)
+{
+ if (MRB_FROZEN_P((struct RBasic*)o)) mrb_frozen_error(mrb, o);
+}
+
typedef enum call_type {
CALL_PUBLIC,
CALL_FCALL,