ruby/env.h

92 строки
1.6 KiB
C

/**********************************************************************
env.h -
$Author$
$Date$
created at: Mon Jul 11 11:53:03 JST 1994
Copyright (C) 1993-2003 Yukihiro Matsumoto
**********************************************************************/
#ifndef ENV_H
#define ENV_H
RUBY_EXTERN struct FRAME {
VALUE self;
int argc;
ID callee;
ID this_func;
VALUE this_class;
struct FRAME *prev;
struct FRAME *tmp;
struct RNode *node;
int iter;
int flags;
unsigned long uniq;
} *ruby_frame;
void rb_gc_mark_frame(struct FRAME *);
#define FRAME_DMETH 1
#define FRAME_FUNC 2
RUBY_EXTERN struct SCOPE {
struct RBasic super;
ID *local_tbl;
VALUE *local_vars;
int flags;
} *ruby_scope;
#define SCOPE_ALLOCA 0
#define SCOPE_MALLOC 1
#define SCOPE_NOSTACK 2
#define SCOPE_DONT_RECYCLE 4
RUBY_EXTERN int ruby_in_eval;
RUBY_EXTERN VALUE ruby_class;
struct RVarmap {
struct RBasic super;
ID id;
VALUE val;
struct RVarmap *next;
};
RUBY_EXTERN struct RVarmap *ruby_dyna_vars;
struct METHOD {
VALUE klass, rklass;
VALUE recv;
ID id, oid;
int safe_level;
struct RNode *body;
};
struct BLOCK {
struct RNode *var;
struct RNode *body;
VALUE self;
struct FRAME frame;
struct SCOPE *scope;
VALUE klass;
struct RNode *cref;
int iter;
int vmode;
int flags;
int uniq;
struct RVarmap *dyna_vars;
VALUE orig_thread;
VALUE wrapper;
VALUE block_obj;
struct BLOCK *outer;
struct BLOCK *prev;
};
#define BLOCK_D_SCOPE 1
#define BLOCK_LAMBDA 2
#define BLOCK_FROM_METHOD 4
#endif /* ENV_H */