diff --git a/include/mruby.h b/include/mruby.h index 3b4a1fc72..0dd08cf26 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -236,7 +236,7 @@ typedef struct { union { struct RProc *proc; mrb_func_t func; - }; + } as; } mrb_method_t; #ifndef MRB_NO_METHOD_CACHE diff --git a/include/mruby/proc.h b/include/mruby/proc.h index aba08c183..7feb9ef04 100644 --- a/include/mruby/proc.h +++ b/include/mruby/proc.h @@ -114,13 +114,13 @@ MRB_API mrb_value mrb_proc_cfunc_env_get(mrb_state *mrb, mrb_int idx); #define MRB_METHOD_FUNC_P(m) ((m).flags&MRB_METHOD_FUNC_FL) #define MRB_METHOD_NOARG_P(m) (((m).flags&MRB_METHOD_NOARG_FL)?1:0) -#define MRB_METHOD_FUNC(m) ((m).func) +#define MRB_METHOD_FUNC(m) ((m).as.func) #define MRB_METHOD_NOARG_SET(m) do{(m).flags|=MRB_METHOD_NOARG_FL;}while(0) -#define MRB_METHOD_FROM_FUNC(m,fn) do{(m).flags=MRB_METHOD_FUNC_FL;(m).func=(fn);}while(0) -#define MRB_METHOD_FROM_PROC(m,pr) do{(m).flags=0;(m).proc=(struct RProc*)(pr);}while(0) +#define MRB_METHOD_FROM_FUNC(m,fn) do{(m).flags=MRB_METHOD_FUNC_FL;(m).as.func=(fn);}while(0) +#define MRB_METHOD_FROM_PROC(m,pr) do{(m).flags=0;(m).as.proc=(struct RProc*)(pr);}while(0) #define MRB_METHOD_PROC_P(m) (!MRB_METHOD_FUNC_P(m)) -#define MRB_METHOD_PROC(m) ((m).proc) -#define MRB_METHOD_UNDEF_P(m) ((m).proc==NULL) +#define MRB_METHOD_PROC(m) ((m).as.proc) +#define MRB_METHOD_UNDEF_P(m) ((m).as.proc==NULL) #define MRB_METHOD_CFUNC_P(m) (MRB_METHOD_FUNC_P(m) || (MRB_METHOD_PROC(m)?(MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m))):FALSE)) /* use MRB_METHOD_CFUNC(m) only when MRB_METHOD_CFUNC_P(m) is true */