[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