From d2d2e9f5f9267c2583aa542b4066d109a07b742e Mon Sep 17 00:00:00 2001 From: Yukihiro Matz Matsumoto Date: Sun, 4 Nov 2012 05:02:39 +0900 Subject: add new predicates mrb_string_p(),mrb_array_p(),mrb_hash_p() --- src/string.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src/string.c') diff --git a/src/string.c b/src/string.c index 8eb08562d..055e5aace 100644 --- a/src/string.c +++ b/src/string.c @@ -333,7 +333,7 @@ mrb_str_concat(mrb_state *mrb, mrb_value self, mrb_value other) int len; str_modify(mrb, s1); - if (mrb_type(other) != MRB_TT_STRING) { + if (!mrb_string_p(other)) { other = mrb_str_to_str(mrb, other); } s2 = mrb_str_ptr(other); @@ -519,7 +519,7 @@ mrb_str_cmp_m(mrb_state *mrb, mrb_value str1) mrb_int result; mrb_get_args(mrb, "o", &str2); - if (mrb_type(str2) != MRB_TT_STRING) { + if (!mrb_string_p(str2)) { if (!mrb_respond_to(mrb, str2, mrb_intern(mrb, "to_s"))) { return mrb_nil_value(); } @@ -557,7 +557,7 @@ int mrb_str_equal(mrb_state *mrb, mrb_value str1, mrb_value str2) { if (mrb_obj_equal(mrb, str1, str2)) return TRUE; - if (mrb_type(str2) != MRB_TT_STRING) { + if (!mrb_string_p(str2)) { if (mrb_nil_p(str2)) return FALSE; if (!mrb_respond_to(mrb, str2, mrb_intern(mrb, "to_str"))) { return FALSE; @@ -595,7 +595,7 @@ mrb_str_to_str(mrb_state *mrb, mrb_value str) { mrb_value s; - if (mrb_type(str) != MRB_TT_STRING) { + if (!mrb_string_p(str)) { s = mrb_check_convert_type(mrb, str, MRB_TT_STRING, "String", "to_str"); if (mrb_nil_p(s)) { s = mrb_convert_type(mrb, str, MRB_TT_STRING, "String", "to_s"); @@ -609,7 +609,7 @@ mrb_value mrb_string_value(mrb_state *mrb, mrb_value *ptr) { mrb_value s = *ptr; - if (mrb_type(s) != MRB_TT_STRING) { + if (!mrb_string_p(s)) { s = mrb_str_to_str(mrb, s); *ptr = s; } @@ -1653,11 +1653,11 @@ mrb_obj_as_string(mrb_state *mrb, mrb_value obj) { mrb_value str; - if (mrb_type(obj) == MRB_TT_STRING) { + if (mrb_string_p(obj)) { return obj; } str = mrb_funcall(mrb, obj, "to_s", 0); - if (mrb_type(str) != MRB_TT_STRING) + if (!mrb_string_p(str)) return mrb_any_to_s(mrb, obj); return str; } @@ -2141,7 +2141,7 @@ mrb_str_split_m(mrb_state *mrb, mrb_value str) split_type = awk; } else { - if (mrb_type(spat) == MRB_TT_STRING) { + if (mrb_string_p(spat)) { split_type = string; #ifdef ENABLE_REGEXP if (RSTRING_LEN(spat) == 0) { -- cgit v1.2.3 From c903910c6b8f82b7f158a189b1671296618b0fe0 Mon Sep 17 00:00:00 2001 From: Yukihiro Matz Matsumoto Date: Sun, 4 Nov 2012 13:56:08 +0900 Subject: replace RBASIC by mrb_basic --- include/mruby/object.h | 6 ++---- src/encoding.h | 4 ++-- src/gc.c | 28 ++++++++++++++-------------- src/kernel.c | 2 +- src/re.c | 6 +++--- src/string.c | 2 +- 6 files changed, 23 insertions(+), 25 deletions(-) (limited to 'src/string.c') diff --git a/include/mruby/object.h b/include/mruby/object.h index afdce5546..544450040 100644 --- a/include/mruby/object.h +++ b/include/mruby/object.h @@ -42,10 +42,8 @@ struct RObject { struct iv_tbl *iv; }; -#define mrb_obj_ptr(v) ((struct RObject*)((v).value.p)) -#define RBASIC(obj) ((struct RBasic*)((obj).value.p)) -#define RBASIC_KLASS(v) ((struct RClass *)(((struct RBasic*)((v).value.p))->c)) -#define ROBJECT(v) ((struct RObject*)((v).value.p)) +#define mrb_obj_ptr(v) ((struct RObject*)((v).value.p)) +#define mrb_basic(v) ((struct RBasic*)((v).value.p)) #define ROBJECT_IVPTR(v) (((struct RObject*)((v).value.p))->iv) #define ROBJECT_NUMIV(v) (ROBJECT_IVPTR(v) ? ROBJECT_IVPTR(v)->size : 0) diff --git a/src/encoding.h b/src/encoding.h index 00cb92bd8..7bc0d9ef0 100644 --- a/src/encoding.h +++ b/src/encoding.h @@ -35,8 +35,8 @@ extern "C" { #define ENCODING_MASK (((unsigned int)ENCODING_INLINE_MAX)<flags &= ~ENCODING_MASK;\ - RBASIC(obj)->flags |= (unsigned int)(i) << ENCODING_SHIFT;\ + mrb_obj_ptr(obj)->flags &= ~ENCODING_MASK;\ + mrb_obj_ptr(obj)->flags |= (unsigned int)(i) << ENCODING_SHIFT;\ } while (0) #define ENCODING_SET(mrb, obj,i) do {\ mrb_value mrb_encoding_set_obj = (obj); \ diff --git a/src/gc.c b/src/gc.c index 66242113b..c387f69f6 100644 --- a/src/gc.c +++ b/src/gc.c @@ -319,7 +319,7 @@ void mrb_gc_protect(mrb_state *mrb, mrb_value obj) { if (mrb_special_const_p(obj)) return; - gc_protect(mrb, RBASIC(obj)); + gc_protect(mrb, mrb_basic(obj)); } struct RBasic* @@ -1076,8 +1076,8 @@ test_mrb_field_write_barrier(void) struct RBasic *obj, *value; puts("test_mrb_field_write_barrier"); - obj = RBASIC(mrb_ary_new(mrb)); - value = RBASIC(mrb_str_new_cstr(mrb, "value")); + obj = mrb_basic(mrb_ary_new(mrb)); + value = mrb_basic(mrb_str_new_cstr(mrb, "value")); paint_black(obj); paint_partial_white(mrb,value); @@ -1118,15 +1118,15 @@ test_mrb_field_write_barrier(void) { puts("test_mrb_field_write_barrier_value"); - obj = RBASIC(mrb_ary_new(mrb)); + obj = mrb_basic(mrb_ary_new(mrb)); mrb_value value = mrb_str_new_cstr(mrb, "value"); paint_black(obj); - paint_partial_white(mrb, RBASIC(value)); + paint_partial_white(mrb, mrb_basic(value)); mrb->gc_state = GC_STATE_MARK; mrb_field_write_barrier_value(mrb, obj, value); - gc_assert(is_gray(RBASIC(value))); + gc_assert(is_gray(mrb_basic(value))); } mrb_close(mrb); @@ -1139,7 +1139,7 @@ test_mrb_write_barrier(void) struct RBasic *obj; puts("test_mrb_write_barrier"); - obj = RBASIC(mrb_ary_new(mrb)); + obj = mrb_basic(mrb_ary_new(mrb)); paint_black(obj); puts(" in GC_STATE_MARK"); @@ -1167,12 +1167,12 @@ test_add_gray_list(void) puts("test_add_gray_list"); gc_assert(mrb->gray_list == NULL); - obj1 = RBASIC(mrb_str_new_cstr(mrb, "test")); + obj1 = mrb_basic(mrb_str_new_cstr(mrb, "test")); add_gray_list(mrb, obj1); gc_assert(mrb->gray_list == obj1); gc_assert(is_gray(obj1)); - obj2 = RBASIC(mrb_str_new_cstr(mrb, "test")); + obj2 = mrb_basic(mrb_str_new_cstr(mrb, "test")); add_gray_list(mrb, obj2); gc_assert(mrb->gray_list == obj2); gc_assert(mrb->gray_list->gcnext == obj1); @@ -1201,12 +1201,12 @@ test_gc_gray_mark(void) puts(" in MRB_TT_ARRAY"); obj_v = mrb_ary_new(mrb); value_v = mrb_str_new_cstr(mrb, "test"); - paint_gray(RBASIC(obj_v)); - paint_partial_white(mrb, RBASIC(value_v)); + paint_gray(mrb_basic(obj_v)); + paint_partial_white(mrb, mrb_basic(value_v)); mrb_ary_push(mrb, obj_v, value_v); - gray_num = gc_gray_mark(mrb, RBASIC(obj_v)); - gc_assert(is_black(RBASIC(obj_v))); - gc_assert(is_gray(RBASIC(value_v))); + gray_num = gc_gray_mark(mrb, mrb_basic(obj_v)); + gc_assert(is_black(mrb_basic(obj_v))); + gc_assert(is_gray(mrb_basic(value_v))); gc_assert(gray_num == 1); mrb_close(mrb); diff --git a/src/kernel.c b/src/kernel.c index 043551ccc..ac3c10f46 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -269,7 +269,7 @@ mrb_obj_class_m(mrb_state *mrb, mrb_value self) struct RClass* mrb_singleton_class_clone(mrb_state *mrb, mrb_value obj) { - struct RClass *klass = RBASIC(obj)->c; + struct RClass *klass = mrb_basic(obj)->c; if (klass->tt != MRB_TT_SCLASS) return klass; diff --git a/src/re.c b/src/re.c index e2363d07a..091c35f61 100644 --- a/src/re.c +++ b/src/re.c @@ -344,8 +344,8 @@ mrb_reg_options(mrb_state *mrb, mrb_value re) mrb_reg_check(mrb, re); options = RREGEXP(re)->ptr->options & ARG_REG_OPTION_MASK; - if (RBASIC(re)->flags & KCODE_FIXED) options |= ARG_ENCODING_FIXED; - if (RBASIC(re)->flags & REG_ENCODING_NONE) options |= ARG_ENCODING_NONE; + if (mrb_basic(re)->flags & KCODE_FIXED) options |= ARG_ENCODING_FIXED; + if (mrb_basic(re)->flags & REG_ENCODING_NONE) options |= ARG_ENCODING_NONE; return options; } @@ -361,7 +361,7 @@ mrb_reg_desc(mrb_state *mrb, const char *s, long len, mrb_value re) mrb_reg_check(mrb, re); if (*option_to_str(opts, RREGEXP(re)->ptr->options)) mrb_str_buf_cat(mrb, str, opts, strlen(opts));//mrb_str_buf_cat2(str, opts); - if (RBASIC(re)->flags & REG_ENCODING_NONE) + if (mrb_basic(re)->flags & REG_ENCODING_NONE) mrb_str_buf_cat(mrb, str, "n", 1); } diff --git a/src/string.c b/src/string.c index 055e5aace..760b02883 100644 --- a/src/string.c +++ b/src/string.c @@ -1317,7 +1317,7 @@ str_gsub(mrb_state *mrb, mrb_value str, mrb_int bang) mrb_str_buf_cat(mrb, dest, cp, RSTRING_LEN(str) - offset); } mrb_reg_search(mrb, pat, str, last, 0); - RBASIC(dest)->c = mrb_obj_class(mrb, str); + mrb_basic(dest)->c = mrb_obj_class(mrb, str); return str; } -- cgit v1.2.3