From 8d4a8be40208ce32b2ae1722d99b5632a922107d Mon Sep 17 00:00:00 2001 From: Yuichi Nishiwaki Date: Thu, 30 Mar 2017 16:19:20 +0900 Subject: [PATCH] remvoe unused string APIs --- lib/include/picrin.h | 3 --- lib/string.c | 48 +++++--------------------------------------- lib/symbol.c | 5 +++-- 3 files changed, 8 insertions(+), 48 deletions(-) diff --git a/lib/include/picrin.h b/lib/include/picrin.h index e185d2e6..6ca42b61 100644 --- a/lib/include/picrin.h +++ b/lib/include/picrin.h @@ -208,11 +208,8 @@ bool pic_weak_has(pic_state *, pic_value weak, pic_value key); */ int pic_str_len(pic_state *, pic_value str); -char pic_str_ref(pic_state *, pic_value str, int i); pic_value pic_str_cat(pic_state *, pic_value str1, pic_value str2); pic_value pic_str_sub(pic_state *, pic_value str, int i, int j); -int pic_str_cmp(pic_state *, pic_value str1, pic_value str2); -int pic_str_hash(pic_state *, pic_value str); /* diff --git a/lib/string.c b/lib/string.c index 91899f7c..4c105fe1 100644 --- a/lib/string.c +++ b/lib/string.c @@ -248,25 +248,6 @@ pic_str_len(pic_state *PIC_UNUSED(pic), pic_value str) return pic_str_ptr(pic, str)->rope->weight; } -char -pic_str_ref(pic_state *PIC_UNUSED(pic), pic_value str, int i) -{ - struct rope *rope = pic_str_ptr(pic, str)->rope; - - while (i < rope->weight) { - if (rope->isleaf) { - return rope->u.leaf.str[i]; - } - if (i < rope->u.node.left->weight) { - rope = rope->u.node.left; - } else { - i -= rope->u.node.left->weight; - rope = rope->u.node.right; - } - } - PIC_UNREACHABLE(); -} - pic_value pic_str_cat(pic_state *pic, pic_value a, pic_value b) { @@ -279,25 +260,6 @@ pic_str_sub(pic_state *pic, pic_value str, int s, int e) return make_str(pic, slice(pic, pic_str_ptr(pic, str)->rope, s, e)); } -int -pic_str_cmp(pic_state *pic, pic_value str1, pic_value str2) -{ - return strcmp(pic_str(pic, str1, NULL), pic_str(pic, str2, NULL)); -} - -int -pic_str_hash(pic_state *pic, pic_value str) -{ - const char *s; - int h = 0; - - s = pic_str(pic, str, NULL); - while (*s) { - h = (h << 5) - h + *s++; - } - return h; -} - const char * pic_str(pic_state *pic, pic_value str, int *len) { @@ -387,7 +349,7 @@ pic_str_string_ref(pic_state *pic) VALID_INDEX(pic, pic_str_len(pic, str), k); - return pic_char_value(pic, pic_str_ref(pic, str, k)); + return pic_char_value(pic, pic_str(pic, str, 0)[k]); } static pic_value @@ -429,7 +391,7 @@ pic_str_string_set(pic_state *pic) if (! pic_str_p(pic, argv[i])) { \ return pic_false_value(pic); \ } \ - if (! (pic_str_cmp(pic, argv[i-1], argv[i]) op 0)) { \ + if (! (strcmp(pic_str(pic, argv[i-1], NULL), pic_str(pic, argv[i], NULL)) op 0)) { \ return pic_false_value(pic); \ } \ } \ @@ -567,7 +529,7 @@ pic_str_string_map(pic_state *pic) for (i = 0; i < len; ++i) { vals = pic_nil_value(pic); for (j = 0; j < argc; ++j) { - pic_push(pic, pic_char_value(pic, pic_str_ref(pic, argv[j], i)), vals); + pic_push(pic, pic_char_value(pic, pic_str(pic, argv[j], 0)[i]), vals); } vals = pic_reverse(pic, vals); val = pic_funcall(pic, "picrin.base", "apply", 2, proc, vals); @@ -602,7 +564,7 @@ pic_str_string_for_each(pic_state *pic) for (i = 0; i < len; ++i) { vals = pic_nil_value(pic); for (j = 0; j < argc; ++j) { - pic_push(pic, pic_char_value(pic, pic_str_ref(pic, argv[j], i)), vals); + pic_push(pic, pic_char_value(pic, pic_str(pic, argv[j], 0)[i]), vals); } vals = pic_reverse(pic, vals); pic_funcall(pic, "picrin.base", "apply", 2, proc, vals); @@ -652,7 +614,7 @@ pic_str_string_to_list(pic_state *pic) list = pic_nil_value(pic); for (i = start; i < end; ++i) { - pic_push(pic, pic_char_value(pic, pic_str_ref(pic, str, i)), list); + pic_push(pic, pic_char_value(pic, pic_str(pic, str, 0)[i]), list); } return pic_reverse(pic, list); } diff --git a/lib/symbol.c b/lib/symbol.c index 01b37cb1..b33be540 100644 --- a/lib/symbol.c +++ b/lib/symbol.c @@ -6,8 +6,9 @@ #include "object.h" #include "state.h" -#define kh_pic_str_hash(a) (pic_str_hash(pic, obj_value(pic, a))) -#define kh_pic_str_cmp(a, b) (pic_str_cmp(pic, obj_value(pic, a), obj_value(pic, b)) == 0) +#define to_cstr(a) (pic_str(pic, obj_value(pic, a), NULL)) +#define kh_pic_str_hash(a) (kh_str_hash_func(to_cstr(a))) +#define kh_pic_str_cmp(a, b) (kh_str_cmp_func(to_cstr(a), to_cstr(b))) KHASH_DEFINE(oblist, struct string *, symbol *, kh_pic_str_hash, kh_pic_str_cmp)