Revision
4389
Author
lsansonetti@apple.com
Date
2010-07-28 13:23:22 -0700 (Wed, 28 Jul 2010)

Log Message

implement some of the MRI encoding index APIs

Modified Paths

Diff

Modified: MacRuby/trunk/encoding.c (4388 => 4389)


--- MacRuby/trunk/encoding.c	2010-07-28 19:47:07 UTC (rev 4388)
+++ MacRuby/trunk/encoding.c	2010-07-28 20:23:22 UTC (rev 4389)
@@ -484,3 +484,46 @@
     default_external = RENC(encoding); 
 }
 
+static int
+index_of_encoding(rb_encoding_t *enc)
+{
+    if (enc != NULL) {
+	for (int i = 0; i <ENCODINGS_COUNT; i++) {
+	    if (rb_encodings[i] == enc) {
+		return i;
+	    }
+	}
+    }
+    return -1;
+}
+
+int
+rb_enc_get_index(VALUE obj)
+{
+    return index_of_encoding(rb_enc_get(obj));
+}
+
+int
+rb_enc_find_index(const char *name)
+{
+    return index_of_encoding(rb_enc_find(name));
+}
+
+int
+rb_ascii8bit_encindex(void)
+{
+    return index_of_encoding(rb_encodings[ENCODING_BINARY]);
+}
+
+int
+rb_utf8_encindex(void)
+{
+    return index_of_encoding(rb_encodings[ENCODING_UTF8]);
+}
+
+int
+rb_usascii_encindex(void)
+{
+    return index_of_encoding(rb_encodings[ENCODING_ASCII]);
+}
+

Modified: MacRuby/trunk/include/ruby/encoding.h (4388 => 4389)


--- MacRuby/trunk/include/ruby/encoding.h	2010-07-28 19:47:07 UTC (rev 4388)
+++ MacRuby/trunk/include/ruby/encoding.h	2010-07-28 20:23:22 UTC (rev 4389)
@@ -26,6 +26,9 @@
 void rb_enc_set_index(VALUE obj, int encindex);
 int rb_enc_find_index(const char *name);
 int rb_to_encoding_index(VALUE);
+int rb_ascii8bit_encindex(void);
+int rb_utf8_encindex(void);
+int rb_usascii_encindex(void);
 rb_encoding* rb_to_encoding(VALUE);
 rb_encoding* rb_enc_get(VALUE);
 rb_encoding* rb_enc_compatible(VALUE,VALUE);