mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
include/presym.h: MRB_GVSYM() for global variables is now available
This commit is contained in:
@@ -63,6 +63,7 @@ header.
|
||||
- `MRB_SYM_B(xor)` //=> xor! (Method with Bang)
|
||||
- `MRB_SYM_Q(xor)` //=> xor? (Method with Question mark)
|
||||
- `MRB_SYM_E(xor)` //=> xor= (Method with Equal)
|
||||
- `MRB_GVSYM(xor)` //=> $xor (Global Variable)
|
||||
- `MRB_CVSYM(xor)` //=> @@xor (Class Variable)
|
||||
- `MRB_IVSYM(xor)` //=> @xor (Instance Variable)
|
||||
- `MRB_OPSYM(xor)` //=> ^ (Operator)
|
||||
|
||||
+3
-2
@@ -1141,8 +1141,9 @@ MRB_API mrb_value mrb_funcall_argv(mrb_state *mrb, mrb_value val, mrb_sym name,
|
||||
*/
|
||||
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);
|
||||
/**
|
||||
* Create a symbol from C string. But usually it's better to use MRB_SYM,
|
||||
* MRB_OPSYM, MRB_CVSYM, MRB_IVSYM, MRB_SYM_B, MRB_SYM_Q, MRB_SYM_E macros.
|
||||
* Create a symbol from C string. But usually it's better to
|
||||
* use MRB_SYM, MRB_OPSYM, MRB_CVSYM, MRB_IVSYM, MRB_GVSYM,
|
||||
* MRB_SYM_B, MRB_SYM_Q, MRB_SYM_E macros.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
* macros.
|
||||
*
|
||||
* MRB_OPSYM(xor) //=> ^ (Operator)
|
||||
* MRB_GVSYM(xor) //=> $xor (Global Variable)
|
||||
* MRB_CVSYM(xor) //=> @@xor (Class Variable)
|
||||
* MRB_IVSYM(xor) //=> @xor (Instance Variable)
|
||||
* MRB_SYM_B(xor) //=> xor! (Method with Bang)
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#define MRB_PRESYM_MAX 0
|
||||
|
||||
#define MRB_OPSYM(name) MRB_OPSYM__##name(mrb)
|
||||
#define MRB_GVSYM(name) mrb_intern_lit(mrb, "$" #name)
|
||||
#define MRB_CVSYM(name) mrb_intern_lit(mrb, "@@" #name)
|
||||
#define MRB_IVSYM(name) mrb_intern_lit(mrb, "@" #name)
|
||||
#define MRB_SYM_B(name) mrb_intern_lit(mrb, #name "!")
|
||||
@@ -20,6 +21,7 @@
|
||||
#define MRB_SYM(name) mrb_intern_lit(mrb, #name)
|
||||
|
||||
#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name(mrb)
|
||||
#define MRB_GVSYM_2(mrb, name) mrb_intern_lit(mrb, "$" #name)
|
||||
#define MRB_CVSYM_2(mrb, name) mrb_intern_lit(mrb, "@@" #name)
|
||||
#define MRB_IVSYM_2(mrb, name) mrb_intern_lit(mrb, "@" #name)
|
||||
#define MRB_SYM_B_2(mrb, name) mrb_intern_lit(mrb, #name "!")
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include <mruby/presym/id.h>
|
||||
|
||||
#define MRB_OPSYM(name) MRB_OPSYM__##name
|
||||
#define MRB_GVSYM(name) MRB_GVSYM__##name
|
||||
#define MRB_CVSYM(name) MRB_CVSYM__##name
|
||||
#define MRB_IVSYM(name) MRB_IVSYM__##name
|
||||
#define MRB_SYM_B(name) MRB_SYM_B__##name
|
||||
@@ -18,6 +19,7 @@
|
||||
#define MRB_SYM(name) MRB_SYM__##name
|
||||
|
||||
#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
|
||||
#define MRB_GVSYM_2(mrb, name) MRB_GVSYM__##name
|
||||
#define MRB_CVSYM_2(mrb, name) MRB_CVSYM__##name
|
||||
#define MRB_IVSYM_2(mrb, name) MRB_IVSYM__##name
|
||||
#define MRB_SYM_B_2(mrb, name) MRB_SYM_B__##name
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
#define mrb_funcall(mrb, v, name, ...) MRB_PRESYM_SCANNING_TAGGED(name) (v) (__VA_ARGS__)
|
||||
|
||||
#define MRB_OPSYM(name) MRB_OPSYM__##name(mrb)
|
||||
#define MRB_GVSYM(name) MRB_PRESYM_SCANNING_TAGGED("$" #name)
|
||||
#define MRB_CVSYM(name) MRB_PRESYM_SCANNING_TAGGED("@@" #name)
|
||||
#define MRB_IVSYM(name) MRB_PRESYM_SCANNING_TAGGED("@" #name)
|
||||
#define MRB_SYM_B(name) MRB_PRESYM_SCANNING_TAGGED(#name "!")
|
||||
@@ -38,6 +39,7 @@
|
||||
#define MRB_SYM(name) MRB_PRESYM_SCANNING_TAGGED(#name)
|
||||
|
||||
#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name(mrb)
|
||||
#define MRB_GVSYM_2(mrb, name) MRB_PRESYM_SCANNING_TAGGED("$" #name)
|
||||
#define MRB_CVSYM_2(mrb, name) MRB_PRESYM_SCANNING_TAGGED("@@" #name)
|
||||
#define MRB_IVSYM_2(mrb, name) MRB_PRESYM_SCANNING_TAGGED("@" #name)
|
||||
#define MRB_SYM_B_2(mrb, name) MRB_PRESYM_SCANNING_TAGGED(#name "!")
|
||||
|
||||
@@ -36,6 +36,7 @@ module MRuby
|
||||
SYMBOL_TO_MACRO = {
|
||||
# Symbol => Macro
|
||||
# [prefix, suffix] => [prefix, suffix]
|
||||
["$" , "" ] => ["GV" , "" ],
|
||||
["@@" , "" ] => ["CV" , "" ],
|
||||
["@" , "" ] => ["IV" , "" ],
|
||||
["" , "!" ] => ["" , "_B" ],
|
||||
|
||||
Reference in New Issue
Block a user