@@ -54,9 +54,67 @@ MRB_API mrb_bool mrb_iv_defined(mrb_state*, mrb_value, mrb_sym);
54
54
MRB_API mrb_value mrb_iv_remove (mrb_state * mrb , mrb_value obj , mrb_sym sym );
55
55
MRB_API void mrb_iv_copy (mrb_state * mrb , mrb_value dst , mrb_value src );
56
56
MRB_API mrb_bool mrb_const_defined_at (mrb_state * mrb , mrb_value mod , mrb_sym id );
57
+
58
+ /**
59
+ * Get a global variable. Will return nil if the var does not exist
60
+ *
61
+ * Example:
62
+ *
63
+ * !!!ruby
64
+ * # Ruby style
65
+ * var = $value
66
+ *
67
+ * !!!c
68
+ * // C style
69
+ * mrb_sym sym = mrb_intern_cstr(mrb, "$value");
70
+ * mrb_value var = mrb_gv_get(mrb, sym);
71
+ *
72
+ * @param mrb The mruby state reference
73
+ * @param sym The name of the global variable
74
+ * @return The value of that global variable. May be nil
75
+ */
57
76
MRB_API mrb_value mrb_gv_get (mrb_state * mrb , mrb_sym sym );
77
+
78
+ /**
79
+ * Set a global variable
80
+ *
81
+ * Example:
82
+ *
83
+ * !!!ruby
84
+ * # Ruby style
85
+ * $value = "foo"
86
+ *
87
+ * !!!c
88
+ * // C style
89
+ * mrb_sym sym = mrb_intern_cstr(mrb, "$value");
90
+ * mrb_gv_set(mrb, sym, mrb_str_new_cstr("foo"));
91
+ *
92
+ * @param mrb The mruby state reference
93
+ * @param sym The name of the global variable
94
+ * @param val The value of the global variable
95
+ */
58
96
MRB_API void mrb_gv_set (mrb_state * mrb , mrb_sym sym , mrb_value val );
97
+
98
+ /**
99
+ * Remove a global variable.
100
+ *
101
+ * Example:
102
+ *
103
+ * !!!ruby
104
+ * # Ruby style
105
+ * $value = nil
106
+ *
107
+ * !!!c
108
+ * // C style
109
+ * mrb_sym sym = mrb_intern_cstr(mrb, "$value");
110
+ * mrb_gv_remove(mrb, sym);
111
+ *
112
+ * @param mrb The mruby state reference
113
+ * @param sym The name of the global variable
114
+ * @param val The value of the global variable
115
+ */
59
116
MRB_API void mrb_gv_remove (mrb_state * mrb , mrb_sym sym );
117
+
60
118
MRB_API mrb_value mrb_cv_get (mrb_state * mrb , mrb_value mod , mrb_sym sym );
61
119
MRB_API void mrb_mod_cv_set (mrb_state * mrb , struct RClass * c , mrb_sym sym , mrb_value v );
62
120
MRB_API void mrb_cv_set (mrb_state * mrb , mrb_value mod , mrb_sym sym , mrb_value v );
0 commit comments