Skip to content

Commit d13e6ff

Browse files
committed
include/presym.h: MRB_GVSYM() for global variables is now available
1 parent 46019f3 commit d13e6ff

File tree

7 files changed

+12
-2
lines changed

7 files changed

+12
-2
lines changed

doc/guides/symbol.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ header.
6363
- `MRB_SYM_B(xor)` //=> xor! (Method with Bang)
6464
- `MRB_SYM_Q(xor)` //=> xor? (Method with Question mark)
6565
- `MRB_SYM_E(xor)` //=> xor= (Method with Equal)
66+
- `MRB_GVSYM(xor)` //=> $xor (Global Variable)
6667
- `MRB_CVSYM(xor)` //=> @@xor (Class Variable)
6768
- `MRB_IVSYM(xor)` //=> @xor (Instance Variable)
6869
- `MRB_OPSYM(xor)` //=> ^ (Operator)

include/mruby.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1141,8 +1141,9 @@ MRB_API mrb_value mrb_funcall_argv(mrb_state *mrb, mrb_value val, mrb_sym name,
11411141
*/
11421142
MRB_API mrb_value mrb_funcall_with_block(mrb_state *mrb, mrb_value val, mrb_sym name, mrb_int argc, const mrb_value *argv, mrb_value block);
11431143
/**
1144-
* Create a symbol from C string. But usually it's better to use MRB_SYM,
1145-
* MRB_OPSYM, MRB_CVSYM, MRB_IVSYM, MRB_SYM_B, MRB_SYM_Q, MRB_SYM_E macros.
1144+
* Create a symbol from C string. But usually it's better to
1145+
* use MRB_SYM, MRB_OPSYM, MRB_CVSYM, MRB_IVSYM, MRB_GVSYM,
1146+
* MRB_SYM_B, MRB_SYM_Q, MRB_SYM_E macros.
11461147
*
11471148
* Example:
11481149
*

include/mruby/presym.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
* macros.
2020
*
2121
* MRB_OPSYM(xor) //=> ^ (Operator)
22+
* MRB_GVSYM(xor) //=> $xor (Global Variable)
2223
* MRB_CVSYM(xor) //=> @@xor (Class Variable)
2324
* MRB_IVSYM(xor) //=> @xor (Instance Variable)
2425
* MRB_SYM_B(xor) //=> xor! (Method with Bang)

include/mruby/presym/disable.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#define MRB_PRESYM_MAX 0
1313

1414
#define MRB_OPSYM(name) MRB_OPSYM__##name(mrb)
15+
#define MRB_GVSYM(name) mrb_intern_lit(mrb, "$" #name)
1516
#define MRB_CVSYM(name) mrb_intern_lit(mrb, "@@" #name)
1617
#define MRB_IVSYM(name) mrb_intern_lit(mrb, "@" #name)
1718
#define MRB_SYM_B(name) mrb_intern_lit(mrb, #name "!")
@@ -20,6 +21,7 @@
2021
#define MRB_SYM(name) mrb_intern_lit(mrb, #name)
2122

2223
#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name(mrb)
24+
#define MRB_GVSYM_2(mrb, name) mrb_intern_lit(mrb, "$" #name)
2325
#define MRB_CVSYM_2(mrb, name) mrb_intern_lit(mrb, "@@" #name)
2426
#define MRB_IVSYM_2(mrb, name) mrb_intern_lit(mrb, "@" #name)
2527
#define MRB_SYM_B_2(mrb, name) mrb_intern_lit(mrb, #name "!")

include/mruby/presym/enable.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include <mruby/presym/id.h>
1111

1212
#define MRB_OPSYM(name) MRB_OPSYM__##name
13+
#define MRB_GVSYM(name) MRB_GVSYM__##name
1314
#define MRB_CVSYM(name) MRB_CVSYM__##name
1415
#define MRB_IVSYM(name) MRB_IVSYM__##name
1516
#define MRB_SYM_B(name) MRB_SYM_B__##name
@@ -18,6 +19,7 @@
1819
#define MRB_SYM(name) MRB_SYM__##name
1920

2021
#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
22+
#define MRB_GVSYM_2(mrb, name) MRB_GVSYM__##name
2123
#define MRB_CVSYM_2(mrb, name) MRB_CVSYM__##name
2224
#define MRB_IVSYM_2(mrb, name) MRB_IVSYM__##name
2325
#define MRB_SYM_B_2(mrb, name) MRB_SYM_B__##name

include/mruby/presym/scanning.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
#define mrb_funcall(mrb, v, name, ...) MRB_PRESYM_SCANNING_TAGGED(name) (v) (__VA_ARGS__)
3131

3232
#define MRB_OPSYM(name) MRB_OPSYM__##name(mrb)
33+
#define MRB_GVSYM(name) MRB_PRESYM_SCANNING_TAGGED("$" #name)
3334
#define MRB_CVSYM(name) MRB_PRESYM_SCANNING_TAGGED("@@" #name)
3435
#define MRB_IVSYM(name) MRB_PRESYM_SCANNING_TAGGED("@" #name)
3536
#define MRB_SYM_B(name) MRB_PRESYM_SCANNING_TAGGED(#name "!")
@@ -38,6 +39,7 @@
3839
#define MRB_SYM(name) MRB_PRESYM_SCANNING_TAGGED(#name)
3940

4041
#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name(mrb)
42+
#define MRB_GVSYM_2(mrb, name) MRB_PRESYM_SCANNING_TAGGED("$" #name)
4143
#define MRB_CVSYM_2(mrb, name) MRB_PRESYM_SCANNING_TAGGED("@@" #name)
4244
#define MRB_IVSYM_2(mrb, name) MRB_PRESYM_SCANNING_TAGGED("@" #name)
4345
#define MRB_SYM_B_2(mrb, name) MRB_PRESYM_SCANNING_TAGGED(#name "!")

lib/mruby/presym.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class Presym
3636
SYMBOL_TO_MACRO = {
3737
# Symbol => Macro
3838
# [prefix, suffix] => [prefix, suffix]
39+
["$" , "" ] => ["GV" , "" ],
3940
["@@" , "" ] => ["CV" , "" ],
4041
["@" , "" ] => ["IV" , "" ],
4142
["" , "!" ] => ["" , "_B" ],

0 commit comments

Comments
 (0)