Ignore:
Timestamp:
Jul 9, 2020, 8:51:43 AM (4 years ago)
Author:
coas-nagasima
Message:

mrubyを2.1.1に更新

Location:
EcnlProtoTool/trunk/mruby-2.1.1
Files:
1 edited
1 moved

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/mruby-2.1.1/include/mruby/class.h

    r331 r439  
    1 /*
    2 ** mruby/class.h - Class class
     1/**
     2** @file mruby/class.h - Class class
    33**
    44** See Copyright Notice in mruby.h
     
    2323
    2424#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
    25 #define RCLASS_SUPER(v)     (((struct RClass*)(mrb_ptr(v)))->super)
    26 #define RCLASS_IV_TBL(v)    (((struct RClass*)(mrb_ptr(v)))->iv)
    27 #define RCLASS_M_TBL(v)     (((struct RClass*)(mrb_ptr(v)))->mt)
    2825
    29 static inline struct RClass*
     26MRB_INLINE struct RClass*
    3027mrb_class(mrb_state *mrb, mrb_value v)
    3128{
     
    4138  case MRB_TT_FIXNUM:
    4239    return mrb->fixnum_class;
     40#ifndef MRB_WITHOUT_FLOAT
    4341  case MRB_TT_FLOAT:
    4442    return mrb->float_class;
     43#endif
    4544  case MRB_TT_CPTR:
    4645    return mrb->object_class;
     
    5251}
    5352
    54 /* TODO: figure out where to put user flags */
    55 #define MRB_FLAG_IS_FROZEN (1 << 18)
    56 #define MRB_FLAG_IS_PREPENDED (1 << 19)
    57 #define MRB_FLAG_IS_ORIGIN (1 << 20)
     53/* flags:
     54   20: frozen
     55   19: is_prepended
     56   18: is_origin
     57   17: is_inherited (used by method cache)
     58   16: unused
     59   0-15: instance type
     60*/
     61#define MRB_FL_CLASS_IS_PREPENDED (1 << 19)
     62#define MRB_FL_CLASS_IS_ORIGIN (1 << 18)
    5863#define MRB_CLASS_ORIGIN(c) do {\
    59   if (c->flags & MRB_FLAG_IS_PREPENDED) {\
    60     c = c->super;\
    61     while (!(c->flags & MRB_FLAG_IS_ORIGIN)) {\
    62       c = c->super;\
     64  if ((c)->flags & MRB_FL_CLASS_IS_PREPENDED) {\
     65    (c) = (c)->super;\
     66    while (!((c)->flags & MRB_FL_CLASS_IS_ORIGIN)) {\
     67      (c) = (c)->super;\
    6368    }\
    6469  }\
    6570} while (0)
     71#define MRB_FL_CLASS_IS_INHERITED (1 << 17)
    6672#define MRB_INSTANCE_TT_MASK (0xFF)
    67 #define MRB_SET_INSTANCE_TT(c, tt) c->flags = ((c->flags & ~MRB_INSTANCE_TT_MASK) | (char)tt)
    68 #define MRB_INSTANCE_TT(c) (enum mrb_vtype)(c->flags & MRB_INSTANCE_TT_MASK)
     73#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
     74#define MRB_INSTANCE_TT(c) (enum mrb_vtype)((c)->flags & MRB_INSTANCE_TT_MASK)
    6975
    7076MRB_API struct RClass* mrb_define_class_id(mrb_state*, mrb_sym, struct RClass*);
    7177MRB_API struct RClass* mrb_define_module_id(mrb_state*, mrb_sym);
    72 MRB_API struct RClass *mrb_vm_define_class(mrb_state*, mrb_value, mrb_value, mrb_sym);
    73 MRB_API struct RClass *mrb_vm_define_module(mrb_state*, mrb_value, mrb_sym);
    74 MRB_API void mrb_define_method_raw(mrb_state*, struct RClass*, mrb_sym, struct RProc *);
     78struct RClass *mrb_vm_define_class(mrb_state*, mrb_value, mrb_value, mrb_sym);
     79struct RClass *mrb_vm_define_module(mrb_state*, mrb_value, mrb_sym);
     80MRB_API void mrb_define_method_raw(mrb_state*, struct RClass*, mrb_sym, mrb_method_t);
    7581MRB_API void mrb_define_method_id(mrb_state *mrb, struct RClass *c, mrb_sym mid, mrb_func_t func, mrb_aspec aspec);
    76 MRB_API void mrb_alias_method(mrb_state *mrb, struct RClass *c, mrb_sym a, mrb_sym b);
     82MRB_API void mrb_alias_method(mrb_state*, struct RClass *c, mrb_sym a, mrb_sym b);
    7783
    78 MRB_API struct RClass *mrb_class_outer_module(mrb_state*, struct RClass *);
    79 MRB_API struct RProc *mrb_method_search_vm(mrb_state*, struct RClass**, mrb_sym);
    80 MRB_API struct RProc *mrb_method_search(mrb_state*, struct RClass*, mrb_sym);
     84MRB_API mrb_method_t mrb_method_search_vm(mrb_state*, struct RClass**, mrb_sym);
     85MRB_API mrb_method_t mrb_method_search(mrb_state*, struct RClass*, mrb_sym);
    8186
    8287MRB_API struct RClass* mrb_class_real(struct RClass* cl);
     88mrb_value mrb_instance_new(mrb_state *mrb, mrb_value cv);
    8389
     90void mrb_class_name_class(mrb_state*, struct RClass*, struct RClass*, mrb_sym);
     91mrb_bool mrb_const_name_p(mrb_state*, const char*, mrb_int);
     92mrb_value mrb_class_find_path(mrb_state*, struct RClass*);
     93mrb_value mrb_mod_to_s(mrb_state*, mrb_value);
    8494void mrb_gc_mark_mt(mrb_state*, struct RClass*);
    8595size_t mrb_gc_mark_mt_size(mrb_state*, struct RClass*);
    8696void mrb_gc_free_mt(mrb_state*, struct RClass*);
    8797
     98#ifdef MRB_METHOD_CACHE
     99void mrb_mc_clear_by_class(mrb_state *mrb, struct RClass* c);
     100#else
     101#define mrb_mc_clear_by_class(mrb,c)
     102#endif
     103
    88104MRB_END_DECL
    89105
Note: See TracChangeset for help on using the changeset viewer.