Modified: MacRuby/branches/icu/symbol.c (3654 => 3655)
--- MacRuby/branches/icu/symbol.c 2010-02-28 06:00:59 UTC (rev 3654)
+++ MacRuby/branches/icu/symbol.c 2010-02-28 06:06:58 UTC (rev 3655)
@@ -14,6 +14,7 @@
#include "symbol.h"
#include "ruby/node.h"
#include "vm.h"
+#include "objc.h"
VALUE rb_cSymbol;
@@ -344,6 +345,18 @@
return sym;
}
+static CFIndex
+rsym_imp_length(void *rcv, SEL sel)
+{
+ return CFStringGetLength((CFStringRef)RSYM(rcv)->str);
+}
+
+static UniChar
+rsym_imp_characterAtIndex(void *rcv, SEL sel, CFIndex idx)
+{
+ return CFStringGetCharacterAtIndex((CFStringRef)RSYM(rcv)->str, idx);
+}
+
void
Init_Symbol(void)
{
@@ -366,4 +379,10 @@
rb_objc_define_method(rb_cSymbol, "description", rsym_to_s, 0);
rb_objc_define_method(rb_cSymbol, "intern", rsym_to_sym, 0);
rb_objc_define_method(rb_cSymbol, "to_sym", rsym_to_sym, 0);
+
+ // Cocoa primitives.
+ rb_objc_install_method2((Class)rb_cSymbol, "length",
+ (IMP)rsym_imp_length);
+ rb_objc_install_method2((Class)rb_cSymbol, "characterAtIndex:",
+ (IMP)rsym_imp_characterAtIndex);
}