mruby  2.0.1
mruby is the lightweight implementation of the Ruby language
variable.h
Go to the documentation of this file.
1 
7 #ifndef MRUBY_VARIABLE_H
8 #define MRUBY_VARIABLE_H
9 
10 #include "common.h"
11 
16 
17 typedef struct global_variable {
18  int counter;
19  mrb_value *data;
20  mrb_value (*getter)(void);
21  void (*setter)(void);
22  /* void (*marker)(); */
23  /* int block_trace; */
24  /* struct trace_var *trace; */
26 
27 struct global_entry {
28  global_variable *var;
29  mrb_sym id;
30 };
31 
32 mrb_value mrb_vm_special_get(mrb_state*, mrb_sym);
33 void mrb_vm_special_set(mrb_state*, mrb_sym, mrb_value);
34 mrb_value mrb_vm_cv_get(mrb_state*, mrb_sym);
35 void mrb_vm_cv_set(mrb_state*, mrb_sym, mrb_value);
36 mrb_value mrb_vm_const_get(mrb_state*, mrb_sym);
37 void mrb_vm_const_set(mrb_state*, mrb_sym, mrb_value);
38 MRB_API mrb_value mrb_const_get(mrb_state*, mrb_value, mrb_sym);
39 MRB_API void mrb_const_set(mrb_state*, mrb_value, mrb_sym, mrb_value);
40 MRB_API mrb_bool mrb_const_defined(mrb_state*, mrb_value, mrb_sym);
41 MRB_API void mrb_const_remove(mrb_state*, mrb_value, mrb_sym);
42 
43 MRB_API mrb_bool mrb_iv_name_sym_p(mrb_state *mrb, mrb_sym sym);
44 MRB_API void mrb_iv_name_sym_check(mrb_state *mrb, mrb_sym sym);
45 MRB_API mrb_value mrb_obj_iv_get(mrb_state *mrb, struct RObject *obj, mrb_sym sym);
46 MRB_API void mrb_obj_iv_set(mrb_state *mrb, struct RObject *obj, mrb_sym sym, mrb_value v);
47 MRB_API mrb_bool mrb_obj_iv_defined(mrb_state *mrb, struct RObject *obj, mrb_sym sym);
48 MRB_API mrb_value mrb_iv_get(mrb_state *mrb, mrb_value obj, mrb_sym sym);
49 MRB_API void mrb_iv_set(mrb_state *mrb, mrb_value obj, mrb_sym sym, mrb_value v);
50 MRB_API mrb_bool mrb_iv_defined(mrb_state*, mrb_value, mrb_sym);
51 MRB_API mrb_value mrb_iv_remove(mrb_state *mrb, mrb_value obj, mrb_sym sym);
52 MRB_API void mrb_iv_copy(mrb_state *mrb, mrb_value dst, mrb_value src);
53 MRB_API mrb_bool mrb_const_defined_at(mrb_state *mrb, mrb_value mod, mrb_sym id);
54 
74 
93 MRB_API void mrb_gv_set(mrb_state *mrb, mrb_sym sym, mrb_value val);
94 
110 MRB_API void mrb_gv_remove(mrb_state *mrb, mrb_sym sym);
111 
112 MRB_API mrb_value mrb_cv_get(mrb_state *mrb, mrb_value mod, mrb_sym sym);
113 MRB_API void mrb_mod_cv_set(mrb_state *mrb, struct RClass * c, mrb_sym sym, mrb_value v);
114 MRB_API void mrb_cv_set(mrb_state *mrb, mrb_value mod, mrb_sym sym, mrb_value v);
115 MRB_API mrb_bool mrb_cv_defined(mrb_state *mrb, mrb_value mod, mrb_sym sym);
116 mrb_value mrb_obj_iv_inspect(mrb_state*, struct RObject*);
117 void mrb_obj_iv_set_force(mrb_state *mrb, struct RObject *obj, mrb_sym sym, mrb_value v);
118 mrb_value mrb_mod_constants(mrb_state *mrb, mrb_value mod);
119 mrb_value mrb_f_global_variables(mrb_state *mrb, mrb_value self);
120 mrb_value mrb_obj_instance_variables(mrb_state*, mrb_value);
121 mrb_value mrb_mod_class_variables(mrb_state*, mrb_value);
122 mrb_value mrb_mod_cv_get(mrb_state *mrb, struct RClass * c, mrb_sym sym);
123 mrb_bool mrb_mod_cv_defined(mrb_state *mrb, struct RClass * c, mrb_sym sym);
124 mrb_bool mrb_ident_p(const char *s, mrb_int len);
125 
126 /* GC functions */
127 void mrb_gc_mark_gv(mrb_state*);
128 void mrb_gc_free_gv(mrb_state*);
129 void mrb_gc_mark_iv(mrb_state*, struct RObject*);
130 size_t mrb_gc_mark_iv_size(mrb_state*, struct RObject*);
131 void mrb_gc_free_iv(mrb_state*, struct RObject*);
132 
133 /* return non zero to break the loop */
134 typedef int (mrb_iv_foreach_func)(mrb_state*,mrb_sym,mrb_value,void*);
135 MRB_API void mrb_iv_foreach(mrb_state *mrb, mrb_value obj, mrb_iv_foreach_func *func, void *p);
136 
138 
139 #endif /* MRUBY_VARIABLE_H */
Definition: variable.h:27
mruby Symbol.
mrb_value mrb_gv_get(mrb_state *mrb, mrb_sym sym)
Get a global variable.
Definition: variable.c:916
mruby Boolean.
Class class.
Definition: class.h:17
#define MRB_BEGIN_DECL
Start declarations in C mode.
Definition: common.h:26
Definition: object.h:29
#define MRB_API
Declare a public MRuby API function.
Definition: common.h:73
Functions to access mruby variables.
Definition: variable.h:17
#define MRB_END_DECL
End declarations in C mode.
Definition: common.h:28
void mrb_gv_remove(mrb_state *mrb, mrb_sym sym)
Remove a global variable.
Definition: variable.c:938
void mrb_gv_set(mrb_state *mrb, mrb_sym sym, mrb_value val)
Set a global variable.
Definition: variable.c:926
mruby common platform definition"
struct global_variable global_variable
Functions to access mruby variables.
Definition: boxing_nan.h:39
Definition: mruby.h:215