[macruby-changes] [3802] MacRuby/trunk/re.cpp

source_changes at macosforge.org source_changes at macosforge.org
Wed Mar 17 22:34:51 PDT 2010


Revision: 3802
          http://trac.macosforge.org/projects/ruby/changeset/3802
Author:   lsansonetti at apple.com
Date:     2010-03-17 22:34:51 -0700 (Wed, 17 Mar 2010)
Log Message:
-----------
added #hash

Modified Paths:
--------------
    MacRuby/trunk/re.cpp

Modified: MacRuby/trunk/re.cpp
===================================================================
--- MacRuby/trunk/re.cpp	2010-03-18 05:34:06 UTC (rev 3801)
+++ MacRuby/trunk/re.cpp	2010-03-18 05:34:51 UTC (rev 3802)
@@ -448,6 +448,26 @@
 }
 
 /*
+ * call-seq:
+ *   rxp.hash   => fixnum
+ *
+ * Produce a hash based on the text and options of this regular expression.
+ */
+
+static VALUE
+regexp_hash(VALUE rcv, SEL sel)
+{
+    UnicodeString *unistr = RREGEXP(rcv)->unistr;
+    assert(unistr != NULL);
+
+    unsigned long code = rb_str_hash_uchars(unistr->getBuffer(),
+	    unistr->length());
+    code += rb_reg_options(rcv);
+
+    return LONG2NUM(code);
+}
+
+/*
  *  call-seq:
  *     rxp == other_rxp      => true or false
  *     rxp.eql?(other_rxp)   => true or false
@@ -1058,7 +1078,7 @@
 	    (void *)regexp_initialize, -1);
     rb_objc_define_method(rb_cRegexp, "initialize_copy",
 	    (void *)regexp_initialize_copy, 1);
-    //rb_objc_define_method(rb_cRegexp, "hash", rb_reg_hash, 0);
+    rb_objc_define_method(rb_cRegexp, "hash", (void *)regexp_hash, 0);
     rb_objc_define_method(rb_cRegexp, "eql?", (void *)regexp_equal, 1);
     rb_objc_define_method(rb_cRegexp, "==", (void *)regexp_equal, 1);
     rb_objc_define_method(rb_cRegexp, "=~", (void *)regexp_match, 1);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100317/b96a28de/attachment.html>


More information about the macruby-changes mailing list