[macruby-changes] [4586] MacRuby/trunk/string.c
source_changes at macosforge.org
source_changes at macosforge.org
Thu Oct 7 17:33:20 PDT 2010
Revision: 4586
http://trac.macosforge.org/projects/ruby/changeset/4586
Author: lsansonetti at apple.com
Date: 2010-10-07 17:33:19 -0700 (Thu, 07 Oct 2010)
Log Message:
-----------
add String#pointer which returns a Pointer object wrapping the string's internal storage (let's hope vincent won't see this...)
Modified Paths:
--------------
MacRuby/trunk/string.c
Modified: MacRuby/trunk/string.c
===================================================================
--- MacRuby/trunk/string.c 2010-10-06 23:05:28 UTC (rev 4585)
+++ MacRuby/trunk/string.c 2010-10-08 00:33:19 UTC (rev 4586)
@@ -1782,6 +1782,7 @@
* str.to_data => NSData
*
* returns an NSData object wrapping the receiver's internal storage.
+ *
*/
static VALUE
@@ -1796,6 +1797,23 @@
/*
* call-seq:
+ * str.pointer => Pointer
+ *
+ * returns a Pointer object wrapping the receiver's internal storage (be
+ * very careful, changing the pointer will change the original string's
+ * content!).
+ */
+
+static VALUE
+rstr_pointer(VALUE self, SEL sel)
+{
+ str_make_data_binary(RSTR(self));
+ return rb_pointer_new("C", RSTR(self)->data.bytes,
+ RSTR(self)->length_in_bytes);
+}
+
+/*
+ * call-seq:
* str.force_encoding(encoding) => str
*
* Changes the encoding to +encoding+ and returns self.
@@ -5793,6 +5811,7 @@
rb_objc_define_method(rb_cRubyString, "getbyte", rstr_getbyte, 1);
rb_objc_define_method(rb_cRubyString, "setbyte", rstr_setbyte, 2);
rb_objc_define_method(rb_cRubyString, "to_data", rstr_to_data, 0);
+ rb_objc_define_method(rb_cRubyString, "pointer", rstr_pointer, 0);
rb_objc_define_method(rb_cRubyString, "force_encoding",
rstr_force_encoding, 1);
rb_objc_define_method(rb_cRubyString, "valid_encoding?",
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20101007/746f6c4d/attachment.html>
More information about the macruby-changes
mailing list