diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/symbol.c | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/src/symbol.c b/src/symbol.c index 1d2c7c776..b15e0f11c 100644 --- a/src/symbol.c +++ b/src/symbol.c @@ -15,31 +15,24 @@ #ifndef MRB_NO_PRESYM -# undef MRB_PRESYM_MAX -# define MRB_PRESYM_NAMED(lit, num, type, name) {lit, sizeof(lit)-1}, -# define MRB_PRESYM_UNNAMED(lit, num) {lit, sizeof(lit)-1}, - -static const struct { - const char *name; - uint16_t len; -} presym_table[] = { #ifndef MRB_PRESYM_SCANNING -# include <mruby/presym.inc> +/* const uint16_t presym_length_table[] */ +/* const char * const presym_name_table[] */ +# include <mruby/presym/table.h> #endif -}; static mrb_sym presym_find(const char *name, size_t len) { - if (presym_table[MRB_PRESYM_MAX-1].len < len) return 0; + if (presym_length_table[MRB_PRESYM_MAX-1] < len) return 0; mrb_sym start, idx, presym_size = MRB_PRESYM_MAX; int cmp; for (start = 0; presym_size != 0; presym_size/=2) { idx = start+presym_size/2; - cmp = (int)len-(int)presym_table[idx].len; + cmp = (int)len-(int)presym_length_table[idx]; if (cmp == 0) { - cmp = memcmp(name, presym_table[idx].name, len); + cmp = memcmp(name, presym_name_table[idx], len); if (cmp == 0) return idx+1; } if (0 < cmp) { @@ -54,8 +47,8 @@ static const char* presym_sym2name(mrb_sym sym, mrb_int *lenp) { if (sym > MRB_PRESYM_MAX) return NULL; - if (lenp) *lenp = presym_table[sym-1].len; - return presym_table[sym-1].name; + if (lenp) *lenp = presym_length_table[sym-1]; + return presym_name_table[sym-1]; } #endif /* MRB_NO_PRESYM */ |
