[前][次][番号順一覧][スレッド一覧]

ruby-changes:19080

From: nobu <ko1@a...>
Date: Fri, 18 Mar 2011 00:54:32 +0900 (JST)
Subject: [ruby-changes:19080] Ruby:r31119 (trunk): * include/ruby/ruby.h (rb_funcall_passing_block): add prototype.

nobu	2011-03-18 00:54:22 +0900 (Fri, 18 Mar 2011)

  New Revision: 31119

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=31119

  Log:
    * include/ruby/ruby.h (rb_funcall_passing_block): add prototype.
      a patch by James M. Lawrence at [ruby-core:35501]

  Added directories:
    trunk/ext/-test-/funcall/
    trunk/test/-ext-/funcall/
  Added files:
    trunk/ext/-test-/funcall/extconf.rb
    trunk/ext/-test-/funcall/passing_block.c
    trunk/test/-ext-/funcall/test_passing_block.rb
  Modified files:
    trunk/ChangeLog
    trunk/include/ruby/ruby.h

Index: include/ruby/ruby.h
===================================================================
--- include/ruby/ruby.h	(revision 31118)
+++ include/ruby/ruby.h	(revision 31119)
@@ -1144,6 +1144,7 @@
 VALUE rb_funcall(VALUE, ID, int, ...);
 VALUE rb_funcall2(VALUE, ID, int, const VALUE*);
 VALUE rb_funcall3(VALUE, ID, int, const VALUE*);
+VALUE rb_funcall_passing_block(VALUE, ID, int, const VALUE*);
 int rb_scan_args(int, const VALUE*, const char*, ...);
 VALUE rb_call_super(int, const VALUE*);
 
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 31118)
+++ ChangeLog	(revision 31119)
@@ -1,3 +1,8 @@
+Fri Mar 18 00:54:20 2011  Nobuyoshi Nakada  <nobu@r...>
+
+	* include/ruby/ruby.h (rb_funcall_passing_block): add prototype.
+	  a patch by James M. Lawrence at [ruby-core:35501]
+
 Wed Mar 16 08:40:39 2011  Tanaka Akira  <akr@f...>
 
 	* ext/openssl/ossl_x509name.c: parenthesize macro arguments.
Index: ext/-test-/funcall/passing_block.c
===================================================================
--- ext/-test-/funcall/passing_block.c	(revision 0)
+++ ext/-test-/funcall/passing_block.c	(revision 31119)
@@ -0,0 +1,30 @@
+#include "ruby.h"
+
+VALUE rb_funcall_passing_block(VALUE, ID, int, const VALUE*);
+
+static VALUE
+with_funcall2(int argc, VALUE *argv, VALUE self)
+{
+    return rb_funcall2(self, rb_intern("target"), argc, argv);
+}
+
+static VALUE
+with_funcall_passing_block(int argc, VALUE *argv, VALUE self)
+{
+    return rb_funcall_passing_block(self, rb_intern("target"), argc, argv);
+}
+
+void
+Init_funcall(void)
+{
+    VALUE cRelay = rb_path2class("TestFuncall::Relay");
+
+    rb_define_singleton_method(cRelay,
+			       "with_funcall2",
+			       with_funcall2,
+			       -1);
+    rb_define_singleton_method(cRelay,
+			       "with_funcall_passing_block",
+			       with_funcall_passing_block,
+			       -1);
+}

Property changes on: ext/-test-/funcall/passing_block.c
___________________________________________________________________
Added: svn:eol-style
   + LF

Index: ext/-test-/funcall/extconf.rb
===================================================================
--- ext/-test-/funcall/extconf.rb	(revision 0)
+++ ext/-test-/funcall/extconf.rb	(revision 31119)
@@ -0,0 +1,2 @@
+require 'mkmf'
+create_makefile("-test-/funcall/funcall")

Property changes on: ext/-test-/funcall/extconf.rb
___________________________________________________________________
Added: svn:eol-style
   + LF

Index: test/-ext-/funcall/test_passing_block.rb
===================================================================
--- test/-ext-/funcall/test_passing_block.rb	(revision 0)
+++ test/-ext-/funcall/test_passing_block.rb	(revision 31119)
@@ -0,0 +1,22 @@
+require 'test/unit'
+
+class TestFuncall < Test::Unit::TestCase
+  module Relay
+    def self.target(*args, &block)
+      yield(*args) if block
+    end
+  end
+  require '-test-/funcall/funcall'
+
+  def test_with_funcall2
+    ok = nil
+    Relay.with_funcall2("feature#4504") {|arg| ok = arg || true}
+    assert_nil(ok)
+  end
+
+  def test_with_funcall_passing_block
+    ok = nil
+    Relay.with_funcall_passing_block("feature#4504") {|arg| ok = arg || true}
+    assert_equal("feature#4504", ok)
+  end
+end

Property changes on: test/-ext-/funcall/test_passing_block.rb
___________________________________________________________________
Added: svn:eol-style
   + LF


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]