From d4a510f751d7252e582410bc195e02601dbbf090 Mon Sep 17 00:00:00 2001 From: take_cheeze Date: Thu, 17 Apr 2014 13:30:43 +0900 Subject: Add mrb_regexp_p to check whether mrb_value is Regexp. --- include/mruby/value.h | 1 + src/etc.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/include/mruby/value.h b/include/mruby/value.h index 899ec30eb..0bea02706 100644 --- a/include/mruby/value.h +++ b/include/mruby/value.h @@ -339,6 +339,7 @@ mrb_float_value(struct mrb_state *mrb, mrb_float f) #define mrb_hash_p(o) (mrb_type(o) == MRB_TT_HASH) #define mrb_cptr_p(o) (mrb_type(o) == MRB_TT_CPTR) #define mrb_test(o) mrb_bool(o) +mrb_bool mrb_regexp_p(struct mrb_state*, mrb_value); #define MRB_OBJECT_HEADER \ enum mrb_vtype tt:8;\ diff --git a/src/etc.c b/src/etc.c index 8398aeebd..830c48433 100644 --- a/src/etc.c +++ b/src/etc.c @@ -8,6 +8,7 @@ #include "mruby/string.h" #include "mruby/data.h" #include "mruby/class.h" +#include "mruby/re.h" struct RData* mrb_data_object_alloc(mrb_state *mrb, struct RClass *klass, void *ptr, const mrb_data_type *type) @@ -176,3 +177,8 @@ mrb_cptr_value(mrb_state *mrb, void *p) } #endif /* MRB_WORD_BOXING */ +mrb_bool +mrb_regexp_p(mrb_state *mrb, mrb_value v) +{ + return mrb_class_defined(mrb, REGEXP_CLASS) && mrb_obj_is_kind_of(mrb, v, mrb_class_get(mrb, REGEXP_CLASS)); +} -- cgit v1.2.3 From 699964a86e6492def423d7fcd28f8cd3615df468 Mon Sep 17 00:00:00 2001 From: take_cheeze Date: Thu, 17 Apr 2014 14:31:23 +0900 Subject: Use mrb_regexp_p to check regexp. --- mrbgems/mruby-string-utf8/src/string.c | 2 +- src/string.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mrbgems/mruby-string-utf8/src/string.c b/mrbgems/mruby-string-utf8/src/string.c index 7ce3b9f75..2ed25d648 100644 --- a/mrbgems/mruby-string-utf8/src/string.c +++ b/mrbgems/mruby-string-utf8/src/string.c @@ -65,7 +65,7 @@ noregexp(mrb_state *mrb, mrb_value self) static void regexp_check(mrb_state *mrb, mrb_value obj) { - if (!memcmp(mrb_obj_classname(mrb, obj), REGEXP_CLASS, sizeof(REGEXP_CLASS) - 1)) { + if (mrb_regexp_p(mrb, obj)) { noregexp(mrb, obj); } } diff --git a/src/string.c b/src/string.c index 9c206157e..f78564fb8 100644 --- a/src/string.c +++ b/src/string.c @@ -717,7 +717,7 @@ noregexp(mrb_state *mrb, mrb_value self) static void regexp_check(mrb_state *mrb, mrb_value obj) { - if (!memcmp(mrb_obj_classname(mrb, obj), REGEXP_CLASS, sizeof(REGEXP_CLASS) - 1)) { + if (mrb_regexp_p(mrb, obj)) { noregexp(mrb, obj); } } -- cgit v1.2.3