aboutsummaryrefslogtreecommitdiffstats
path: root/encoding.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-07-25 08:21:23 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-07-25 08:21:23 +0000
commit6c00e17706eeee9f7a99c6129e1e0afcd586cac5 (patch)
treec8f1a3b88c54e6a0cd368d82d6087cd05f56ddc7 /encoding.c
parent84d473b750cf2ba5e3b1175e592956d42329937f (diff)
downloadruby-6c00e17706eeee9f7a99c6129e1e0afcd586cac5.tar.gz
encoding.c: is_obj_encoding
* encoding.c (is_obj_encoding): new macro to check if obj is an Encoding. obj can be any type while is_data_encoding expects T_DATA only. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42166 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'encoding.c')
-rw-r--r--encoding.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/encoding.c b/encoding.c
index 5be529ba31..3b9b7905c5 100644
--- a/encoding.c
+++ b/encoding.c
@@ -73,6 +73,7 @@ static const rb_data_type_t encoding_data_type = {
};
#define is_data_encoding(obj) (RTYPEDDATA_P(obj) && RTYPEDDATA_TYPE(obj) == &encoding_data_type)
+#define is_obj_encoding(obj) (RB_TYPE_P((obj), T_DATA) && is_data_encoding(obj))
static VALUE
enc_new(rb_encoding *encoding)
@@ -121,7 +122,7 @@ check_encoding(rb_encoding *enc)
static int
enc_check_encoding(VALUE obj)
{
- if (!RB_TYPE_P(obj, T_DATA) || !is_data_encoding(obj)) {
+ if (!is_obj_encoding(obj)) {
return -1;
}
return check_encoding(RDATA(obj)->data);
@@ -1143,7 +1144,7 @@ static VALUE
enc_find(VALUE klass, VALUE enc)
{
int idx;
- if (RB_TYPE_P(enc, T_DATA) && is_data_encoding(enc))
+ if (is_obj_encoding(enc))
return enc;
idx = str_to_encindex(enc);
if (idx == UNSPECIFIED_ENCODING) return Qnil;