From b2c81746ace2e7a2ab5433e59b585776d945499a Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 21 Oct 2007 09:29:19 +0000 Subject: * encoding.c (rb_enc_default, rb_enc_primary): return pointers to rb_encoding of default and primary respectively. [ruby-core:12795] * encoding.c (set_primary_encoding): removed primary_encoding setter. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13746 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- encoding.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) (limited to 'encoding.c') diff --git a/encoding.c b/encoding.c index a67e49fefb..3de7fcf3d3 100644 --- a/encoding.c +++ b/encoding.c @@ -48,6 +48,7 @@ VALUE rb_enc_from_encoding(rb_encoding *encoding) { VALUE enc; + if (!encoding) return 0; if (enc_initialized_p(encoding)) return ENC_FROM_ENCODING(encoding); enc = enc_new(encoding); @@ -524,12 +525,27 @@ enc_load(VALUE klass, VALUE str) return enc_find(klass, str); } -static VALUE rb_primary_encoding; +static int primary_encoding_index; + +rb_encoding * +rb_enc_default(void) +{ + if (!enc_table) { + rb_enc_init(); + } + return enc_table[0].enc; +} + +rb_encoding * +rb_enc_primary(void) +{ + return rb_enc_from_index(primary_encoding_index); +} VALUE rb_get_primary_encoding(void) { - return rb_primary_encoding; + return rb_enc_from_encoding(rb_enc_primary()); } static VALUE @@ -542,14 +558,7 @@ void rb_set_primary_encoding(VALUE encoding) { rb_to_encoding(encoding); - rb_primary_encoding = encoding; -} - -static VALUE -set_primary_encoding(VALUE klass, VALUE enc) -{ - rb_set_primary_encoding(enc); - return rb_primary_encoding; + primary_encoding_index = ENCODING_GET(encoding); } static void @@ -616,9 +625,7 @@ Init_Encoding(void) rb_define_method(rb_cEncoding, "_dump", enc_dump, -1); rb_define_singleton_method(rb_cEncoding, "_load", enc_load, 1); - rb_primary_encoding = rb_enc_from_encoding(rb_enc_from_index(0)); rb_define_singleton_method(rb_cEncoding, "primary_encoding", get_primary_encoding, 0); - rb_define_singleton_method(rb_cEncoding, "primary_encoding=", set_primary_encoding, 1); for (i = 0; i < enc_table_size; ++i) { rb_encoding *enc = enc_table[i].enc; -- cgit v1.2.3