From 3ba521ae9e238c91198404845e4f213ce541b13d Mon Sep 17 00:00:00 2001 From: Yukihiro Matz Matsumoto Date: Sun, 4 Nov 2012 04:49:43 +0900 Subject: replace FIXNUM_P() by mrb_fixnum_p() --- src/array.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/array.c') diff --git a/src/array.c b/src/array.c index 2e2536368..6b901b4ee 100644 --- a/src/array.c +++ b/src/array.c @@ -719,7 +719,7 @@ mrb_ary_aset(mrb_state *mrb, mrb_value self) mrb_get_args(mrb, "*", &argv, &argc); switch(argc) { case 2: - if (FIXNUM_P(argv[0])) { + if (mrb_fixnum_p(argv[0])) { mrb_ary_set(mrb, self, mrb_fixnum(argv[0]), argv[1]); } else { -- cgit v1.2.3 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() --- include/mruby/value.h | 5 ++++- src/array.c | 12 ++++++------ src/class.c | 4 ++-- src/hash.c | 4 ++-- src/print.c | 2 +- src/string.c | 16 ++++++++-------- src/struct.c | 10 +++++----- src/vm.c | 8 ++++---- 8 files changed, 32 insertions(+), 29 deletions(-) (limited to 'src/array.c') diff --git a/include/mruby/value.h b/include/mruby/value.h index a6d0aab12..99b40914b 100644 --- a/include/mruby/value.h +++ b/include/mruby/value.h @@ -153,13 +153,16 @@ mrb_float_value(mrb_float f) #define mrb_float_p(o) (mrb_type(o) == MRB_TT_FLOAT) #define mrb_undef_p(o) (mrb_type(o) == MRB_TT_UNDEF) #define mrb_nil_p(o) (mrb_type(o) == MRB_TT_FALSE && !(o).value.i) +#define mrb_symbol_p(o) (mrb_type(o) == MRB_TT_SYMBOL) +#define mrb_array_p(o) (mrb_type(o) == MRB_TT_ARRAY) +#define mrb_string_p(o) (mrb_type(o) == MRB_TT_STRING) +#define mrb_hash_p(o) (mrb_type(o) == MRB_TT_HASH) #define mrb_test(o) (mrb_type(o) != MRB_TT_FALSE) #include "mruby/object.h" #define IMMEDIATE_P(x) (mrb_type(x) <= MRB_TT_MAIN) #define SPECIAL_CONST_P(x) IMMEDIATE_P(x) -#define mrb_symbol_p(o) (mrb_type(o) == MRB_TT_SYMBOL) #define RTEST(o) mrb_test(o) #define FL_ABLE(x) (!SPECIAL_CONST_P(x)) diff --git a/src/array.c b/src/array.c index 6b901b4ee..abe5d6379 100644 --- a/src/array.c +++ b/src/array.c @@ -294,7 +294,7 @@ mrb_ary_cmp(mrb_state *mrb, mrb_value ary1) int i, len; mrb_get_args(mrb, "o", &ary2); - if (mrb_type(ary2) != MRB_TT_ARRAY) return mrb_nil_value(); + if (!mrb_array_p(ary2)) return mrb_nil_value(); a1 = RARRAY(ary1); a2 = RARRAY(ary2); if (a1->len == a2->len && a1->ptr == a2->ptr) return mrb_fixnum_value(0); else { @@ -616,7 +616,7 @@ mrb_ary_splice(mrb_state *mrb, mrb_value ary, mrb_int head, mrb_int len, mrb_val tail = head + len; /* size check */ - if (mrb_type(rpl) == MRB_TT_ARRAY) { + if (mrb_array_p(rpl)) { argc = RARRAY_LEN(rpl); argv = RARRAY_PTR(rpl); } @@ -848,7 +848,7 @@ mrb_ary_rindex_m(mrb_state *mrb, mrb_value self) mrb_value mrb_ary_splat(mrb_state *mrb, mrb_value v) { - if (mrb_type(v) == MRB_TT_ARRAY) { + if (mrb_array_p(v)) { return v; } else { @@ -928,7 +928,7 @@ inspect_ary(mrb_state *mrb, mrb_value ary, mrb_value list) if (i > 0) { mrb_str_buf_cat(mrb, arystr, sep, sizeof(sep)); } - if (mrb_type(RARRAY_PTR(ary)[i]) == MRB_TT_ARRAY) { + if (mrb_array_p(RARRAY_PTR(ary)[i])) { s = inspect_ary(mrb, RARRAY_PTR(ary)[i], list); } else { s = mrb_inspect(mrb, RARRAY_PTR(ary)[i]); @@ -1068,7 +1068,7 @@ mrb_ary_equal(mrb_state *mrb, mrb_value ary1) mrb_get_args(mrb, "o", &ary2); if (mrb_obj_equal(mrb, ary1, ary2)) return mrb_true_value(); if (SPECIAL_CONST_P(ary2)) return mrb_false_value(); - if (mrb_type(ary2) != MRB_TT_ARRAY) { + if (!mrb_array_p(ary2)) { if (!mrb_respond_to(mrb, ary2, mrb_intern(mrb, "to_ary"))) { return mrb_false_value(); } @@ -1107,7 +1107,7 @@ mrb_ary_eql(mrb_state *mrb, mrb_value ary1) mrb_get_args(mrb, "o", &ary2); if (mrb_obj_equal(mrb, ary1, ary2)) return mrb_true_value(); - if (mrb_type(ary2) != MRB_TT_ARRAY) return mrb_false_value(); + if (!mrb_array_p(ary2)) return mrb_false_value(); if (RARRAY_LEN(ary1) != RARRAY_LEN(ary2)) return mrb_false_value(); else { int i; diff --git a/src/class.c b/src/class.c index c9a5e02bd..7f11dc25c 100644 --- a/src/class.c +++ b/src/class.c @@ -1322,10 +1322,10 @@ mod_define_method(mrb_state *mrb, mrb_value self) static mrb_sym mrb_sym_value(mrb_state *mrb, mrb_value val) { - if(mrb_type(val) == MRB_TT_STRING) { + if (mrb_string_p(val)) { return mrb_intern_str(mrb, val); } - else if(mrb_type(val) != MRB_TT_SYMBOL) { + else if(!mrb_symbol_p(val)) { mrb_value obj = mrb_funcall(mrb, val, "inspect", 0); mrb_raisef(mrb, E_TYPE_ERROR, "%s is not a symbol", mrb_string_value_ptr(mrb, obj)); diff --git a/src/hash.c b/src/hash.c index 51f85f4e8..229e61db7 100644 --- a/src/hash.c +++ b/src/hash.c @@ -37,7 +37,7 @@ static void mrb_hash_modify(mrb_state *mrb, mrb_value hash); static inline mrb_value mrb_hash_ht_key(mrb_state *mrb, mrb_value key) { - if (mrb_type(key) == MRB_TT_STRING) + if (mrb_string_p(key)) return mrb_str_dup(mrb, key); else return key; @@ -1106,7 +1106,7 @@ hash_equal(mrb_state *mrb, mrb_value hash1, mrb_value hash2, int eql) khash_t(ht) *h1, *h2; if (mrb_obj_equal(mrb, hash1, hash2)) return mrb_true_value(); - if (mrb_type(hash2) != MRB_TT_HASH) { + if (!mrb_hash_p(hash2)) { if (!mrb_respond_to(mrb, hash2, mrb_intern(mrb, "to_hash"))) { return mrb_false_value(); } diff --git a/src/print.c b/src/print.c index e6805edbf..3b762e05f 100644 --- a/src/print.c +++ b/src/print.c @@ -16,7 +16,7 @@ printstr(mrb_state *mrb, mrb_value obj) char *s; int len; - if (mrb_type(obj) == MRB_TT_STRING) { + if (mrb_string_p(obj)) { str = mrb_str_ptr(obj); s = str->ptr; len = str->len; 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) { diff --git a/src/struct.c b/src/struct.c index be57468e1..2ae904fa5 100644 --- a/src/struct.c +++ b/src/struct.c @@ -58,7 +58,7 @@ mrb_struct_s_members(mrb_state *mrb, mrb_value klass) if (mrb_nil_p(members)) { mrb_raise(mrb, E_TYPE_ERROR, "uninitialized struct"); } - if (mrb_type(members) != MRB_TT_ARRAY) { + if (!mrb_array_p(members)) { mrb_raise(mrb, E_TYPE_ERROR, "corrupted struct"); } return members; @@ -381,7 +381,7 @@ mrb_struct_s_def(mrb_state *mrb, mrb_value klass) else { if (argc > 0) name = argv[0]; if (argc > 1) rest = argv[1]; - if (mrb_type(rest) == MRB_TT_ARRAY) { + if (mrb_array_p(rest)) { if (!mrb_nil_p(name) && mrb_symbol_p(name)) { /* 1stArgument:symbol -> name=nil rest=argv[0]-[n] */ mrb_ary_unshift(mrb, rest, name); @@ -417,7 +417,7 @@ num_members(mrb_state *mrb, struct RClass *klass) { mrb_value members; members = struct_ivar_get(mrb, mrb_obj_value(klass), mrb_intern(mrb, "__members__")); - if (mrb_type(members) != MRB_TT_ARRAY) { + if (!mrb_array_p(members)) { mrb_raise(mrb, E_TYPE_ERROR, "broken members"); } return RARRAY_LEN(members); @@ -588,7 +588,7 @@ mrb_struct_aref_n(mrb_state *mrb, mrb_value s, mrb_value idx) { long i; - if (mrb_type(idx) == MRB_TT_STRING || mrb_type(idx) == MRB_TT_SYMBOL) { + if (mrb_string_p(idx) || mrb_symbol_p(idx)) { return mrb_struct_aref_id(mrb, s, mrb_to_id(mrb, idx)); } @@ -668,7 +668,7 @@ mrb_struct_aset(mrb_state *mrb, mrb_value s) mrb_get_args(mrb, "oo", &idx, &val); - if (mrb_type(idx) == MRB_TT_STRING || mrb_type(idx) == MRB_TT_SYMBOL) { + if (mrb_string_p(idx) || mrb_symbol_p(idx)) { return mrb_struct_aset_id(mrb, s, mrb_to_id(mrb, idx), val); } diff --git a/src/vm.c b/src/vm.c index 953863a0b..b5bde896b 100644 --- a/src/vm.c +++ b/src/vm.c @@ -992,7 +992,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) struct RArray *rest; int len = 0; - if (mrb_type(stack[m1]) == MRB_TT_ARRAY) { + if (mrb_array_p(stack[m1])) { struct RArray *ary = mrb_ary_ptr(stack[m1]); pp = ary->ptr; @@ -1047,7 +1047,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) } } } - else if (len > 1 && argc == 1 && mrb_type(argv[0]) == MRB_TT_ARRAY) { + else if (len > 1 && argc == 1 && mrb_array_p(argv[0])) { argc = mrb_ary_ptr(argv[0])->len; argv = mrb_ary_ptr(argv[0])->ptr; } @@ -1592,7 +1592,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) int c = GETARG_C(i); mrb_value v = regs[GETARG_B(i)]; - if (mrb_type(v) != MRB_TT_ARRAY) { + if (!mrb_array_p(v)) { if (c == 0) { regs[GETARG_A(i)] = v; } @@ -1619,7 +1619,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) int pre = GETARG_B(i); int post = GETARG_C(i); - if (mrb_type(v) != MRB_TT_ARRAY) { + if (!mrb_array_p(v)) { regs[a++] = mrb_ary_new_capa(mrb, 0); while (post--) { SET_NIL_VALUE(regs[a]); -- cgit v1.2.3 From 902dd6380317e73b7dc99b64e04a75ac47fa5db0 Mon Sep 17 00:00:00 2001 From: Yukihiro Matz Matsumoto Date: Sun, 4 Nov 2012 05:15:22 +0900 Subject: remove FL_XXX macros --- include/mruby/value.h | 18 ++---------------- src/array.c | 2 +- src/etc.c | 4 ++-- src/gc.c | 2 +- 4 files changed, 6 insertions(+), 20 deletions(-) (limited to 'src/array.c') diff --git a/include/mruby/value.h b/include/mruby/value.h index 75302792b..dd0349e8d 100644 --- a/include/mruby/value.h +++ b/include/mruby/value.h @@ -161,22 +161,8 @@ mrb_float_value(mrb_float f) #include "mruby/object.h" -#define IMMEDIATE_P(x) (mrb_type(x) <= MRB_TT_MAIN) -#define SPECIAL_CONST_P(x) IMMEDIATE_P(x) - -#define FL_ABLE(x) (!SPECIAL_CONST_P(x)) -#define FL_TEST(x,f) (FL_ABLE(x)?(RBASIC(x)->flags&(f)):0) -#define FL_ANY(x,f) FL_TEST(x,f) -#define FL_ALL(x,f) (FL_TEST(x,f) == (f)) -#define FL_SET(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags |= (f);} while (0) -#define FL_UNSET(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags &= ~(f);} while (0) - -static inline mrb_int -mrb_special_const_p(mrb_value obj) -{ - if (SPECIAL_CONST_P(obj)) return 1; - return 0; -} +#define mrb_immediate_p(x) (mrb_type(x) <= MRB_TT_MAIN) +#define mrb_special_const_p(x) mrb_immediate_p(x) static inline mrb_value mrb_fixnum_value(mrb_int i) diff --git a/src/array.c b/src/array.c index abe5d6379..a200de3aa 100644 --- a/src/array.c +++ b/src/array.c @@ -1067,7 +1067,7 @@ mrb_ary_equal(mrb_state *mrb, mrb_value ary1) mrb_get_args(mrb, "o", &ary2); if (mrb_obj_equal(mrb, ary1, ary2)) return mrb_true_value(); - if (SPECIAL_CONST_P(ary2)) return mrb_false_value(); + if (mrb_special_const_p(ary2)) return mrb_false_value(); if (!mrb_array_p(ary2)) { if (!mrb_respond_to(mrb, ary2, mrb_intern(mrb, "to_ary"))) { return mrb_false_value(); diff --git a/src/etc.c b/src/etc.c index 3d861320d..4542c4abd 100644 --- a/src/etc.c +++ b/src/etc.c @@ -25,7 +25,7 @@ mrb_data_object_alloc(mrb_state *mrb, struct RClass *klass, void *ptr, const str void * mrb_get_datatype(mrb_state *mrb, mrb_value obj, const struct mrb_data_type *type) { - if (SPECIAL_CONST_P(obj) || (mrb_type(obj) != MRB_TT_DATA)) { + if (mrb_special_const_p(obj) || (mrb_type(obj) != MRB_TT_DATA)) { return NULL; } if (DATA_TYPE(obj) != type) { @@ -39,7 +39,7 @@ mrb_check_datatype(mrb_state *mrb, mrb_value obj, const struct mrb_data_type *ty { static const char mesg[] = "wrong argument type %s (expected %s)"; - if (SPECIAL_CONST_P(obj) || (mrb_type(obj) != MRB_TT_DATA)) { + if (mrb_special_const_p(obj) || (mrb_type(obj) != MRB_TT_DATA)) { mrb_check_type(mrb, obj, MRB_TT_DATA); } if (DATA_TYPE(obj) != type) { diff --git a/src/gc.c b/src/gc.c index 37e4a363b..66242113b 100644 --- a/src/gc.c +++ b/src/gc.c @@ -318,7 +318,7 @@ gc_protect(mrb_state *mrb, struct RBasic *p) void mrb_gc_protect(mrb_state *mrb, mrb_value obj) { - if (SPECIAL_CONST_P(obj)) return; + if (mrb_special_const_p(obj)) return; gc_protect(mrb, RBASIC(obj)); } -- cgit v1.2.3