Revision: 4390 http://trac.macosforge.org/projects/ruby/changeset/4390 Author: joshua.ballanco@apple.com Date: 2010-07-28 16:17:04 -0700 (Wed, 28 Jul 2010) Log Message: ----------- Implement a few more of the MRI encoding APIs Modified Paths: -------------- MacRuby/trunk/encoding.c Modified: MacRuby/trunk/encoding.c =================================================================== --- MacRuby/trunk/encoding.c 2010-07-28 20:23:22 UTC (rev 4389) +++ MacRuby/trunk/encoding.c 2010-07-28 23:17:04 UTC (rev 4390) @@ -484,6 +484,12 @@ default_external = RENC(encoding); } +rb_encoding * +rb_default_internal_encoding(void) +{ + return (rb_encoding *)default_internal; +} + static int index_of_encoding(rb_encoding_t *enc) { @@ -504,6 +510,27 @@ } int +rb_to_encoding_index(VALUE enc) +{ + if (CLASS_OF(enc) != rb_cEncoding && TYPE(enc) != T_STRING) { + return -1; + } + else { + int idx = index_of_encoding(rb_enc_get(enc)); + if (idx >= 0) { + return idx; + } + else if (NIL_P(enc = rb_check_string_type(enc))) { + return -1; + } + if (!rb_enc_asciicompat(rb_enc_get(enc))) { + return -1; + } + return rb_enc_find_index(StringValueCStr(enc)); + } +} + +int rb_enc_find_index(const char *name) { return index_of_encoding(rb_enc_find(name)); @@ -527,3 +554,9 @@ return index_of_encoding(rb_encodings[ENCODING_ASCII]); } +rb_encoding * +rb_enc_from_index(int idx) +{ + assert(idx >= 0 && idx < ENCODINGS_COUNT); + return rb_encodings[idx]; +}