diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-06-02 20:23:52 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-06-02 20:23:52 +0000 |
commit | 0fec24f972ecd5d0b714a48c9a21e322285f9778 (patch) | |
tree | 8d7b812cb78abfd7fa08891e90d8fb7a2c2d9270 /encoding.c | |
parent | f2980e3e2050f21273bfc8412e83adef5f75b1f0 (diff) | |
download | ruby-0fec24f972ecd5d0b714a48c9a21e322285f9778.tar.gz |
encoding.c: move ruby_encoding_index stuff
* encoding.c: move `ruby_encoding_index` stuff from
include/ruby/encoding.h to hide the extra field.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46323 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'encoding.c')
-rw-r--r-- | encoding.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/encoding.c b/encoding.c index 8e05b82f10..62033cdc2d 100644 --- a/encoding.c +++ b/encoding.c @@ -52,6 +52,13 @@ static struct { st_table *names; } enc_table; +#define ENC_DUMMY_FLAG (1<<24) +#define ENC_INDEX_MASK (~(~0U<<24)) + +#define ENC_TO_ENCINDEX(enc) (int)((enc)->ruby_encoding_index & ENC_INDEX_MASK) +#define ENC_DUMMY_P(enc) ((enc)->ruby_encoding_index & ENC_DUMMY_FLAG) +#define ENC_SET_DUMMY(enc) ((enc)->ruby_encoding_index |= ENC_DUMMY_FLAG) + void rb_enc_init(void); #define ENCODING_COUNT ENCINDEX_BUILTIN_MAX @@ -109,6 +116,18 @@ rb_enc_from_encoding(rb_encoding *encoding) return rb_enc_from_encoding_index(idx); } +int +rb_enc_to_index(rb_encoding *enc) +{ + return enc ? ENC_TO_ENCINDEX(enc) : 0; +} + +int +rb_enc_dummy_p(rb_encoding *enc) +{ + return ENC_DUMMY_P(enc) != 0; +} + static int enc_autoload(rb_encoding *); static int @@ -352,7 +371,7 @@ set_base_encoding(int index, rb_encoding *base) rb_encoding *enc = enc_table.list[index].enc; enc_table.list[index].base = base; - if (rb_enc_dummy_p(base)) ENC_SET_DUMMY((rb_raw_encoding *)enc); + if (ENC_DUMMY_P(base)) ENC_SET_DUMMY((rb_raw_encoding *)enc); return enc; } |