GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — mruby/include/mruby/variable.h at stable · mruby/mruby Expand file tree/ Copy pathvariable.hMore file actions 125 lines (111 loc) · 4.16 KB / Copy pathvariable.hFile metadata and controls125 lines (111 loc) · 4.16 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 /** ** @file mruby/variable.h - mruby variables ** ** See Copyright Notice in mruby.h */ #ifndef MRUBY_VARIABLE_H #define MRUBY_VARIABLE_H #if defined(__GNUC__) || defined(__clang__) #define MRB_MEM_PREFETCH(addr) __builtin_prefetch(addr, 0, 1) #else #define MRB_MEM_PREFETCH(addr) #endif #include "common.h" /** * Functions to access mruby variables. */ MRB_BEGIN_DECL MRB_API mrb_value mrb_const_get(mrb_state*, mrb_value, mrb_sym); MRB_API void mrb_const_set(mrb_state*, mrb_value, mrb_sym, mrb_value); MRB_API mrb_bool mrb_const_defined(mrb_state*, mrb_value, mrb_sym); MRB_API void mrb_const_remove(mrb_state*, mrb_value, mrb_sym); MRB_API mrb_bool mrb_iv_name_sym_p(mrb_state *mrb, mrb_sym sym); MRB_API void mrb_iv_name_sym_check(mrb_state *mrb, mrb_sym sym); MRB_API mrb_value mrb_obj_iv_get(mrb_state *mrb, struct RObject *obj, mrb_sym sym); MRB_API void mrb_obj_iv_set(mrb_state *mrb, struct RObject *obj, mrb_sym sym, mrb_value v); MRB_API mrb_bool mrb_obj_iv_defined(mrb_state *mrb, struct RObject *obj, mrb_sym sym); MRB_API mrb_value mrb_iv_get(mrb_state *mrb, mrb_value obj, mrb_sym sym); MRB_API void mrb_iv_set(mrb_state *mrb, mrb_value obj, mrb_sym sym, mrb_value v); MRB_API mrb_bool mrb_iv_defined(mrb_state*, mrb_value, mrb_sym); MRB_API mrb_value mrb_iv_remove(mrb_state *mrb, mrb_value obj, mrb_sym sym); MRB_API void mrb_iv_copy(mrb_state *mrb, mrb_value dst, mrb_value src); MRB_API mrb_bool mrb_const_defined_at(mrb_state *mrb, mrb_value mod, mrb_sym id); /** * Get a global variable. Will return nil if the var does not exist * * Example: * * !!!ruby * # Ruby style * var = $value * * !!!c * // C style * mrb_sym sym = mrb_intern_lit(mrb, "$value"); * mrb_value var = mrb_gv_get(mrb, sym); * * @param mrb The mruby state reference * @param sym The name of the global variable * @return The value of that global variable. May be nil */ MRB_API mrb_value mrb_gv_get(mrb_state *mrb, mrb_sym sym); /** * Set a global variable * * Example: * * !!!ruby * # Ruby style * $value = "foo" * * !!!c * // C style * mrb_sym sym = mrb_intern_lit(mrb, "$value"); * mrb_gv_set(mrb, sym, mrb_str_new_lit("foo")); * * @param mrb The mruby state reference * @param sym The name of the global variable * @param val The value of the global variable */ MRB_API void mrb_gv_set(mrb_state *mrb, mrb_sym sym, mrb_value val); /** * Remove a global variable. * * Example: * * # Ruby style * $value = nil * * // C style * mrb_sym sym = mrb_intern_lit(mrb, "$value"); * mrb_gv_remove(mrb, sym); * * @param mrb The mruby state reference * @param sym The name of the global variable */ MRB_API void mrb_gv_remove(mrb_state *mrb, mrb_sym sym); /** * Turn a global variable name into a virtual one: `mrb_gv_get()` and * `mrb_gv_set()` on `sym` call `get` and `set` instead of touching the * stored value, so a name whose semantics are not "one process-wide slot" * (CRuby's `$~` is per method scope) can keep its global spelling. The * dispatch lives behind a sentinel stored in the globals table itself, so * the name stays defined and listed in `global_variables`, and an ordinary * global pays one type test on access. `set` may raise; removing the name * with `mrb_gv_remove()` removes the hook with it. * * @param mrb The mruby state reference * @param sym The name of the global variable * @param get Called to produce the variable's value * @param set Called with the value assigned to the variable */ MRB_API void mrb_gv_define_virtual(mrb_state *mrb, mrb_sym sym, mrb_value (*get)(mrb_state*), void (*set)(mrb_state*, mrb_value)); MRB_API mrb_value mrb_cv_get(mrb_state *mrb, mrb_value mod, mrb_sym sym); MRB_API void mrb_mod_cv_set(mrb_state *mrb, struct RClass * c, mrb_sym sym, mrb_value v); MRB_API void mrb_cv_set(mrb_state *mrb, mrb_value mod, mrb_sym sym, mrb_value v); MRB_API mrb_bool mrb_cv_defined(mrb_state *mrb, mrb_value mod, mrb_sym sym); /* return non zero to break the loop */ typedef int (mrb_iv_foreach_func)(mrb_state*,mrb_sym,mrb_value,void*); MRB_API void mrb_iv_foreach(mrb_state *mrb, mrb_value obj, mrb_iv_foreach_func *func, void *p); MRB_END_DECL #endif /* MRUBY_VARIABLE_H */ |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |