Refactor `mrb_method_t`.

parent a57b6f8e
...@@ -192,7 +192,7 @@ typedef mrb_value (*mrb_func_t)(struct mrb_state *mrb, mrb_value self); ...@@ -192,7 +192,7 @@ typedef mrb_value (*mrb_func_t)(struct mrb_state *mrb, mrb_value self);
typedef uintptr_t mrb_method_t; typedef uintptr_t mrb_method_t;
#else #else
typedef struct { typedef struct {
mrb_bool func_p; uint8_t flags;
union { union {
struct RProc *proc; struct RProc *proc;
mrb_func_t func; mrb_func_t func;
......
...@@ -110,10 +110,11 @@ MRB_API mrb_value mrb_proc_cfunc_env_get(mrb_state *mrb, mrb_int idx); ...@@ -110,10 +110,11 @@ MRB_API mrb_value mrb_proc_cfunc_env_get(mrb_state *mrb, mrb_int idx);
#else #else
#define MRB_METHOD_FUNC_P(m) ((m).func_p) #define MRB_METHOD_FUNC_FL 1
#define MRB_METHOD_FUNC_P(m) ((m).flags&MRB_METHOD_FUNC_FL)
#define MRB_METHOD_FUNC(m) ((m).func) #define MRB_METHOD_FUNC(m) ((m).func)
#define MRB_METHOD_FROM_FUNC(m,fn) do{(m).func_p=TRUE;(m).func=(fn);}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).func_p=FALSE;(m).proc=(pr);}while(0) #define MRB_METHOD_FROM_PROC(m,pr) do{(m).flags=0;(m).proc=(pr);}while(0)
#define MRB_METHOD_PROC_P(m) (!MRB_METHOD_FUNC_P(m)) #define MRB_METHOD_PROC_P(m) (!MRB_METHOD_FUNC_P(m))
#define MRB_METHOD_PROC(m) ((m).proc) #define MRB_METHOD_PROC(m) ((m).proc)
#define MRB_METHOD_UNDEF_P(m) ((m).proc==NULL) #define MRB_METHOD_UNDEF_P(m) ((m).proc==NULL)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment