From eddd3249793b3b307da2fe7734d5923cd238a35b Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sat, 25 Apr 2020 14:29:58 +0900 Subject: Add `MRB_SYM()` for inline symbols. --- include/mruby.h | 1 + include/mruby/hash.h | 2 +- include/mruby/presym.h | 19 +++++++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 include/mruby/presym.h (limited to 'include') diff --git a/include/mruby.h b/include/mruby.h index 6d884b146..148addf36 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -89,6 +89,7 @@ #include #include #include +#include #include #ifndef MRB_WITHOUT_FLOAT diff --git a/include/mruby/hash.h b/include/mruby/hash.h index 86fbe329d..7dab4a85c 100644 --- a/include/mruby/hash.h +++ b/include/mruby/hash.h @@ -201,7 +201,7 @@ MRB_API void mrb_hash_merge(mrb_state *mrb, mrb_value hash1, mrb_value hash2); /* RHASH_TBL allocates st_table if not available. */ #define RHASH(obj) ((struct RHash*)(mrb_ptr(obj))) #define RHASH_TBL(h) (RHASH(h)->ht) -#define RHASH_IFNONE(h) mrb_iv_get(mrb, (h), mrb_intern_lit(mrb, "ifnone")) +#define RHASH_IFNONE(h) mrb_iv_get(mrb, (h), MRB_SYM(ifnone)) #define RHASH_PROCDEFAULT(h) RHASH_IFNONE(h) #define MRB_HASH_DEFAULT 1 diff --git a/include/mruby/presym.h b/include/mruby/presym.h new file mode 100644 index 000000000..38e733f25 --- /dev/null +++ b/include/mruby/presym.h @@ -0,0 +1,19 @@ +/** +** @file mruby/presym.h - Preallocated Symbols +** +** See Copyright Notice in mruby.h +*/ + +#ifndef MRUBY_PRESYM_H +#define MRUBY_PRESYM_H + +#undef MRB_PRESYM_MAX +#define MRB_PRESYM_CSYM(sym, num) MRB_PRESYM__##sym = (num<<1), +#define MRB_PRESYM_SYM(sym, num) + +enum mruby_presym { +#include <../build/presym.inc> +}; + +#define MRB_SYM(sym) MRB_PRESYM__##sym +#endif /* MRUBY_PRESYM_H */ -- cgit v1.2.3