[macruby-changes] [5223] MacRuby/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Tue Feb 8 18:29:50 PST 2011
Revision: 5223
http://trac.macosforge.org/projects/ruby/changeset/5223
Author: lsansonetti at apple.com
Date: 2011-02-08 18:29:50 -0800 (Tue, 08 Feb 2011)
Log Message:
-----------
better RSTRING_{PTR,LEN] for pure NSStrings
Modified Paths:
--------------
MacRuby/trunk/NSString.m
MacRuby/trunk/encoding.h
MacRuby/trunk/string.c
Modified: MacRuby/trunk/NSString.m
===================================================================
--- MacRuby/trunk/NSString.m 2011-02-09 02:28:44 UTC (rev 5222)
+++ MacRuby/trunk/NSString.m 2011-02-09 02:29:50 UTC (rev 5223)
@@ -427,3 +427,15 @@
rb_objc_define_method(rb_cString, "to_data", rstr_only, 0);
rb_objc_define_method(rb_cString, "pointer", rstr_only, 0);
}
+
+const char *
+nsstr_cstr(VALUE str)
+{
+ return [(NSString *)str UTF8String];
+}
+
+long
+nsstr_clen(VALUE str)
+{
+ return [(NSString *)str lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
+}
Modified: MacRuby/trunk/encoding.h
===================================================================
--- MacRuby/trunk/encoding.h 2011-02-09 02:28:44 UTC (rev 5222)
+++ MacRuby/trunk/encoding.h 2011-02-09 02:29:50 UTC (rev 5223)
@@ -378,6 +378,9 @@
VALUE rstr_new_path(const char *path);
+const char *nsstr_cstr(VALUE str);
+long nsstr_clen(VALUE str);
+
#if defined(__cplusplus)
} // extern "C"
#endif
Modified: MacRuby/trunk/string.c
===================================================================
--- MacRuby/trunk/string.c 2011-02-09 02:28:44 UTC (rev 5222)
+++ MacRuby/trunk/string.c 2011-02-09 02:29:50 UTC (rev 5223)
@@ -6333,24 +6333,7 @@
str_ensure_null_terminator(RSTR(str));
return RSTR(str)->bytes;
}
-
- // CFString code path, hopefully this should not happen very often.
- const char *cptr = (const char *)CFStringGetCStringPtr((CFStringRef)str, 0);
- if (cptr != NULL) {
- return cptr;
- }
-
- const long max = CFStringGetMaximumSizeForEncoding(
- CFStringGetLength((CFStringRef)str),
- kCFStringEncodingUTF8);
- char *cptr2 = (char *)xmalloc(max + 1);
- if (!CFStringGetCString((CFStringRef)str, cptr2, max + 1,
- kCFStringEncodingUTF8)) {
- // Probably an UTF16 string...
- xfree(cptr2);
- return NULL;
- }
- return cptr2;
+ return nsstr_cstr(str);
}
long
@@ -6359,7 +6342,7 @@
if (IS_RSTR(str)) {
return RSTR(str)->length_in_bytes;
}
- return CFStringGetLength((CFStringRef)str);
+ return nsstr_clen(str);
}
char *
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20110208/6bbb3c28/attachment.html>
More information about the macruby-changes
mailing list