mruby  2.0.1
mruby is the lightweight implementation of the Ruby language
Classes | Macros | Typedefs | Functions
proc.h File Reference

More...

#include "common.h"
#include <mruby/irep.h>
#include <mruby/khash.h>
Include dependency graph for proc.h:

Go to the source code of this file.

Classes

struct  REnv
 Proc class. More...
 
struct  RProc
 
struct  kh_mt
 

Macros

#define MRB_ENV_SET_STACK_LEN(e, len)   ((e)->flags = (((e)->flags & ~0x3ff)|((unsigned int)(len) & 0x3ff)))
 
#define MRB_ENV_STACK_LEN(e)   ((mrb_int)((e)->flags & 0x3ff))
 
#define MRB_ENV_STACK_UNSHARED   (1<<20)
 
#define MRB_ENV_UNSHARE_STACK(e)   ((e)->flags |= MRB_ENV_STACK_UNSHARED)
 
#define MRB_ENV_STACK_SHARED_P(e)   (((e)->flags & MRB_ENV_STACK_UNSHARED) == 0)
 
#define MRB_ENV_BIDX(e)   (((e)->flags >> 10) & 0x3ff)
 
#define MRB_ENV_SET_BIDX(e, idx)   ((e)->flags = (((e)->flags & ~(0x3ff<<10))|((unsigned int)(idx) & 0x3ff)<<10))
 
#define MRB_ASPEC_REQ(a)   (((a) >> 18) & 0x1f)
 
#define MRB_ASPEC_OPT(a)   (((a) >> 13) & 0x1f)
 
#define MRB_ASPEC_REST(a)   (((a) >> 12) & 0x1)
 
#define MRB_ASPEC_POST(a)   (((a) >> 7) & 0x1f)
 
#define MRB_ASPEC_KEY(a)   (((a) >> 2) & 0x1f)
 
#define MRB_ASPEC_KDICT(a)   ((a) & (1<<1))
 
#define MRB_ASPEC_BLOCK(a)   ((a) & 1)
 
#define MRB_PROC_CFUNC_FL   128
 
#define MRB_PROC_CFUNC_P(p)   (((p)->flags & MRB_PROC_CFUNC_FL) != 0)
 
#define MRB_PROC_CFUNC(p)   (p)->body.func
 
#define MRB_PROC_STRICT   256
 
#define MRB_PROC_STRICT_P(p)   (((p)->flags & MRB_PROC_STRICT) != 0)
 
#define MRB_PROC_ORPHAN   512
 
#define MRB_PROC_ORPHAN_P(p)   (((p)->flags & MRB_PROC_ORPHAN) != 0)
 
#define MRB_PROC_ENVSET   1024
 
#define MRB_PROC_ENV_P(p)   (((p)->flags & MRB_PROC_ENVSET) != 0)
 
#define MRB_PROC_ENV(p)   (MRB_PROC_ENV_P(p) ? (p)->e.env : NULL)
 
#define MRB_PROC_TARGET_CLASS(p)   (MRB_PROC_ENV_P(p) ? (p)->e.env->c : (p)->e.target_class)
 
#define MRB_PROC_SET_TARGET_CLASS(p, tc)
 
#define MRB_PROC_SCOPE   2048
 
#define MRB_PROC_SCOPE_P(p)   (((p)->flags & MRB_PROC_SCOPE) != 0)
 
#define mrb_proc_ptr(v)   ((struct RProc*)(mrb_ptr(v)))
 
#define mrb_cfunc_env_get(mrb, idx)   mrb_proc_cfunc_env_get(mrb, idx)
 
#define MRB_METHOD_FUNC_P(m)   ((m).func_p)
 
#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_PROC(m, pr)   do{(m).func_p=FALSE;(m).proc=(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_CFUNC_P(m)   (MRB_METHOD_FUNC_P(m)?TRUE:(MRB_METHOD_PROC(m)?(MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m))):FALSE))
 
#define MRB_METHOD_CFUNC(m)   (MRB_METHOD_FUNC_P(m)?MRB_METHOD_FUNC(m):((MRB_METHOD_PROC(m)&&MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m)))?MRB_PROC_CFUNC(MRB_METHOD_PROC(m)):NULL))
 

Typedefs

typedef struct kh_mt kh_mt_t
 

Functions

void mrb_env_unshare (mrb_state *, struct REnv *)
 
struct RProcmrb_proc_new (mrb_state *, mrb_irep *)
 
struct RProcmrb_closure_new (mrb_state *, mrb_irep *)
 
struct RProcmrb_proc_new_cfunc (mrb_state *, mrb_func_t)
 
struct RProcmrb_closure_new_cfunc (mrb_state *mrb, mrb_func_t func, int nlocals)
 
void mrb_proc_copy (struct RProc *a, struct RProc *b)
 
mrb_int mrb_proc_arity (const struct RProc *p)
 
mrb_value mrb_f_send (mrb_state *mrb, mrb_value self)
 
struct RProcmrb_proc_new_cfunc_with_env (mrb_state *, mrb_func_t, mrb_int, const mrb_value *)
 
mrb_value mrb_proc_cfunc_env_get (mrb_state *, mrb_int)
 
void kh_alloc_mt (mrb_state *mrb, kh_mt_t *h)
 
kh_mt_tkh_init_mt_size (mrb_state *mrb, khint_t size)
 
kh_mt_tkh_init_mt (mrb_state *mrb)
 
void kh_destroy_mt (mrb_state *mrb, kh_mt_t *h)
 
void kh_clear_mt (mrb_state *mrb, kh_mt_t *h)
 
khint_t kh_get_mt (mrb_state *mrb, kh_mt_t *h, mrb_sym key)
 
khint_t kh_put_mt (mrb_state *mrb, kh_mt_t *h, mrb_sym key, int *ret)
 
void kh_resize_mt (mrb_state *mrb, kh_mt_t *h, khint_t new_n_buckets)
 
void kh_del_mt (mrb_state *mrb, kh_mt_t *h, khint_t x)
 
kh_mt_tkh_copy_mt (mrb_state *mrb, kh_mt_t *h)
 

Detailed Description

See Copyright Notice in mruby.h

Macro Definition Documentation

◆ MRB_PROC_SET_TARGET_CLASS

#define MRB_PROC_SET_TARGET_CLASS (   p,
  tc 
)
Value:
do {\
if (MRB_PROC_ENV_P(p)) {\
(p)->e.env->c = (tc);\
mrb_field_write_barrier(mrb, (struct RBasic*)(p)->e.env, (struct RBasic*)(tc));\
}\
else {\
(p)->e.target_class = (tc);\
mrb_field_write_barrier(mrb, (struct RBasic*)p, (struct RBasic*)(tc));\
}\
} while (0)
Definition: object.h:19