diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | encoding.c | 4 | ||||
-rw-r--r-- | internal.h | 4 | ||||
-rw-r--r-- | io.c | 8 |
4 files changed, 17 insertions, 5 deletions
@@ -1,4 +1,8 @@ -Tue Jul 2 17:22:25 2013 Nobuyoshi Nakada <nobu@ruby-lang.org> +Tue Jul 2 17:22:31 2013 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * internal.h: add UTF-{16,32}{BE,LE}. + + * io.c (io_strip_bom): use built-in encoding indexes in internal.h. * internal.h (rb_{ascii8bit,utf8,usascii}_encindex): use built-in encoding indexes for optimization. diff --git a/encoding.c b/encoding.c index d83fc2d002..98cecaec0a 100644 --- a/encoding.c +++ b/encoding.c @@ -559,6 +559,10 @@ rb_enc_init(void) #undef ENC_REGISTER #ifndef NO_PRESERVED_ENCODING #define ENCDB_REGISTER(name, enc) enc_register_at(ENCINDEX_##enc, name, NULL) + ENCDB_REGISTER("UTF-16BE", UTF_16BE); + ENCDB_REGISTER("UTF-16LE", UTF_16LE); + ENCDB_REGISTER("UTF-32BE", UTF_32BE); + ENCDB_REGISTER("UTF-32LE", UTF_32LE); #undef ENCDB_REGISTER #endif enc_table.count = ENCINDEX_BUILTIN_MAX; diff --git a/internal.h b/internal.h index 8c716e7be7..a5d72164ec 100644 --- a/internal.h +++ b/internal.h @@ -204,6 +204,10 @@ enum ruby_preserved_encindex { #ifndef NO_PRESERVED_ENCODING /* preserved indexes */ + ENCINDEX_UTF_16BE, + ENCINDEX_UTF_16LE, + ENCINDEX_UTF_32BE, + ENCINDEX_UTF_32LE, #endif ENCINDEX_BUILTIN_MAX @@ -5319,7 +5319,7 @@ io_strip_bom(VALUE io) case INT2FIX(0xFE): if (NIL_P(b2 = rb_io_getbyte(io))) break; if (b2 == INT2FIX(0xFF)) { - return rb_enc_find_index("UTF-16BE"); + return ENCINDEX_UTF_16BE; } rb_io_ungetbyte(io, b2); break; @@ -5330,14 +5330,14 @@ io_strip_bom(VALUE io) b3 = rb_io_getbyte(io); if (b3 == INT2FIX(0) && !NIL_P(b4 = rb_io_getbyte(io))) { if (b4 == INT2FIX(0)) { - return rb_enc_find_index("UTF-32LE"); + return ENCINDEX_UTF_32LE; } rb_io_ungetbyte(io, b4); rb_io_ungetbyte(io, b3); } else { rb_io_ungetbyte(io, b3); - return rb_enc_find_index("UTF-16LE"); + return ENCINDEX_UTF_16LE; } } rb_io_ungetbyte(io, b2); @@ -5348,7 +5348,7 @@ io_strip_bom(VALUE io) if (b2 == INT2FIX(0) && !NIL_P(b3 = rb_io_getbyte(io))) { if (b3 == INT2FIX(0xFE) && !NIL_P(b4 = rb_io_getbyte(io))) { if (b4 == INT2FIX(0xFF)) { - return rb_enc_find_index("UTF-32BE"); + return ENCINDEX_UTF_32BE; } rb_io_ungetbyte(io, b4); } |