Ruby  1.9.3p448(2013-06-27revision41675)
Data Structures | Macros | Typedefs | Enumerations | Functions
method.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  rb_method_cfunc_struct
 
struct  rb_method_attr_struct
 
struct  rb_method_definition_struct
 
struct  rb_method_entry_struct
 
struct  unlinked_method_entry_list_entry
 

Macros

#define NOEX_SAFE(n)   ((int)((n) >> 8) & 0x0F)
 
#define NOEX_WITH(n, s)   (((s) << 8) | (n) | (ruby_running ? 0 : NOEX_BASIC))
 
#define NOEX_WITH_SAFE(n)   NOEX_WITH((n), rb_safe_level())
 
#define UNDEFINED_METHOD_ENTRY_P(me)   (!(me) || !(me)->def || (me)->def->type == VM_METHOD_TYPE_UNDEF)
 

Typedefs

typedef struct
rb_method_cfunc_struct 
rb_method_cfunc_t
 
typedef struct
rb_method_attr_struct 
rb_method_attr_t
 
typedef struct rb_iseq_struct rb_iseq_t
 
typedef struct
rb_method_definition_struct 
rb_method_definition_t
 
typedef struct
rb_method_entry_struct 
rb_method_entry_t
 

Enumerations

enum  rb_method_flag_t {
  NOEX_PUBLIC = 0x00, NOEX_NOSUPER = 0x01, NOEX_PRIVATE = 0x02, NOEX_PROTECTED = 0x04,
  NOEX_MASK = 0x06, NOEX_BASIC = 0x08, NOEX_UNDEF = NOEX_NOSUPER, NOEX_MODFUNC = 0x12,
  NOEX_SUPER = 0x20, NOEX_VCALL = 0x40, NOEX_RESPONDS = 0x80
}
 
enum  rb_method_type_t {
  VM_METHOD_TYPE_ISEQ, VM_METHOD_TYPE_CFUNC, VM_METHOD_TYPE_ATTRSET, VM_METHOD_TYPE_IVAR,
  VM_METHOD_TYPE_BMETHOD, VM_METHOD_TYPE_ZSUPER, VM_METHOD_TYPE_UNDEF, VM_METHOD_TYPE_NOTIMPLEMENTED,
  VM_METHOD_TYPE_OPTIMIZED, VM_METHOD_TYPE_MISSING
}
 

Functions

void rb_add_method_cfunc (VALUE klass, ID mid, VALUE(*func)(ANYARGS), int argc, rb_method_flag_t noex)
 
rb_method_entry_trb_add_method (VALUE klass, ID mid, rb_method_type_t type, void *option, rb_method_flag_t noex)
 
rb_method_entry_trb_method_entry (VALUE klass, ID id)
 
rb_method_entry_trb_method_entry_get_without_cache (VALUE klass, ID id)
 
rb_method_entry_trb_method_entry_set (VALUE klass, ID mid, const rb_method_entry_t *, rb_method_flag_t noex)
 
int rb_method_entry_arity (const rb_method_entry_t *me)
 
int rb_method_entry_eq (const rb_method_entry_t *m1, const rb_method_entry_t *m2)
 
void rb_mark_method_entry (const rb_method_entry_t *me)
 
void rb_free_method_entry (rb_method_entry_t *me)
 
void rb_sweep_method_entry (void *vm)
 
void rb_free_m_table (st_table *tbl)
 

Macro Definition Documentation

#define NOEX_SAFE (   n)    ((int)((n) >> 8) & 0x0F)

Definition at line 28 of file method.h.

Referenced by rb_method_call_status(), and vm_call_method().

#define NOEX_WITH (   n,
 
)    (((s) << 8) | (n) | (ruby_running ? 0 : NOEX_BASIC))

Definition at line 29 of file method.h.

#define NOEX_WITH_SAFE (   n)    NOEX_WITH((n), rb_safe_level())

Definition at line 30 of file method.h.

Referenced by rb_method_entry_make().

#define UNDEFINED_METHOD_ENTRY_P (   me)    (!(me) || !(me)->def || (me)->def->type == VM_METHOD_TYPE_UNDEF)

Typedef Documentation

typedef struct rb_iseq_struct rb_iseq_t

Definition at line 57 of file method.h.

Enumeration Type Documentation

Enumerator
NOEX_PUBLIC 
NOEX_NOSUPER 
NOEX_PRIVATE 
NOEX_PROTECTED 
NOEX_MASK 
NOEX_BASIC 
NOEX_UNDEF 
NOEX_MODFUNC 
NOEX_SUPER 
NOEX_VCALL 
NOEX_RESPONDS 

Definition at line 14 of file method.h.

Enumerator
VM_METHOD_TYPE_ISEQ 
VM_METHOD_TYPE_CFUNC 
VM_METHOD_TYPE_ATTRSET 
VM_METHOD_TYPE_IVAR 
VM_METHOD_TYPE_BMETHOD 
VM_METHOD_TYPE_ZSUPER 
VM_METHOD_TYPE_UNDEF 
VM_METHOD_TYPE_NOTIMPLEMENTED 
VM_METHOD_TYPE_OPTIMIZED 
VM_METHOD_TYPE_MISSING 

Definition at line 34 of file method.h.

Function Documentation

rb_method_entry_t* rb_add_method ( VALUE  klass,
ID  mid,
rb_method_type_t  type,
void *  option,
rb_method_flag_t  noex 
)
void rb_add_method_cfunc ( VALUE  klass,
ID  mid,
VALUE(*)(ANYARGS func,
int  argc,
rb_method_flag_t  noex 
)
void rb_free_m_table ( st_table tbl)

Definition at line 1695 of file gc.c.

References free_method_entry_i(), st_foreach, and st_free_table.

Referenced by obj_free(), and rb_mod_init_copy().

void rb_free_method_entry ( rb_method_entry_t me)
void rb_mark_method_entry ( const rb_method_entry_t me)

Definition at line 1663 of file gc.c.

References mark_method_entry().

Referenced by bm_mark(), and rb_gc_mark_unlinked_live_method_entries().

rb_method_entry_t* rb_method_entry ( VALUE  klass,
ID  id 
)
int rb_method_entry_arity ( const rb_method_entry_t me)
int rb_method_entry_eq ( const rb_method_entry_t m1,
const rb_method_entry_t m2 
)

Definition at line 848 of file vm_method.c.

References rb_method_entry_struct::def, and rb_method_definition_eq().

Referenced by method_eq().

rb_method_entry_t* rb_method_entry_get_without_cache ( VALUE  klass,
ID  id 
)
rb_method_entry_t* rb_method_entry_set ( VALUE  klass,
ID  mid,
const rb_method_entry_t ,
rb_method_flag_t  noex 
)
void rb_sweep_method_entry ( void *  vm)