From c7f82933684430e6ae88fd84f08c62d414a067ff Mon Sep 17 00:00:00 2001 From: Yuichi Nishiwaki Date: Mon, 8 Feb 2016 04:10:22 +0900 Subject: [PATCH] add pic_intern_(str|cstr|lit) --- contrib/20.r7rs/src/file.c | 2 +- extlib/benz/debug.c | 2 +- extlib/benz/error.c | 2 +- extlib/benz/eval.c | 8 ++++---- extlib/benz/include/picrin/symbol.h | 6 ++++-- extlib/benz/macro.c | 2 +- extlib/benz/port.c | 2 +- extlib/benz/proc.c | 18 +++++++++--------- extlib/benz/read.c | 6 +++--- extlib/benz/state.c | 10 +++++----- extlib/benz/symbol.c | 10 ++-------- 11 files changed, 32 insertions(+), 36 deletions(-) diff --git a/contrib/20.r7rs/src/file.c b/contrib/20.r7rs/src/file.c index 9aeae3d4..d13f77b2 100644 --- a/contrib/20.r7rs/src/file.c +++ b/contrib/20.r7rs/src/file.c @@ -11,7 +11,7 @@ file_error(pic_state *pic, const char *msg) { struct pic_error *e; - e = pic_make_error(pic, pic_intern(pic, "file"), msg, pic_nil_value()); + e = pic_make_error(pic, pic_intern_lit(pic, "file"), msg, pic_nil_value()); pic_raise(pic, pic_obj_value(e)); } diff --git a/extlib/benz/debug.c b/extlib/benz/debug.c index 9799692c..fb1cb197 100644 --- a/extlib/benz/debug.c +++ b/extlib/benz/debug.c @@ -45,7 +45,7 @@ pic_print_backtrace(pic_state *pic, xFILE *file) pic_value elem, it; e = pic_error_ptr(pic->err); - if (e->type != pic_intern(pic, "")) { + if (e->type != pic_intern_lit(pic, "")) { pic_fwrite(pic, pic_obj_value(e->type), file); xfprintf(pic, file, " "); } diff --git a/extlib/benz/error.c b/extlib/benz/error.c index 1010b7fe..e3427809 100644 --- a/extlib/benz/error.c +++ b/extlib/benz/error.c @@ -141,7 +141,7 @@ pic_error(pic_state *pic, const char *msg, pic_value irrs) { struct pic_error *e; - e = pic_make_error(pic, pic_intern(pic, ""), msg, irrs); + e = pic_make_error(pic, pic_intern_lit(pic, ""), msg, irrs); pic_raise(pic, pic_obj_value(e)); } diff --git a/extlib/benz/eval.c b/extlib/benz/eval.c index 4198f72f..3b53c0bb 100644 --- a/extlib/benz/eval.c +++ b/extlib/benz/eval.c @@ -160,10 +160,10 @@ define_var(pic_state *pic, analyze_scope *scope, pic_sym *sym) static pic_value analyze(pic_state *, analyze_scope *, pic_value); static pic_value analyze_lambda(pic_state *, analyze_scope *, pic_value); -#define GREF pic_intern(pic, "gref") -#define LREF pic_intern(pic, "lref") -#define CREF pic_intern(pic, "cref") -#define CALL pic_intern(pic, "call") +#define GREF pic_intern_lit(pic, "gref") +#define LREF pic_intern_lit(pic, "lref") +#define CREF pic_intern_lit(pic, "cref") +#define CALL pic_intern_lit(pic, "call") static pic_value analyze_var(pic_state *pic, analyze_scope *scope, pic_sym *sym) diff --git a/extlib/benz/include/picrin/symbol.h b/extlib/benz/include/picrin/symbol.h index 07d70634..6581bbd5 100644 --- a/extlib/benz/include/picrin/symbol.h +++ b/extlib/benz/include/picrin/symbol.h @@ -29,8 +29,10 @@ struct pic_id { #define pic_id_p(v) (pic_type(v) == PIC_TT_ID || pic_type(v) == PIC_TT_SYMBOL) #define pic_id_ptr(v) ((pic_id *)pic_ptr(v)) -pic_sym *pic_intern(pic_state *, const char *); -pic_sym *pic_intern_str(pic_state *, pic_str *); +pic_sym *pic_intern(pic_state *, pic_str *); +#define pic_intern_str(pic,s,i) pic_intern(pic, pic_make_str(pic, (s), (i))) +#define pic_intern_cstr(pic,s) pic_intern(pic, pic_make_cstr(pic, (s))) +#define pic_intern_lit(pic,lit) pic_intern(pic, pic_make_lit(pic, lit)) pic_id *pic_make_identifier(pic_state *, pic_id *, struct pic_env *); diff --git a/extlib/benz/macro.c b/extlib/benz/macro.c index 70de7872..ee2c8ae5 100644 --- a/extlib/benz/macro.c +++ b/extlib/benz/macro.c @@ -46,7 +46,7 @@ pic_add_identifier(pic_state *pic, pic_id *id, struct pic_env *env) } else { str = pic_format(pic, ".%s.%d", name, pic->ucnt++); } - uid = pic_intern_str(pic, str); + uid = pic_intern(pic, str); return pic_put_identifier(pic, id, uid, env); } diff --git a/extlib/benz/port.c b/extlib/benz/port.c index 8a78d3b3..e1056aba 100644 --- a/extlib/benz/port.c +++ b/extlib/benz/port.c @@ -103,7 +103,7 @@ file_error(pic_state *pic, const char *msg) { struct pic_error *e; - e = pic_make_error(pic, pic_intern(pic, "file"), msg, pic_nil_value()); + e = pic_make_error(pic, pic_intern_lit(pic, "file"), msg, pic_nil_value()); pic_raise(pic, pic_obj_value(e)); } diff --git a/extlib/benz/proc.c b/extlib/benz/proc.c index 6546cfe9..5b1a4f6a 100644 --- a/extlib/benz/proc.c +++ b/extlib/benz/proc.c @@ -904,7 +904,7 @@ pic_define_(pic_state *pic, const char *name, pic_value val) { pic_sym *sym, *uid; - sym = pic_intern(pic, name); + sym = pic_intern_cstr(pic, name); if ((uid = pic_find_identifier(pic, (pic_id *)sym, pic->lib->env)) == NULL) { uid = pic_add_identifier(pic, (pic_id *)sym, pic->lib->env); @@ -921,7 +921,7 @@ void pic_define(pic_state *pic, const char *name, pic_value val) { pic_define_(pic, name, val); - pic_export(pic, pic_intern(pic, name)); + pic_export(pic, pic_intern_cstr(pic, name)); } void @@ -934,7 +934,7 @@ void pic_defun(pic_state *pic, const char *name, pic_func_t cfunc) { pic_defun_(pic, name, cfunc); - pic_export(pic, pic_intern(pic, name)); + pic_export(pic, pic_intern_cstr(pic, name)); } void @@ -947,7 +947,7 @@ void pic_defvar(pic_state *pic, const char *name, pic_value init, struct pic_proc *conv) { pic_defvar_(pic, name, init, conv); - pic_export(pic, pic_intern(pic, name)); + pic_export(pic, pic_intern_cstr(pic, name)); } pic_value @@ -955,7 +955,7 @@ pic_ref(pic_state *pic, struct pic_lib *lib, const char *name) { pic_sym *sym, *uid; - sym = pic_intern(pic, name); + sym = pic_intern_cstr(pic, name); if ((uid = pic_find_identifier(pic, (pic_id *)sym, lib->env)) == NULL) { pic_errorf(pic, "symbol \"%s\" not defined in library ~s", name, lib->name); @@ -969,7 +969,7 @@ pic_set(pic_state *pic, struct pic_lib *lib, const char *name, pic_value val) { pic_sym *sym, *uid; - sym = pic_intern(pic, name); + sym = pic_intern_cstr(pic, name); if ((uid = pic_find_identifier(pic, (pic_id *)sym, lib->env)) == NULL) { pic_errorf(pic, "symbol \"%s\" not defined in library ~s", name, lib->name); @@ -1088,19 +1088,19 @@ pic_proc_env(pic_state *pic, struct pic_proc *proc) bool pic_proc_env_has(pic_state *pic, struct pic_proc *proc, const char *key) { - return pic_dict_has(pic, pic_proc_env(pic, proc), pic_intern(pic, key)); + return pic_dict_has(pic, pic_proc_env(pic, proc), pic_intern_cstr(pic, key)); } pic_value pic_proc_env_ref(pic_state *pic, struct pic_proc *proc, const char *key) { - return pic_dict_ref(pic, pic_proc_env(pic, proc), pic_intern(pic, key)); + return pic_dict_ref(pic, pic_proc_env(pic, proc), pic_intern_cstr(pic, key)); } void pic_proc_env_set(pic_state *pic, struct pic_proc *proc, const char *key, pic_value val) { - pic_dict_set(pic, pic_proc_env(pic, proc), pic_intern(pic, key), val); + pic_dict_set(pic, pic_proc_env(pic, proc), pic_intern_cstr(pic, key), val); } static pic_value diff --git a/extlib/benz/read.c b/extlib/benz/read.c index b4bd1f4e..1fb6a713 100644 --- a/extlib/benz/read.c +++ b/extlib/benz/read.c @@ -14,7 +14,7 @@ read_error(pic_state *pic, const char *msg, pic_value irritant) { struct pic_error *e; - e = pic_make_error(pic, pic_intern(pic, "read"), msg, irritant); + e = pic_make_error(pic, pic_intern_lit(pic, "read"), msg, irritant); pic_raise(pic, pic_obj_value(e)); } @@ -214,7 +214,7 @@ read_symbol(pic_state *pic, struct pic_port *port, int c) buf[len] = 0; } - sym = pic_intern(pic, buf); + sym = pic_intern_cstr(pic, buf); pic_free(pic, buf); return pic_obj_value(sym); @@ -487,7 +487,7 @@ read_pipe(pic_state *pic, struct pic_port *port, int c) } buf[cnt] = '\0'; - sym = pic_intern(pic, buf); + sym = pic_intern_cstr(pic, buf); pic_free(pic, buf); return pic_obj_value(sym); diff --git a/extlib/benz/state.c b/extlib/benz/state.c index 44e0cb66..4dfb287c 100644 --- a/extlib/benz/state.c +++ b/extlib/benz/state.c @@ -15,7 +15,7 @@ pic_set_argv(pic_state *pic, int argc, char *argv[], char **envp) void pic_add_feature(pic_state *pic, const char *feature) { - pic_push(pic, pic_obj_value(pic_intern(pic, feature)), pic->features); + pic_push(pic, pic_obj_value(pic_intern_cstr(pic, feature)), pic->features); } void pic_init_bool(pic_state *); @@ -109,14 +109,14 @@ pic_features(pic_state *pic) #define import_builtin_syntax(name) do { \ pic_sym *nick, *real; \ - nick = pic_intern(pic, "builtin:" name); \ - real = pic_intern(pic, name); \ + nick = pic_intern_lit(pic, "builtin:" name); \ + real = pic_intern_lit(pic, name); \ pic_put_identifier(pic, (pic_id *)nick, real, pic->lib->env); \ } while (0) #define declare_vm_procedure(name) do { \ pic_sym *sym; \ - sym = pic_intern(pic, name); \ + sym = pic_intern_lit(pic, name); \ pic_put_identifier(pic, (pic_id *)sym, sym, pic->lib->env); \ } while (0) @@ -301,7 +301,7 @@ pic_open(pic_allocf allocf, void *userdata) ai = pic_gc_arena_preserve(pic); -#define S(slot,name) pic->slot = pic_intern(pic, name) +#define S(slot,name) pic->slot = pic_intern_lit(pic, name) S(sDEFINE, "define"); S(sDEFINE_MACRO, "define-macro"); diff --git a/extlib/benz/symbol.c b/extlib/benz/symbol.c index 4bf4d52c..8111a911 100644 --- a/extlib/benz/symbol.c +++ b/extlib/benz/symbol.c @@ -10,7 +10,7 @@ KHASH_DEFINE(s, pic_str *, pic_sym *, kh_pic_str_hash, kh_pic_str_cmp) pic_sym * -pic_intern_str(pic_state *pic, pic_str *str) +pic_intern(pic_state *pic, pic_str *str) { khash_t(s) *h = &pic->syms; pic_sym *sym; @@ -31,12 +31,6 @@ pic_intern_str(pic_state *pic, pic_str *str) return sym; } -pic_sym * -pic_intern(pic_state *pic, const char *cstr) -{ - return pic_intern_str(pic, pic_make_cstr(pic, cstr)); -} - pic_id * pic_make_identifier(pic_state *pic, pic_id *id, struct pic_env *env) { @@ -110,7 +104,7 @@ pic_symbol_string_to_symbol(pic_state *pic) pic_get_args(pic, "s", &str); - return pic_obj_value(pic_intern_str(pic, str)); + return pic_obj_value(pic_intern(pic, str)); } static pic_value