mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
class.c: first step to private methods; #1835
Now each method entry holds visibility information in flag bits.
This commit is contained in:
@@ -79,6 +79,8 @@ mrb_class(mrb_state *mrb, mrb_value v)
|
||||
#define MRB_UNDEF_ALLOCATOR(c) (mrb_assert((c)->tt == MRB_TT_CLASS), (c)->flags |= MRB_FL_UNDEF_ALLOCATE)
|
||||
#define MRB_UNDEF_ALLOCATOR_P(c) ((c)->flags & MRB_FL_UNDEF_ALLOCATE)
|
||||
#define MRB_DEFINE_ALLOCATOR(c) ((c)->flags &= ~MRB_FL_UNDEF_ALLOCATE)
|
||||
#define MRB_SET_VISIBILITY(c,v) ((c)->flags = (((c)->flags & ~(0x3<<7)) | (((v)&0x3)<<7)))
|
||||
#define MRB_VISIBILITY(c) (((c)->flags>>7) & 0x3)
|
||||
|
||||
MRB_API void mrb_define_method_raw(mrb_state*, struct RClass*, mrb_sym, mrb_method_t);
|
||||
MRB_API void mrb_alias_method(mrb_state*, struct RClass *c, mrb_sym a, mrb_sym b);
|
||||
|
||||
@@ -109,10 +109,11 @@ MRB_API mrb_value mrb_proc_cfunc_env_get(mrb_state *mrb, mrb_int idx);
|
||||
/* old name */
|
||||
#define mrb_cfunc_env_get(mrb, idx) mrb_proc_cfunc_env_get(mrb, idx)
|
||||
|
||||
#define MRB_METHOD_FUNC_FL 1
|
||||
#define MRB_METHOD_NOARG_FL 2
|
||||
#define MRB_METHOD_PRIVATE_FL 4
|
||||
#define MRB_METHOD_PROTECTED_FL 8
|
||||
#define MRB_METHOD_FUNC_FL 8
|
||||
#define MRB_METHOD_NOARG_FL 4
|
||||
#define MRB_METHOD_PUBLIC_FL 0
|
||||
#define MRB_METHOD_PRIVATE_FL 1
|
||||
#define MRB_METHOD_PROTECTED_FL 2
|
||||
|
||||
#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)
|
||||
|
||||
Reference in New Issue
Block a user