<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-13922</id>
	<title>Nabble - ruby-ext jp</title>
	<updated>2009-10-03T05:10:13Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/ruby-ext-jp-f13922.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/ruby-ext-jp-f13922.html" />
	<subtitle type="html">The mailing list for Ruby extension developers.</subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-25728211</id>
	<title>[ruby-ext:02331] Ruby1.9.1でのTRAP_BEG, TRAP_ENDの挙動について</title>
	<published>2009-10-03T05:10:13Z</published>
	<updated>2009-10-03T05:10:13Z</updated>
	<author>
		<name>Hirokazu Yoshida</name>
	</author>
	<content type="html">義田と申します。
&lt;br&gt;&lt;br&gt;ruby-pcap(&lt;a href=&quot;http://www.goto.info.waseda.ac.jp/~fukusima/ruby/pcap-j.html)を&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.goto.info.waseda.ac.jp/~fukusima/ruby/pcap-j.html)を&lt;/a&gt;&lt;br&gt;Ruby1.9.1でも使えるようにしようと思い、Debian上で開発しています。
&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://github.com/yoppi/ruby-pcap&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://github.com/yoppi/ruby-pcap&lt;/a&gt;&lt;br&gt;pcapでパケットをキャプチャする際、pcap_loopやpcap_dispatchでpcap側の制御に
&lt;br&gt;入るとCtrl-CでSIGINTを送っても受けつけないので、現在のruby-pcapの実装では
&lt;br&gt;TRAP_BEG、TRAP_ENDで上記の関数を囲んでいます。
&lt;br&gt;ところが、Ruby1.9.1ではTRAP_BEG、TRAP_ENDはruby/backward/rubysig.hで定義さ
&lt;br&gt;れており、rubysig.h自体がobsoleteであり、TRAP_BEG、TRAP_ENDもdeprecatedと
&lt;br&gt;なっています。
&lt;br&gt;Ruby1.9.1でそれらしい関数やマクロを探してみたのですが、見つけられませんでした。
&lt;br&gt;Ruby1.9.1でTRAP_BEG、TRAP_ENDの代わりとなる関数またはマクロが実装されてい
&lt;br&gt;るなら、ご教示いただけたらと思います。
&lt;br&gt;&lt;br&gt;とりあえず、TRAP_BEG、TRAP_ENDは残したままruby-pcapをコンパイルしたものを使って
&lt;br&gt;以下のスクリプトをRuby1.9.1で実行すると、パケットを一つキャプチャしてそのまま反応がな
&lt;br&gt;くなり、SIGINTも受けつけない状態になりました。
&lt;br&gt;Ruby1.8.7-p160では問題なく動きます。
&lt;br&gt;&lt;br&gt;&amp;nbsp; % cat test.rb
&lt;br&gt;&amp;nbsp; require 'pcap'
&lt;br&gt;&lt;br&gt;&amp;nbsp; dev = Pcap.lookupdev
&lt;br&gt;&amp;nbsp; cap = Pcap::Capture.open_live(dev)
&lt;br&gt;&amp;nbsp; cap.setfilter(&amp;quot;icmp&amp;quot;)
&lt;br&gt;&amp;nbsp; cap.loop do |pkt|
&lt;br&gt;&amp;nbsp; &amp;nbsp; puts pkt
&lt;br&gt;&amp;nbsp; end
&lt;br&gt;&amp;nbsp; cap.close
&lt;br&gt;&lt;br&gt;&amp;nbsp; # 別端末でpingを実行
&lt;br&gt;&amp;nbsp; % ruby test.rb
&lt;br&gt;&amp;nbsp; 192.168.0.10 &amp;gt; 192.169.0.1: icmp: echo request
&lt;br&gt;&amp;nbsp; ^C
&lt;br&gt;&amp;nbsp; ^C
&lt;br&gt;&lt;br&gt;また、TRAP_BEG、TRAP_ENDをコメントアウトしたものをコンパイルして同様のスクリプトで
&lt;br&gt;試したところ、パケットは正常にキャプチャできましたが、やはりSIGINTを受けつけません。
&lt;br&gt;&lt;br&gt;私の環境は以下の通りです。
&lt;br&gt;&lt;br&gt;&amp;nbsp; % gcc --version
&lt;br&gt;&amp;nbsp; gcc (Debian 4.3.2-1) 4.3.2
&lt;br&gt;&lt;br&gt;&amp;nbsp; % ruby --version
&lt;br&gt;&amp;nbsp; ruby 1.9.1p243 (2009-07-16 revision 24175) [i686-linux]
&lt;br&gt;&lt;br&gt;&amp;nbsp; % ruby -rrbconfig -e &amp;quot;puts Config::CONFIG['configure_args']&amp;quot;
&lt;br&gt;&amp;nbsp; '--prefix=/usr/local/apps/ruby/ruby-1.9.1-p243' '--enable-pthread'
&lt;br&gt;&amp;nbsp; '--enable-shared'
&lt;br&gt;&lt;br&gt;&amp;nbsp; % aptitude show libpcap-dev
&lt;br&gt;&amp;nbsp; バージョン: 0.9.8-5
&lt;br&gt;&lt;br&gt;&amp;nbsp; % cat /etc/debian_version
&lt;br&gt;&amp;nbsp; lenny/sid
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;義田
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-ruby-ext%3A02331--Ruby1.9.1%E3%81%A7%E3%81%AETRAP_BEG%2C-TRAP_END%E3%81%AE%E6%8C%99%E5%8B%95%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6-tp25728211p25728211.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-17688924</id>
	<title>[ruby-ext:02330] 質問:Cの配列をrubyの配列に効率よく変換する方法</title>
	<published>2008-06-06T03:23:08Z</published>
	<updated>2008-06-06T03:23:08Z</updated>
	<author>
		<name>Ichitaro Masuda</name>
	</author>
	<content type="html">増田です。
&lt;br&gt;&lt;br&gt;Cの大きなfloat配列をrubyのArrayに高速に変換したいと思っているのですが、何かよい方法はありますか？
&lt;br&gt;今のところ以下のように、rb_ary_storeを利用しているのですが、もっと効率のいい方法があるのではないかと思いまして・・
&lt;br&gt;&lt;br&gt;VALUE wrap_ofSoundGetSpectrum(VALUE self, VALUE nBands)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; VALUE result;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int len;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int i;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; float *spec;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; len = NUM2INT(nBands);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; spec = ofSoundGetSpectrum(len);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; result = rb_ary_new2(len);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (i = 0; i &amp;lt; len; i++) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rb_ary_store(result, i, rb_float_new(spec[i]));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return result;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;また、見よう見まねで以下も試してみたのですが、これだとBus Errorが出てしまいました・・
&lt;br&gt;間抜けな質問ですみませんが、何卒よろしくお願い致します。
&lt;br&gt;&lt;br&gt;VALUE wrap_ofSoundGetSpectrum(VALUE self, VALUE nBands)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; VALUE result;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; VALUE *values
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int len;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int i;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; float *spec;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; len = NUM2INT(nBands);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; spec = ofSoundGetSpectrum(len);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; values = ALLOC_N(VALUE, len);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (i = 0; i &amp;lt; len; i++) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; values[i] = rb_float_new(spec[i]);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; result = rb_ary_new4(len, values);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; free(values);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return result;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-ruby-ext%3A02330--%E8%B3%AA%E5%95%8F%3AC%E3%81%AE%E9%85%8D%E5%88%97%E3%82%92ruby%E3%81%AE%E9%85%8D%E5%88%97%E3%81%AB%E5%8A%B9%E7%8E%87%E3%82%88%E3%81%8F%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95-tp17688924p17688924.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-17594871</id>
	<title>[ruby-ext:02329] Re: C++のフックメソッドをRubyで書くには?</title>
	<published>2008-06-01T23:37:29Z</published>
	<updated>2008-06-01T23:37:29Z</updated>
	<author>
		<name>Ichitaro Masuda</name>
	</author>
	<content type="html">増田です。
&lt;br&gt;&lt;br&gt;お忙しいところ応じていただき、どうもありがとうございました。
&lt;br&gt;悪さをしないライブラリが書けるよう精進したいと思います。
&lt;br&gt;&lt;br&gt;2008/06/02 15:07 Yukihiro Matsumoto &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=17594871&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;matz@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; まつもと ゆきひろです
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; In message &amp;quot;Re: [ruby-ext:02327] Re: C++のフックメソッドをRubyで書くには?&amp;quot;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;on Mon, 2 Jun 2008 14:50:51 +0900, &amp;quot;Ichitaro Masuda&amp;quot; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=17594871&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ichitaro.masuda@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; |&amp;gt; &amp;nbsp;* newでC++オブジェクトを割り当てているがdeleteしているよう
&lt;br&gt;&amp;gt; |&amp;gt; &amp;nbsp; &amp;nbsp;に見えない
&lt;br&gt;&amp;gt; |&amp;gt; &amp;nbsp;* ruby_objメンバが初期化されないことがありえる
&lt;br&gt;&amp;gt; |
&lt;br&gt;&amp;gt; |勉強になります。では、以下のように変更すれば大丈夫でしょうか？
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; たぶん大丈夫だと思います。
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-ruby-ext%3A02325--C%2B%2B%E3%81%AE%E3%83%95%E3%83%83%E3%82%AF%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%92Ruby%E3%81%A7%E6%9B%B8%E3%81%8F%E3%81%AB%E3%81%AF--tp17593862p17594871.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-17594543</id>
	<title>[ruby-ext:02328] Re: C++のフックメソッドをRubyで書くには?</title>
	<published>2008-06-01T23:07:27Z</published>
	<updated>2008-06-01T23:07:27Z</updated>
	<author>
		<name>Yukihiro Matsumoto</name>
	</author>
	<content type="html">まつもと ゆきひろです
&lt;br&gt;&lt;br&gt;In message &amp;quot;Re: [ruby-ext:02327] Re: C++のフックメソッドをRubyで書くには?&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; on Mon, 2 Jun 2008 14:50:51 +0900, &amp;quot;Ichitaro Masuda&amp;quot; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=17594543&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ichitaro.masuda@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;br&gt;|&amp;gt; &amp;nbsp;* newでC++オブジェクトを割り当てているがdeleteしているよう
&lt;br&gt;|&amp;gt; &amp;nbsp; &amp;nbsp;に見えない
&lt;br&gt;|&amp;gt; &amp;nbsp;* ruby_objメンバが初期化されないことがありえる
&lt;br&gt;|
&lt;br&gt;|勉強になります。では、以下のように変更すれば大丈夫でしょうか？
&lt;br&gt;&lt;br&gt;たぶん大丈夫だと思います。
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-ruby-ext%3A02325--C%2B%2B%E3%81%AE%E3%83%95%E3%83%83%E3%82%AF%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%92Ruby%E3%81%A7%E6%9B%B8%E3%81%8F%E3%81%AB%E3%81%AF--tp17593862p17594543.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-17594395</id>
	<title>[ruby-ext:02327] Re: C++のフックメソッドをRubyで書くには?</title>
	<published>2008-06-01T22:50:51Z</published>
	<updated>2008-06-01T22:50:51Z</updated>
	<author>
		<name>Ichitaro Masuda</name>
	</author>
	<content type="html">増田です。
&lt;br&gt;&lt;br&gt;早速のご指摘ありがとうございます。感謝致します。
&lt;br&gt;&lt;br&gt;&amp;gt; ソースを呼んでみて気になる点は
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;* newでC++オブジェクトを割り当てているがdeleteしているよう
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;に見えない
&lt;br&gt;&amp;gt; &amp;nbsp;* ruby_objメンバが初期化されないことがありえる
&lt;br&gt;&lt;br&gt;勉強になります。では、以下のように変更すれば大丈夫でしょうか？
&lt;br&gt;&lt;br&gt;void free_sa(mySimpleApp *app)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;delete app;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;VALUE alloc_sa(VALUE klass)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;mySimpleApp *app;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;VALUE obj;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;app = new mySimpleApp();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;obj = Data_Wrap_Struct(klass, mark_sa, free_sa, app);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;app-&amp;gt;ruby_obj = obj;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;return obj;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;2008/06/02 14:13 Yukihiro Matsumoto &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=17594395&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;matz@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; まつもと ゆきひろです
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; In message &amp;quot;Re: [ruby-ext:02325] C++のフックメソッドをRubyで書くには?&amp;quot;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;on Mon, 2 Jun 2008 13:34:47 +0900, &amp;quot;Ichitaro Masuda&amp;quot; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=17594395&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ichitaro.masuda@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; |初歩的なことで恐縮なのですが、C++の拡張ライブラリの書き方で質問です。
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; |これで動いてはいるものの、GC的に何かやってはならないことを犯しているのではと不安です。「C++のフックメソッドに対応するRubyのフックメソッド」は通常どのように実装されるのでしょうか・・？
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ソースを呼んでみて気になる点は
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;* newでC++オブジェクトを割り当てているがdeleteしているよう
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;に見えない
&lt;br&gt;&amp;gt; &amp;nbsp;* ruby_objメンバが初期化されないことがありえる
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; でした。どちらも些細なことですが。他はおおむね大丈夫なんじゃ
&lt;br&gt;&amp;gt; ないかと思いました。ま、ひとめ見ただけではわからないバグと言
&lt;br&gt;&amp;gt; うのは珍しくはないのですが。
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-ruby-ext%3A02325--C%2B%2B%E3%81%AE%E3%83%95%E3%83%83%E3%82%AF%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%92Ruby%E3%81%A7%E6%9B%B8%E3%81%8F%E3%81%AB%E3%81%AF--tp17593862p17594395.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-17594108</id>
	<title>[ruby-ext:02326] Re: C++のフックメソッドをRubyで書くには?</title>
	<published>2008-06-01T22:13:40Z</published>
	<updated>2008-06-01T22:13:40Z</updated>
	<author>
		<name>Yukihiro Matsumoto</name>
	</author>
	<content type="html">まつもと ゆきひろです
&lt;br&gt;&lt;br&gt;In message &amp;quot;Re: [ruby-ext:02325] C++のフックメソッドをRubyで書くには?&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; on Mon, 2 Jun 2008 13:34:47 +0900, &amp;quot;Ichitaro Masuda&amp;quot; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=17594108&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ichitaro.masuda@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;br&gt;|初歩的なことで恐縮なのですが、C++の拡張ライブラリの書き方で質問です。
&lt;br&gt;&lt;br&gt;|これで動いてはいるものの、GC的に何かやってはならないことを犯しているのではと不安です。「C++のフックメソッドに対応するRubyのフックメソッド」は通常どのように実装されるのでしょうか・・？
&lt;br&gt;&lt;br&gt;ソースを呼んでみて気になる点は
&lt;br&gt;&lt;br&gt;&amp;nbsp; * newでC++オブジェクトを割り当てているがdeleteしているよう
&lt;br&gt;&amp;nbsp; &amp;nbsp; に見えない
&lt;br&gt;&amp;nbsp; * ruby_objメンバが初期化されないことがありえる
&lt;br&gt;&lt;br&gt;でした。どちらも些細なことですが。他はおおむね大丈夫なんじゃ
&lt;br&gt;ないかと思いました。ま、ひとめ見ただけではわからないバグと言
&lt;br&gt;うのは珍しくはないのですが。
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-ruby-ext%3A02325--C%2B%2B%E3%81%AE%E3%83%95%E3%83%83%E3%82%AF%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%92Ruby%E3%81%A7%E6%9B%B8%E3%81%8F%E3%81%AB%E3%81%AF--tp17593862p17594108.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-17593862</id>
	<title>[ruby-ext:02325] C++のフックメソッドをRubyで書くには?</title>
	<published>2008-06-01T21:34:47Z</published>
	<updated>2008-06-01T21:34:47Z</updated>
	<author>
		<name>Ichitaro Masuda</name>
	</author>
	<content type="html">はじめまして。増田です。
&lt;br&gt;初歩的なことで恐縮なのですが、C++の拡張ライブラリの書き方で質問です。
&lt;br&gt;&lt;br&gt;updateというコールバック用のメソッドを持つ、以下のような既存のC++ライブラリのクラスがあり、
&lt;br&gt;&lt;br&gt;class ofSimpleApp {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;virtual void update(){}
&lt;br&gt;};
&lt;br&gt;&lt;br&gt;このコールバックをRubyで書けるようにすべく、対応するRubyオブジェクトを作ってサブクラスで定義したいと思っております。
&lt;br&gt;&lt;br&gt;# Ruby側からは以下のような感じで使えるようにしたい
&lt;br&gt;AppRunner.runApp(Class.new(SimpleApp) do
&lt;br&gt;&amp;nbsp;def update
&lt;br&gt;&amp;nbsp; &amp;nbsp;# 描画ループ
&lt;br&gt;&amp;nbsp;end
&lt;br&gt;end.new)
&lt;br&gt;&lt;br&gt;私なりにやってみたものが、以下になります。
&lt;br&gt;あまり作法が分からず、RubyでラップするC++クラスに、自身のRubyラッパの参照を持たせてしまいました。
&lt;br&gt;updateが呼び出されると、対応するRubyラッパのメソッドを呼び出します。
&lt;br&gt;&lt;br&gt;static int id_update = rb_intern(&amp;quot;update&amp;quot;);
&lt;br&gt;&lt;br&gt;class mySimpleApp : public ofSimpleApp {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;void update();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;VALUE ruby_obj;
&lt;br&gt;};
&lt;br&gt;&lt;br&gt;void mySimpleApp::update() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rb_funcall(ruby_obj, id_update, 0);
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;肝心の拡張ライブラリのメインの部分ですが、以下のようにしています。
&lt;br&gt;&lt;br&gt;static VALUE cMySimpleApp;
&lt;br&gt;&lt;br&gt;//きっとマーク関数が必要だろうと推測
&lt;br&gt;void mark_sa(mySimpleApp *app)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rb_gc_mark(app-&amp;gt;ruby_obj);
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;VALUE alloc_sa(VALUE klass)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return Data_Wrap_Struct(klass, mark_sa, 0, new mySimpleApp);
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;VALUE initialize_sa(VALUE self)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mySimpleApp *app;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Data_Get_Struct(self, mySimpleApp, app);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;app-&amp;gt;ruby_obj = self;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return self;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;#ifdef __cplusplus
&lt;br&gt;extern &amp;quot;C&amp;quot; {
&lt;br&gt;#endif
&lt;br&gt;void Init_rbof(void)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cMySimpleApp = rb_define_class(&amp;quot;SimpleApp&amp;quot;, rb_cObject);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rb_define_alloc_func(cMySimpleApp, alloc_sa);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rb_define_method(cMySimpleApp, &amp;quot;initialize&amp;quot;, (RubyType
&lt;br&gt;*)initialize_sa, 0);
&lt;br&gt;}
&lt;br&gt;#ifdef __cplusplus
&lt;br&gt;}
&lt;br&gt;#endif
&lt;br&gt;&lt;br&gt;これで動いてはいるものの、GC的に何かやってはならないことを犯しているのではと不安です。「C++のフックメソッドに対応するRubyのフックメソッド」は通常どのように実装されるのでしょうか・・？
&lt;br&gt;&lt;br&gt;C++もRubyの拡張ライブラリも初めてでして、かなりおかしなことをしているかもしれませんが、もし何か参考になるソースなどありましたら、ご教授いただけると幸いです。よろしくお願い致します。
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-ruby-ext%3A02325--C%2B%2B%E3%81%AE%E3%83%95%E3%83%83%E3%82%AF%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%92Ruby%E3%81%A7%E6%9B%B8%E3%81%8F%E3%81%AB%E3%81%AF--tp17593862p17593862.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-10613991</id>
	<title>[ruby-ext:02324] Pthreads calling a ruby Proc</title>
	<published>2007-05-14T17:12:05Z</published>
	<updated>2007-05-14T17:12:05Z</updated>
	<author>
		<name>Ericson, Michael (Exchange)</name>
	</author>
	<content type="html">Hello all,
&lt;br&gt;&lt;br&gt;I've been writing ruby bindings to a commercial messaging software
&lt;br&gt;product we use at work (with which I am very familiar) and we have had
&lt;br&gt;wonderful success! &amp;nbsp;Extending Ruby with native code is truly enjoyable;
&lt;br&gt;however, in attempting to create a more sophisticated integration, I've
&lt;br&gt;run into an issue that has lead me down confusing paths. &amp;nbsp;Perhaps people
&lt;br&gt;here can advise.
&lt;br&gt;&lt;br&gt;In this library, messages can be sent to other components that use the
&lt;br&gt;same library asynchronously; when a message is submitted, the caller
&lt;br&gt;also provides a callback handler as a pointer to an object that
&lt;br&gt;implements a particular interface. &amp;nbsp;I would like the Ruby interface user
&lt;br&gt;to provide a Proc that gets wrapped and called by the native callback
&lt;br&gt;handler implementation when the callback handler is invoked by the
&lt;br&gt;library. &amp;nbsp;Of concern is that the pthreads that invoke the callback
&lt;br&gt;handler could be different than (or could be the same as) the thread
&lt;br&gt;that called submit; however, they are guaranteed to invoke the callback
&lt;br&gt;method (and therefore the callback Proc provided by the user) in a
&lt;br&gt;synchronized fashion, even though they may be in different pthreads
&lt;br&gt;(they are abstracted by a pool). &amp;nbsp;The current implementation works under
&lt;br&gt;very light load (perhaps when the submitter and callback threads are the
&lt;br&gt;same?) but crashes more often than not with Segmentation Faults,
&lt;br&gt;notifications of cross-thread scheduling, and such.
&lt;br&gt;&lt;br&gt;My attempt to make this library's threading implementation play nicely
&lt;br&gt;with Ruby's has been simplistic; can someone provide a general strategy
&lt;br&gt;for encouraging Ruby's threads and scheduling system to fit within an
&lt;br&gt;external library's model? &amp;nbsp;I've spent some time reading information on
&lt;br&gt;the mailing lists, other extension modules' source code, as well as
&lt;br&gt;Ruby's own so any advice is welcome.
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;-mike
&lt;br&gt;&lt;br&gt;Michael Ericson
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;***********************************************************************
&lt;br&gt;Bear Stearns is not responsible for any recommendation, solicitation,
&lt;br&gt;offer or agreement or any information about any transaction, customer
&lt;br&gt;account or account activity contained in this communication.
&lt;br&gt;***********************************************************************
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-ruby-ext%3A02324--Pthreads-calling-a-ruby-Proc-tp10613991p10613991.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-9892295</id>
	<title>[ruby-ext:02323] Re: __R e:_【質問】ALLOC_NとALLOCA_N</title>
	<published>2007-04-08T07:35:00Z</published>
	<updated>2007-04-08T07:35:00Z</updated>
	<author>
		<name>mi.ml</name>
	</author>
	<content type="html">質問者の　いしもと　です。
&lt;br&gt;&lt;br&gt;和田さん、中田さん、アドバイスありがとうございます。
&lt;br&gt;知らないことばかりで、とても勉強になります。
&lt;br&gt;ただ、お二方のアドバイスを実行しましたが、悲しいこと
&lt;br&gt;に望むような結果は得られませんでした。
&lt;br&gt;以下、現状報告です。
&lt;br&gt;【和田さん案】
&lt;br&gt;かなり長い配列を引数に指定してもseg faultしなくなった。
&lt;br&gt;しかし、returnされた配列をruby program内で扱おうとす
&lt;br&gt;るとseg faultが発生する。（引数配列の長さによっては発生
&lt;br&gt;しないこともあるが、returnされる配列が少しおかしい。）
&lt;br&gt;（例１）
&lt;br&gt;ary.length==3,000,000
&lt;br&gt;result=calc6(ary, etc)
&lt;br&gt;p result[0] =&amp;gt; seg fault
&lt;br&gt;（例２）
&lt;br&gt;ary.length==1,000,000
&lt;br&gt;result=calc6(ary, etc)
&lt;br&gt;p result[0] =&amp;gt; value &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # ?
&lt;br&gt;p result[-1] =&amp;gt; [index, value] # ok
&lt;br&gt;&lt;br&gt;【中田さん案】
&lt;br&gt;seg faultはしなくなった。しかし、returnされる配列が
&lt;br&gt;空になっている。
&lt;br&gt;（例）
&lt;br&gt;result=calc6(ary, etc)
&lt;br&gt;p result.length =&amp;gt; 0
&lt;br&gt;&lt;br&gt;現在、和田さんが紹介して下さった青木さんのサイトや
&lt;br&gt;rhgなどを見ながら（にわか）猛勉強中です。volatileあた
&lt;br&gt;りも気になっていますが、それ以前に基礎を固める必要も
&lt;br&gt;痛感しています...
&lt;br&gt;引き続きアドバイスなど頂けましたら幸いです。
&lt;br&gt;＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿
&lt;br&gt;いしもと まさと（石本 将人）
&lt;br&gt;&lt;br&gt;&amp;nbsp;
&lt;br&gt;2007年04月08日 16:23 の &amp;quot;Nobuyoshi Nakada&amp;quot; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=9892295&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nobu@...&lt;/a&gt;&amp;gt;のメール:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;なかだです。
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;At Sun, 08 Apr 2007 13:35:28 +0900 (JST),
&lt;br&gt;&amp;gt;ysk wrote in [ruby-ext:02319]:
&lt;br&gt;&amp;gt;&amp;gt; VALUE型をヒープに確保した場合は
&lt;br&gt;&amp;gt;&amp;gt; rb_gc_markという関数でそのことをRuby側に
&lt;br&gt;&amp;gt;&amp;gt; 伝えてやる必要があるようです。
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;rb_gc_mark()をmark用関数以外から呼んではいけません。
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;この場合はresultを先に確保しておいて、そのptrを使うということで
&lt;br&gt;&amp;gt;いいのではないでしょうか。
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;static VALUE
&lt;br&gt;&amp;gt;si_calc6(self, ary1d, x0, y0, a)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;VALUE self;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;VALUE ary1d;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;VALUE x0;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;VALUE y0;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;VALUE a;
&lt;br&gt;&amp;gt;{
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;unsigned int i;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;/* 引数をc言語の型に変換 */
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;int x0c = NUM2INT(x0);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;int y0c = NUM2INT(y0);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;double ac = NUM2DBL(a);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;long length = RARRAY(ary1d)-&amp;gt;len;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;VALUE result = rb_ary_new2(length);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;VALUE *items = RARRAY_PTR(result);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;VALUE klass = RBASIC(result)-&amp;gt;klass;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;VALUE item;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;VALUE t;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;VALUE xt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;double y;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;RBASIC(result)-&amp;gt;klass = 0;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;for (i = 0; i &amp;lt; length; i++){
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;t = INT2FIX(i + x0c);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;y = NUM2DBL(rb_ary_entry(ary1d, i));
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;xt = rb_float_new(y0c - (y * ac));
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;item = rb_ary_new3(2, t, xt);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;items[i] = item;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;RBASIC(result)-&amp;gt;klass = klass;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;return result;
&lt;br&gt;&amp;gt;}
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;-- 
&lt;br&gt;&amp;gt;--- 僕の前にBugはない。
&lt;br&gt;&amp;gt;--- 僕の後ろにBugはできる。
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;中田 伸悦
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%E3%80%90%E8%B3%AA%E5%95%8F%E3%80%91ALLOC_N%E3%81%A8ALLOCA_N-tp9887874p9892295.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-9892175</id>
	<title>[ruby-ext:02322] Re:  Re: ????ALLOC_N?ALLOCA_N</title>
	<published>2007-04-08T07:17:32Z</published>
	<updated>2007-04-08T07:17:32Z</updated>
	<author>
		<name>mi.ml</name>
	</author>
	<content type="html">?????????????
&lt;br&gt;&lt;br&gt;??????????????????????????
&lt;br&gt;????????????????????????
&lt;br&gt;??????????????????????????
&lt;br&gt;??????????????????????????
&lt;br&gt;?????
&lt;br&gt;&lt;br&gt;???????
&lt;br&gt;??????????????seg fault????????
&lt;br&gt;??????return??????ruby?????????
&lt;br&gt;?????seg fault?????????????????
&lt;br&gt;????????return ??????????
&lt;br&gt;??1?
&lt;br&gt;?ary.length=3,000,000
&lt;br&gt;?result=calc6(ary, etc)
&lt;br&gt;?p result[0] &amp;nbsp;# =&amp;gt; segmentation fault
&lt;br&gt;??2?
&lt;br&gt;?ary.length=1,000,000 #??????????OK???
&lt;br&gt;?result=calc6(ary, etc)
&lt;br&gt;?p result[0] &amp;nbsp;# =&amp;gt; value? &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;= ?
&lt;br&gt;&amp;nbsp; &amp;nbsp;p result[-1] &amp;nbsp;# =&amp;gt; [index, value] &amp;nbsp;&amp;lt;= ??????
&lt;br&gt;&lt;br&gt;???????
&lt;br&gt;seg fault????????return???????????
&lt;br&gt;???
&lt;br&gt;???
&lt;br&gt;?result=calc6(??)
&lt;br&gt;?p result.length &amp;nbsp;# =&amp;gt; 0
&lt;br&gt;&lt;br&gt;?????????????????????????
&lt;br&gt;rhg???????????????????volatile?
&lt;br&gt;?????????????????????????
&lt;br&gt;?????????...
&lt;br&gt;??????????????????????
&lt;br&gt;???????????????????
&lt;br&gt;???? ?????? ???
&lt;br&gt;&lt;br&gt;&amp;nbsp;
&lt;br&gt;2007?04?08? 16:23 ? &amp;quot;Nobuyoshi Nakada&amp;quot; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=9892175&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nobu@...&lt;/a&gt;&amp;gt;????:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;??????
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;At Sun, 08 Apr 2007 13:35:28 +0900 (JST),
&lt;br&gt;&amp;gt;ysk wrote in [ruby-ext:02319]:
&lt;br&gt;&amp;gt;&amp;gt; VALUE?????????????
&lt;br&gt;&amp;gt;&amp;gt; rb_gc_mark???????????Ruby??
&lt;br&gt;&amp;gt;&amp;gt; ???????????????
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;rb_gc_mark()?mark?????????????????
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;?????result?????????????ptr?????????
&lt;br&gt;&amp;gt;?????????????
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;static VALUE
&lt;br&gt;&amp;gt;si_calc6(self, ary1d, x0, y0, a)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;VALUE self;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;VALUE ary1d;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;VALUE x0;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;VALUE y0;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;VALUE a;
&lt;br&gt;&amp;gt;{
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;unsigned int i;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;/* ???c??????? */
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;int x0c = NUM2INT(x0);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;int y0c = NUM2INT(y0);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;double ac = NUM2DBL(a);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;long length = RARRAY(ary1d)-&amp;gt;len;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;VALUE result = rb_ary_new2(length);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;VALUE *items = RARRAY_PTR(result);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;VALUE klass = RBASIC(result)-&amp;gt;klass;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;VALUE item;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;VALUE t;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;VALUE xt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;double y;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;RBASIC(result)-&amp;gt;klass = 0;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;for (i = 0; i &amp;lt; length; i++){
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;t = INT2FIX(i + x0c);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;y = NUM2DBL(rb_ary_entry(ary1d, i));
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;xt = rb_float_new(y0c - (y * ac));
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;item = rb_ary_new3(2, t, xt);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;items[i] = item;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;RBASIC(result)-&amp;gt;klass = klass;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;return result;
&lt;br&gt;&amp;gt;}
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;-- 
&lt;br&gt;&amp;gt;--- ????Bug????
&lt;br&gt;&amp;gt;--- ?????Bug?????
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;?? ??
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-ruby-ext%3A02322--Re%3A--Re%3A-----ALLOC_N-ALLOCA_N-tp9892175p9892175.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-9891480</id>
	<title>[ruby-ext:02321] Re: 【質問】ALLOC_NとALLOCA_N</title>
	<published>2007-04-08T05:07:36Z</published>
	<updated>2007-04-08T05:07:36Z</updated>
	<author>
		<name>ysk-2</name>
	</author>
	<content type="html">和田と言います。
&lt;br&gt;&lt;br&gt;From: Nobuyoshi Nakada &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=9891480&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nobu@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Subject: [ruby-ext:02320] Re: 【質問】ALLOC_NとALLOCA_N
&lt;br&gt;Date: Sun, 08 Apr 2007 16:23:52 +0900
&lt;br&gt;&lt;br&gt;&amp;gt; rb_gc_mark()をmark用関数以外から呼んではいけません。
&lt;br&gt;&lt;br&gt;そうでしたか。よくわからずに答えるのはよくなかったですね。
&lt;br&gt;失礼しました。
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%E3%80%90%E8%B3%AA%E5%95%8F%E3%80%91ALLOC_N%E3%81%A8ALLOCA_N-tp9887874p9891480.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-9890475</id>
	<title>[ruby-ext:02320] Re: 【質問】ALLOC_NとALLOCA_N</title>
	<published>2007-04-08T01:23:52Z</published>
	<updated>2007-04-08T01:23:52Z</updated>
	<author>
		<name>Nobuyoshi Nakada-2</name>
	</author>
	<content type="html">なかだです。
&lt;br&gt;&lt;br&gt;At Sun, 08 Apr 2007 13:35:28 +0900 (JST),
&lt;br&gt;ysk wrote in [ruby-ext:02319]:
&lt;br&gt;&amp;gt; VALUE型をヒープに確保した場合は
&lt;br&gt;&amp;gt; rb_gc_markという関数でそのことをRuby側に
&lt;br&gt;&amp;gt; 伝えてやる必要があるようです。
&lt;br&gt;&lt;br&gt;rb_gc_mark()をmark用関数以外から呼んではいけません。
&lt;br&gt;&lt;br&gt;この場合はresultを先に確保しておいて、そのptrを使うということで
&lt;br&gt;いいのではないでしょうか。
&lt;br&gt;&lt;br&gt;static VALUE
&lt;br&gt;si_calc6(self, ary1d, x0, y0, a)
&lt;br&gt;&amp;nbsp; &amp;nbsp; VALUE self;
&lt;br&gt;&amp;nbsp; &amp;nbsp; VALUE ary1d;
&lt;br&gt;&amp;nbsp; &amp;nbsp; VALUE x0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; VALUE y0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; VALUE a;
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; unsigned int i;
&lt;br&gt;&amp;nbsp; &amp;nbsp; /* 引数をc言語の型に変換 */
&lt;br&gt;&amp;nbsp; &amp;nbsp; int x0c = NUM2INT(x0);
&lt;br&gt;&amp;nbsp; &amp;nbsp; int y0c = NUM2INT(y0);
&lt;br&gt;&amp;nbsp; &amp;nbsp; double ac = NUM2DBL(a);
&lt;br&gt;&amp;nbsp; &amp;nbsp; long length = RARRAY(ary1d)-&amp;gt;len;
&lt;br&gt;&amp;nbsp; &amp;nbsp; VALUE result = rb_ary_new2(length);
&lt;br&gt;&amp;nbsp; &amp;nbsp; VALUE *items = RARRAY_PTR(result);
&lt;br&gt;&amp;nbsp; &amp;nbsp; VALUE klass = RBASIC(result)-&amp;gt;klass;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; VALUE item;
&lt;br&gt;&amp;nbsp; &amp;nbsp; VALUE t;
&lt;br&gt;&amp;nbsp; &amp;nbsp; VALUE xt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; double y;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; RBASIC(result)-&amp;gt;klass = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; for (i = 0; i &amp;lt; length; i++){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; t = INT2FIX(i + x0c);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; y = NUM2DBL(rb_ary_entry(ary1d, i));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xt = rb_float_new(y0c - (y * ac));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; item = rb_ary_new3(2, t, xt);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; items[i] = item;
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; RBASIC(result)-&amp;gt;klass = klass;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; return result;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;--- 僕の前にBugはない。
&lt;br&gt;--- 僕の後ろにBugはできる。
&lt;br&gt;&amp;nbsp; &amp;nbsp; 中田 伸悦
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%E3%80%90%E8%B3%AA%E5%95%8F%E3%80%91ALLOC_N%E3%81%A8ALLOCA_N-tp9887874p9890475.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-9889978</id>
	<title>[ruby-ext:02319] Re: 【質問】ALLOC_NとALLOCA_N</title>
	<published>2007-04-07T22:35:28Z</published>
	<updated>2007-04-07T22:35:28Z</updated>
	<author>
		<name>ysk-2</name>
	</author>
	<content type="html">和田と言います。
&lt;br&gt;&lt;br&gt;From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=9889978&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mi.ml@...&lt;/a&gt;
&lt;br&gt;Subject: [ruby-ext:02318] 【質問】ALLOC_NとALLOCA_N
&lt;br&gt;Date: Sat, 07 Apr 2007 14:07:47 -0700
&lt;br&gt;&lt;br&gt;VALUE型をヒープに確保した場合は
&lt;br&gt;rb_gc_markという関数でそのことをRuby側に
&lt;br&gt;伝えてやる必要があるようです。
&lt;br&gt;ですので、以下のようにすればいいのでは
&lt;br&gt;ないでしょうか？
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for ( i = 0 ; i &amp;lt; length ; i++){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; t = INT2FIX( i + x0c );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; y = NUM2DBL( rb_ary_entry( ary1d, i ) ) ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xt = rb_float_new( y0c - ( y * ac ) ) ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; item = rb_ary_new3( len, t, xt ) ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; items[i] = item ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rb_gc_mark(items[i]);	/* &amp;lt;--- これを追加 */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;青木さんの
&lt;br&gt;&lt;a href=&quot;http://i.loveruby.net/w/RubyExtensionProgrammingGuide.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://i.loveruby.net/w/RubyExtensionProgrammingGuide.html&lt;/a&gt;&lt;br&gt;を参考にしました。
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%E3%80%90%E8%B3%AA%E5%95%8F%E3%80%91ALLOC_N%E3%81%A8ALLOCA_N-tp9887874p9889978.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-9887874</id>
	<title>【質問】ALLOC_NとALLOCA_N</title>
	<published>2007-04-07T15:07:47Z</published>
	<updated>2007-04-07T15:07:47Z</updated>
	<author>
		<name>mi.ml</name>
	</author>
	<content type="html">いしもと　といいます。
&lt;br&gt;&lt;br&gt;　かなり長い（数百万単位）要素数の数値配列といくつかの
&lt;br&gt;係数を受け取り、それを計算して二次元配列を返す拡張ライ
&lt;br&gt;ブラリを作っています。
&lt;br&gt;　拡張ライブラリ内で配列の領域を確保する際、ALLOCA_N
&lt;br&gt;で確保した場合は（スタック領域の範囲内であれば）問題なく
&lt;br&gt;動作しているようなのですが、同じ領域をALLOC_Nで（ヒー
&lt;br&gt;プ領域に？）確保するとかなり短い配列（私の環境では要素数
&lt;br&gt;6266）しか扱えず、それを超えるとsegmentation faultが発
&lt;br&gt;生してしまいます。私は一体何を間違ってしまっているのでし
&lt;br&gt;ょうか？
&lt;br&gt;　rubyは2年ほど使っていますが、c言語を扱うのは初めてで、
&lt;br&gt;ruby本やc言語関連のwebを参考にしながら見よう見まねで書
&lt;br&gt;いているレベルです。アドバイス頂ければ幸いです。
&lt;br&gt;使用環境：
&lt;br&gt;MacOSX 10.4(PowerPC)
&lt;br&gt;メモリ 1GB
&lt;br&gt;Ruby 1.8.6
&lt;br&gt;&lt;br&gt;SI.c --------------------------------------------------
&lt;br&gt;#include &amp;quot;ruby.h&amp;quot;
&lt;br&gt;&lt;br&gt;static VALUE
&lt;br&gt;si_calc6( self, ary1d, x0, y0, a )
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; VALUE self ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; VALUE ary1d ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; VALUE x0 ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; VALUE y0 ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; VALUE a ;
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; unsigned int i ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; unsigned int len = 2 ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* 引数をc言語の型に変換 */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int x0c = NUM2INT( x0 ) ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int y0c = NUM2INT( y0 ) ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; double ac = NUM2DBL( a ) ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; long length = RARRAY( ary1d )-&amp;gt;len ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; VALUE *items = ALLOC_N( VALUE, length ) ; /* &amp;lt;- これ */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* VALUE *items = ( VALUE *)malloc( length * sizeof( VALUE ) ) ;*/
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; VALUE item ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; VALUE t ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; VALUE xt ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; double y ;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for ( i = 0 ; i &amp;lt; length ; i++){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; t = INT2FIX( i + x0c );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; y = NUM2DBL( rb_ary_entry( ary1d, i ) ) ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xt = rb_float_new( y0c - ( y * ac ) ) ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; item = rb_ary_new3( len, t, xt ) ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; items[i] = item ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; VALUE result = rb_ary_new4( length, items ) ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; free( items ) ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return result ;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;void Init_SI(){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; VALUE msi = rb_define_module( &amp;quot;SI&amp;quot; ) ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rb_define_module_function( msi, &amp;quot;calc6&amp;quot;, si_calc6, 4) ;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;test.rb -----------------------------------------------
&lt;br&gt;require 'SI'
&lt;br&gt;include SI
&lt;br&gt;&lt;br&gt;ary=[]
&lt;br&gt;6267.times{ ary.push 14238.45331 }
&lt;br&gt;&lt;br&gt;x0=40
&lt;br&gt;y0=100
&lt;br&gt;a=0.01213
&lt;br&gt;&lt;br&gt;ext=calc6(ary,x0,y0,a) &amp;nbsp;# =&amp;gt; segmentation fault
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# （ary.length&amp;lt;=6266ならOK）
&lt;br&gt;＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿
&lt;br&gt;いしもと まさと（石本 将人）
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%E3%80%90%E8%B3%AA%E5%95%8F%E3%80%91ALLOC_N%E3%81%A8ALLOCA_N-tp9887874p9887874.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-6319075</id>
	<title>[ruby-ext:02317] Procをブロックとして渡すには</title>
	<published>2006-09-14T22:17:52Z</published>
	<updated>2006-09-14T22:17:52Z</updated>
	<author>
		<name>Masahiro Sakai</name>
	</author>
	<content type="html">酒井です。
&lt;br&gt;&lt;br&gt;rb_iterate()では、Cの関数をブロックとして積むことはできますが、既存の
&lt;br&gt;Procオブジェクトをブロックとして積むことは出来ないように見えます。
&lt;br&gt;&lt;br&gt;そのため、Cから例えばmodule_evalにProcオブジェクトを渡すために、以下の
&lt;br&gt;ようなコードを書いているのですが、より良い方法はないでしょうか?
&lt;br&gt;&lt;br&gt;&amp;nbsp; rb_funcall(rb_eval_string(&amp;quot;lambda{|obj,proc| obj.module_eval(&amp;proc)}&amp;quot;),
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rb_intern(&amp;quot;call&amp;quot;), 2, obj, proc);
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;酒井 政裕 / Masahiro Sakai
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-ruby-ext%3A02317--Proc%E3%82%92%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%81%A8%E3%81%97%E3%81%A6%E6%B8%A1%E3%81%99%E3%81%AB%E3%81%AF-tp6319075p6319075.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-6056010</id>
	<title>[ruby-ext:02316] Re: Welcome to our (ruby-ext ML) You are added automatically</title>
	<published>2006-08-30T04:13:09Z</published>
	<updated>2006-08-30T04:13:09Z</updated>
	<author>
		<name>Kenichi Mukai</name>
	</author>
	<content type="html">On 8/30/06, &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=6056010&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ruby-ext-admin@...&lt;/a&gt; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=6056010&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ruby-ext-admin@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=6056010&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ruby-ext@...&lt;/a&gt;&amp;gt; メーリングリストへようこそ!
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; このメールはサーバの使い方についての情報を含んでいます。大事にとってお
&lt;br&gt;&amp;gt; いて下さい。
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; １ &amp;nbsp; &amp;nbsp; &amp;nbsp; メーリングリストサーバの使い方
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; このメーリングリストサーバへのコマンドはメール本文にコマンドを書いて
&lt;br&gt;&amp;gt; アドレス &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=6056010&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ruby-ext-ctl@...&lt;/a&gt;&amp;gt; へ送って下さい。
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; コマンドのシンタックスは
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# help
&lt;br&gt;&amp;gt; または
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;help
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; のようなシンタックスです。どちらでも結構です。コマンドの一覧とサーバの
&lt;br&gt;&amp;gt; 使い方の解説はアドレス &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=6056010&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ruby-ext-ctl@...&lt;/a&gt;&amp;gt; に
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# help
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; を送ることで得られます。またメーリングリストに関する一般的な情報は
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# guide
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; コマンドを送って下さい。
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; もしメーリングリストの管理者へ直接聞きたいことがあれば
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=6056010&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ruby-ext-admin@...&lt;/a&gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; へメールを出して下さい。しかしながら管理者の手間を省くためにメーリング
&lt;br&gt;&amp;gt; リストサーバはあるものです。できるだけサーバを使ってみて下さい。
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=6056010&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ruby-ext@...&lt;/a&gt; 管理人
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=6056010&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ruby-ext-admin@...&lt;/a&gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Kenichi Mukai
&lt;br&gt;向井　賢一
&lt;br&gt;&amp;lt;mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=6056010&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mukaken@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-ruby-ext%3A02316--Re%3A-Welcome-to-our-%28ruby-ext-ML%29-You-are-added-automatically-tp6056010p6056010.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-5112592</id>
	<title>[ruby-ext:02315] Re: 拡張ライブラリでの継承について</title>
	<published>2006-06-29T17:58:05Z</published>
	<updated>2006-06-29T17:58:05Z</updated>
	<author>
		<name>Fujioka</name>
	</author>
	<content type="html">fujiokaです。
&lt;br&gt;&lt;br&gt;Yukihiro Matsumoto wrote:
&lt;br&gt;&amp;gt; 継承する場合にはスーパークラスが期待している構造と自クラスの
&lt;br&gt;&amp;gt; 構造が一致している必要があります。ここで、スーパークラスとし
&lt;br&gt;&amp;gt; たいArrayクラスのタイプはT_ARRAYで、Personクラスはalloc関数
&lt;br&gt;&amp;gt; を見るかぎりT_DATAです。これを両立させることは実装上不可能で
&lt;br&gt;&amp;gt; す。ごめんなさい。
&lt;br&gt;&amp;gt;
&lt;br&gt;ふむふむ。なるほど、了解しました。
&lt;br&gt;# お聞きしているのはこっちなので、
&lt;br&gt;# 「ごめんなさい。」ってあやまる必要はないと思います。
&lt;br&gt;# もしかして口ぐせとか。
&lt;br&gt;&lt;br&gt;U.Nakamura wrote:
&lt;br&gt;&amp;gt; アロケータを定義する場合、本来ご先祖様がやるはずのアロケーシ
&lt;br&gt;&amp;gt; ョン処理もちゃんと肩代わりしてあげないといけません。たぶん。
&lt;br&gt;&amp;gt; そういうことを考え始めるとめんどくさいので、シンプルに(非公開
&lt;br&gt;&amp;gt; の)インスタンス変数として保持しちゃダメですか。
&lt;br&gt;&amp;gt; 
&lt;br&gt;いや、テクニックを知りたいだけなので、これで十分です。
&lt;br&gt;なるほど、インスタンスで保持するのがよさそうですね。
&lt;br&gt;もしかして、そもそも構造体をラッピングして保持するようなことを
&lt;br&gt;まったくやらずともデータの保持ってできるんですね。
&lt;br&gt;しかも、GCのこともあまり気にせずに。
&lt;br&gt;欠点としては遅いかな？
&lt;br&gt;&lt;br&gt;またわからなかったらお聞きします。ありがとうございました。
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-ruby-ext%3A02312--%E6%8B%A1%E5%BC%B5%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%A7%E3%81%AE%E7%B6%99%E6%89%BF%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6-tp5103506p5112592.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-5104285</id>
	<title>[ruby-ext:02314] Re: 拡張ライブラリでの継承について</title>
	<published>2006-06-29T08:57:09Z</published>
	<updated>2006-06-29T08:57:09Z</updated>
	<author>
		<name>U.Nakamura</name>
	</author>
	<content type="html">こんにちは、なかむら(う)です。
&lt;br&gt;&lt;br&gt;In message &amp;quot;[ruby-ext:02312] 拡張ライブラリでの継承について&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; on Jun.29,2006 23:11:11, &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=5104285&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;fuj@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;| と出てしまいます。このソースを参考にと言うことでも構いませんので、
&lt;br&gt;| 教えて頂けませんでしょうか。
&lt;br&gt;&lt;br&gt;アロケータを定義する場合、本来ご先祖様がやるはずのアロケーシ
&lt;br&gt;ョン処理もちゃんと肩代わりしてあげないといけません。たぶん。
&lt;br&gt;そういうことを考え始めるとめんどくさいので、シンプルに(非公開
&lt;br&gt;の)インスタンス変数として保持しちゃダメですか。
&lt;br&gt;&lt;br&gt;&lt;br&gt;#include &amp;lt;ruby.h&amp;gt;
&lt;br&gt;&lt;br&gt;VALUE rb_cPerson;
&lt;br&gt;&lt;br&gt;VALUE Person_view(VALUE self){
&lt;br&gt;&amp;nbsp; VALUE name = rb_iv_get(self, &amp;quot;name&amp;quot;);
&lt;br&gt;&amp;nbsp; printf(&amp;quot;%s\n&amp;quot;, StringValuePtr(name));
&lt;br&gt;&amp;nbsp; return(self);
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;VALUE Person_initialize(VALUE self,VALUE name,VALUE family){
&lt;br&gt;&amp;nbsp; /* check type*/
&lt;br&gt;&amp;nbsp; Check_Type(name,T_STRING);
&lt;br&gt;&amp;nbsp; Check_Type(family,T_STRING);
&lt;br&gt;&amp;nbsp; rb_iv_set(self, &amp;quot;name&amp;quot;, name);
&lt;br&gt;&amp;nbsp; rb_iv_set(self, &amp;quot;family&amp;quot;, family);
&lt;br&gt;&amp;nbsp; return(Qnil);
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;void Init_Jikken(VALUE val){
&lt;br&gt;&amp;nbsp; rb_cPerson = rb_define_class(&amp;quot;Person&amp;quot;, rb_cArray);
&lt;br&gt;&amp;nbsp; rb_define_private_method(rb_cPerson, &amp;quot;initialize&amp;quot;, Person_initialize, 2);
&lt;br&gt;&amp;nbsp; rb_define_method(rb_cPerson, &amp;quot;view&amp;quot;, Person_view, 0);
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;それでは。
&lt;br&gt;-- 
&lt;br&gt;U.Nakamura &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=5104285&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;usa@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-ruby-ext%3A02312--%E6%8B%A1%E5%BC%B5%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%A7%E3%81%AE%E7%B6%99%E6%89%BF%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6-tp5103506p5104285.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-5104207</id>
	<title>[ruby-ext:02313] Re: 拡張ライブラリでの継承について</title>
	<published>2006-06-29T08:52:43Z</published>
	<updated>2006-06-29T08:52:43Z</updated>
	<author>
		<name>Yukihiro Matsumoto</name>
	</author>
	<content type="html">まつもと ゆきひろです
&lt;br&gt;&lt;br&gt;In message &amp;quot;Re: [ruby-ext:02312] 拡張ライブラリでの継承について&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; on Thu, 29 Jun 2006 23:11:11 +0900, Fujioka &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=5104207&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;fuj@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;br&gt;|C言語での拡張ライブラリの書き方を勉強中なのですが、
&lt;br&gt;|継承がどうしてもわからないので、教えて頂けませんでしょうか。
&lt;br&gt;&lt;br&gt;|このPersonクラスはArrayを継承したいのですが、
&lt;br&gt;&lt;br&gt;継承する場合にはスーパークラスが期待している構造と自クラスの
&lt;br&gt;構造が一致している必要があります。ここで、スーパークラスとし
&lt;br&gt;たいArrayクラスのタイプはT_ARRAYで、Personクラスはalloc関数
&lt;br&gt;を見るかぎりT_DATAです。これを両立させることは実装上不可能で
&lt;br&gt;す。ごめんなさい。
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-ruby-ext%3A02312--%E6%8B%A1%E5%BC%B5%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%A7%E3%81%AE%E7%B6%99%E6%89%BF%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6-tp5103506p5104207.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-5103506</id>
	<title>[ruby-ext:02312] 拡張ライブラリでの継承について</title>
	<published>2006-06-29T08:11:11Z</published>
	<updated>2006-06-29T08:11:11Z</updated>
	<author>
		<name>Fujioka</name>
	</author>
	<content type="html">fujiokaです。
&lt;br&gt;&lt;br&gt;C言語での拡張ライブラリの書き方を勉強中なのですが、
&lt;br&gt;継承がどうしてもわからないので、教えて頂けませんでしょうか。
&lt;br&gt;&lt;br&gt;#include &amp;lt;ruby.h&amp;gt;
&lt;br&gt;&lt;br&gt;VALUE rb_cPerson;
&lt;br&gt;&lt;br&gt;typedef struct {
&lt;br&gt;&amp;nbsp; char name[256];
&lt;br&gt;&amp;nbsp; char family[256];
&lt;br&gt;} Person;
&lt;br&gt;&lt;br&gt;VALUE Person_alloc(VALUE klass){
&lt;br&gt;&amp;nbsp; Person *ptr;
&lt;br&gt;&amp;nbsp; return Data_Make_Struct(klass, Person, 0, -1, ptr);
&lt;br&gt;}
&lt;br&gt;VALUE Person_view(VALUE self){
&lt;br&gt;&amp;nbsp; Person *ptr;
&lt;br&gt;&amp;nbsp; Data_Get_Struct(self,Person,ptr);
&lt;br&gt;&amp;nbsp; printf(&amp;quot;%s\n&amp;quot;,ptr-&amp;gt;name);
&lt;br&gt;&amp;nbsp; return(self);
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;VALUE Person_initialize(VALUE self,VALUE name,VALUE family){
&lt;br&gt;&amp;nbsp; Person *ptr;
&lt;br&gt;&amp;nbsp; /* check type*/
&lt;br&gt;&amp;nbsp; Check_Type(name,T_STRING);
&lt;br&gt;&amp;nbsp; Check_Type(family,T_STRING);
&lt;br&gt;&amp;nbsp; Data_Get_Struct(self,Person,ptr);
&lt;br&gt;&amp;nbsp; strcpy(ptr-&amp;gt;name,StringValuePtr(name));
&lt;br&gt;&amp;nbsp; strcpy(ptr-&amp;gt;family,StringValuePtr(family));
&lt;br&gt;&amp;nbsp; return(Qnil);
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;void Init_Jikken(VALUE val){
&lt;br&gt;&amp;nbsp; rb_cPerson = rb_define_class(&amp;quot;Person&amp;quot;, rb_cArray);
&lt;br&gt;&amp;nbsp; rb_define_alloc_func(rb_cPerson, Person_alloc);
&lt;br&gt;&amp;nbsp; rb_define_private_method(rb_cPerson, &amp;quot;initialize&amp;quot;, Person_initialize, 2);
&lt;br&gt;&amp;nbsp; rb_define_method(rb_cPerson, &amp;quot;view&amp;quot;, Person_view, 0);
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;このPersonクラスはArrayを継承したいのですが、
&lt;br&gt;require 'Jikken'
&lt;br&gt;jikken=Person.new(&amp;quot;henoheno&amp;quot;,&amp;quot;moheji&amp;quot;)
&lt;br&gt;jikken.push(&amp;quot;hoge&amp;quot;)
&lt;br&gt;&lt;br&gt;を実行すると
&lt;br&gt;&lt;br&gt;fujioka@vmmain:~/rap/Jikken$ ruby jikken.rb
&lt;br&gt;jikken.rb:24: [BUG] Segmentation fault
&lt;br&gt;ruby 1.8.2 (2005-04-11) [i386-linux]
&lt;br&gt;&lt;br&gt;アボートしました
&lt;br&gt;&lt;br&gt;と出てしまいます。このソースを参考にと言うことでも構いませんので、
&lt;br&gt;教えて頂けませんでしょうか。
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-ruby-ext%3A02312--%E6%8B%A1%E5%BC%B5%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%A7%E3%81%AE%E7%B6%99%E6%89%BF%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6-tp5103506p5103506.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-3631866</id>
	<title>[ruby-ext:02311] postgreSQL7.4にはPQserverVersionがない</title>
	<published>2006-03-28T07:34:19Z</published>
	<updated>2006-03-28T07:34:19Z</updated>
	<author>
		<name>中西　健</name>
	</author>
	<content type="html">　初めまして
&lt;br&gt;　先週あたりからrubyをいろいろと試しています。いままではPerlを使用してい
&lt;br&gt;ました。
&lt;br&gt;　postgreSQLの拡張モジュールの件でお尋ねします。以下のページから拡張モジュー
&lt;br&gt;ルをダウンロードしてインストールしたのですがPQserverVersion関数がないた
&lt;br&gt;めにエラーになります。PQserverVersionはpostgreSQL7.4には実装されていない
&lt;br&gt;ためエラーになっているので、postgres.cを編集してPQserverVersion関数呼び
&lt;br&gt;出しをコメントアウトしたところSELECT_ONEのテストで正常動作するようになり
&lt;br&gt;ました。
&lt;br&gt;&lt;br&gt;　&lt;a href=&quot;http://ruby.scripting.ca/postgres/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://ruby.scripting.ca/postgres/&lt;/a&gt;&lt;br&gt;&amp;nbsp;ruby-postgres-20051221.tar.gz
&lt;br&gt;&lt;br&gt;　とりあえずは動いたのですがこれでよいのでしょうか。
&lt;br&gt;&lt;br&gt;　以下のファイルも試してみたのですが、インストーラがWindows用にできてい
&lt;br&gt;るようでした。
&lt;br&gt;　 ruby-postgres-0.7.1.tar.gz
&lt;br&gt;&lt;br&gt;　インストール方法はrootで
&lt;br&gt;ruby extconf.rb
&lt;br&gt;make
&lt;br&gt;make install
&lt;br&gt;&lt;br&gt;　postgreSQL 7.4
&lt;br&gt;　ruby 1.8.4
&lt;br&gt;　redhat linux 9
&lt;br&gt;&lt;br&gt;システムアート研究所　中西　健
&lt;br&gt;&lt;br&gt;--------------------------------------
&lt;br&gt;Celebrate Yahoo! JAPAN 10th Anniversary
&lt;br&gt;&lt;a href=&quot;http://pr.mail.yahoo.co.jp/10thann/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pr.mail.yahoo.co.jp/10thann/&lt;/a&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-ruby-ext%3A02311--postgreSQL7.4%E3%81%AB%E3%81%AFPQserverVersion%E3%81%8C%E3%81%AA%E3%81%84-tp3631866p3631866.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-3235589</id>
	<title>[ruby-ext:02310]</title>
	<published>2006-03-03T23:45:19Z</published>
	<updated>2006-03-03T23:45:19Z</updated>
	<author>
		<name>橋本 一人</name>
	</author>
	<content type="html"># chaddr &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=3235589&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hasimoto@...&lt;/a&gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=3235589&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hasimoto.kazuhito@...&lt;/a&gt;
&lt;br&gt;# matome 29
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-ruby-ext%3A02310--tp3235589p3235589.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-2984092</id>
	<title>[ruby-ext:02308] Re: SystemStackError when rb_define_module_function() * 3</title>
	<published>2006-02-16T22:02:11Z</published>
	<updated>2006-02-16T22:02:11Z</updated>
	<author>
		<name>Suraj N. Kurapati</name>
	</author>
	<content type="html">-----BEGIN PGP SIGNED MESSAGE-----
&lt;br&gt;Hash: SHA1
&lt;br&gt;&lt;br&gt;My apologies. I did not know that ruby-ext was Japanese-only list. I
&lt;br&gt;shall post my query to the ruby-talk list instead.
&lt;br&gt;-----BEGIN PGP SIGNATURE-----
&lt;br&gt;Version: GnuPG v1.4.1 (GNU/Linux)
&lt;br&gt;&lt;br&gt;iD8DBQFD9WbjmV9O7RYnKMcRAs3qAJ4xzQrTH4wgIyCXQYfi53kwxbNjlwCeIibn
&lt;br&gt;JdX3/OQldmRJVaJdJlhCxWg=
&lt;br&gt;=HDWI
&lt;br&gt;-----END PGP SIGNATURE-----
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-ruby-ext%3A02309--SystemStackError-when-rb_define_module_function%28%29-*-3-tp2984097p2984092.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-2984097</id>
	<title>[ruby-ext:02309] SystemStackError when rb_define_module_function() * 3</title>
	<published>2006-02-16T21:35:26Z</published>
	<updated>2006-02-16T21:35:26Z</updated>
	<author>
		<name>Suraj N. Kurapati</name>
	</author>
	<content type="html">-----BEGIN PGP SIGNED MESSAGE-----
&lt;br&gt;Hash: SHA1
&lt;br&gt;&lt;br&gt;Hello,
&lt;br&gt;&lt;br&gt;I'm getting a &amp;quot;test.rb:46: stack level too deep (SystemStackError)&amp;quot;
&lt;br&gt;when defining three or more functions for a module, which is created
&lt;br&gt;&amp; given to Ruby via the Ruby C API.
&lt;br&gt;&lt;br&gt;&lt;br&gt;## begin extra info ##
&lt;br&gt;&lt;br&gt;The test.rb (actually &amp;quot;samp/test.rb&amp;quot;) file and the remaining source
&lt;br&gt;code is available in a Subversion repository at RubyForge:
&lt;br&gt;&lt;br&gt;svn checkout -r21 svn://rubyforge.org/var/svn/ruby-vpi/trunk
&lt;br&gt;- -or-
&lt;br&gt;&amp;lt;&lt;a href=&quot;http://rubyforge.org/plugins/scmsvn/viewcvs.php/trunk/?root=ruby-vpi&amp;pathrev=21&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://rubyforge.org/plugins/scmsvn/viewcvs.php/trunk/?root=ruby-vpi&amp;pathrev=21&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;Also, I run &amp;quot;make ivl&amp;quot; inside the &amp;quot;samp/&amp;quot; directory to run the
&lt;br&gt;sample test bench (&amp;quot;test.v&amp;quot; and &amp;quot;test.rb&amp;quot;).
&lt;br&gt;&lt;br&gt;Finally, I am using this Ruby version:
&lt;br&gt;ruby 1.8.3 (2005-06-23) [i486-linux]
&lt;br&gt;&lt;br&gt;## end extra info ##
&lt;br&gt;&lt;br&gt;&lt;br&gt;In particular, the error occurs when I register a third module
&lt;br&gt;function with Ruby C API inside line 25 of the file
&lt;br&gt;&amp;quot;src/RVPI.cin&amp;quot;:
&lt;br&gt;&lt;br&gt;// register the VPI module
&lt;br&gt;RVPI__rModuleDef = rb_define_module(&amp;quot;VPI&amp;quot;);
&lt;br&gt;&lt;br&gt;rb_define_module_function( &amp;nbsp;// first func
&lt;br&gt;&amp;nbsp; RVPI__rModuleDef
&lt;br&gt;&amp;nbsp; , &amp;quot;relay_verilog&amp;quot;
&lt;br&gt;&amp;nbsp; , RVPI_rb_relay_verilog
&lt;br&gt;&amp;nbsp; , 0
&lt;br&gt;);
&lt;br&gt;&lt;br&gt;rb_define_module_function( &amp;nbsp;// second func
&lt;br&gt;&amp;nbsp; RVPI__rModuleDef
&lt;br&gt;&amp;nbsp; , &amp;quot;register_task&amp;quot;
&lt;br&gt;&amp;nbsp; , RVPI_rb_register_task
&lt;br&gt;&amp;nbsp; , 1
&lt;br&gt;);
&lt;br&gt;&lt;br&gt;rb_define_module_function( // third func
&lt;br&gt;&amp;nbsp; RVPI__rModuleDef
&lt;br&gt;&amp;nbsp; , &amp;quot;handle_by_name&amp;quot;
&lt;br&gt;&amp;nbsp; , RVPI_rb_handle_by_name
&lt;br&gt;&amp;nbsp; , 2
&lt;br&gt;); // FIXME: causes &amp;quot;stack level too deep (SystemStackError)&amp;quot;
&lt;br&gt;&lt;br&gt;&lt;br&gt;I originally thought the problem was with the third module function
&lt;br&gt;(named &amp;quot;RVPI_rb_handle_by_name&amp;quot;) that I was trying to register. But
&lt;br&gt;this was not the case, because the SystemStackError occurred even
&lt;br&gt;when I registered the first module function under a different name:
&lt;br&gt;&lt;br&gt;// register the VPI module
&lt;br&gt;RVPI__rModuleDef = rb_define_module(&amp;quot;VPI&amp;quot;);
&lt;br&gt;&lt;br&gt;rb_define_module_function( &amp;nbsp;// first func
&lt;br&gt;&amp;nbsp; RVPI__rModuleDef
&lt;br&gt;&amp;nbsp; , &amp;quot;relay_verilog&amp;quot;
&lt;br&gt;&amp;nbsp; , RVPI_rb_relay_verilog
&lt;br&gt;&amp;nbsp; , 0
&lt;br&gt;);
&lt;br&gt;&lt;br&gt;rb_define_module_function( &amp;nbsp;// second func
&lt;br&gt;&amp;nbsp; RVPI__rModuleDef
&lt;br&gt;&amp;nbsp; , &amp;quot;register_task&amp;quot;
&lt;br&gt;&amp;nbsp; , RVPI_rb_register_task
&lt;br&gt;&amp;nbsp; , 1
&lt;br&gt;);
&lt;br&gt;&lt;br&gt;rb_define_module_function( &amp;nbsp;// first func with different name
&lt;br&gt;&amp;nbsp; RVPI__rModuleDef
&lt;br&gt;&amp;nbsp; , &amp;quot;foo&amp;quot;
&lt;br&gt;&amp;nbsp; , RVPI_rb_relay_verilog
&lt;br&gt;&amp;nbsp; , 0
&lt;br&gt;);
&lt;br&gt;&lt;br&gt;&lt;br&gt;What am I doing wrong?
&lt;br&gt;&lt;br&gt;Thank you.
&lt;br&gt;-----BEGIN PGP SIGNATURE-----
&lt;br&gt;Version: GnuPG v1.4.1 (GNU/Linux)
&lt;br&gt;&lt;br&gt;iD8DBQFD9WCemV9O7RYnKMcRAiLJAJ9qBZ5YCIS8DyPzVAQqIjko4LBLAACgsDSH
&lt;br&gt;ymfU+BIfIfLCjAUhZSBYZPY=
&lt;br&gt;=yhro
&lt;br&gt;-----END PGP SIGNATURE-----
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-ruby-ext%3A02309--SystemStackError-when-rb_define_module_function%28%29-*-3-tp2984097p2984097.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-2053712</id>
	<title>Welcome to our (ruby-ext ML) You are added automatically</title>
	<published>2005-12-21T17:24:06Z</published>
	<updated>2005-12-21T17:24:06Z</updated>
	<author>
		<name>ruby-ext-admin</name>
	</author>
	<content type="html">&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=2053712&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ruby-ext@...&lt;/a&gt;&amp;gt; メーリングリストへようこそ!
&lt;br&gt;&lt;br&gt;このメールはサーバの使い方についての情報を含んでいます。大事にとってお
&lt;br&gt;いて下さい。
&lt;br&gt;&lt;br&gt;１	メーリングリストサーバの使い方
&lt;br&gt;&lt;br&gt;このメーリングリストサーバへのコマンドはメール本文にコマンドを書いて
&lt;br&gt;アドレス &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=2053712&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ruby-ext-ctl@...&lt;/a&gt;&amp;gt; へ送って下さい。
&lt;br&gt;&lt;br&gt;コマンドのシンタックスは
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # help
&lt;br&gt;または
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; help 
&lt;br&gt;&lt;br&gt;のようなシンタックスです。どちらでも結構です。コマンドの一覧とサーバの
&lt;br&gt;使い方の解説はアドレス &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=2053712&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ruby-ext-ctl@...&lt;/a&gt;&amp;gt; に
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # help
&lt;br&gt;&lt;br&gt;を送ることで得られます。またメーリングリストに関する一般的な情報は
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # guide
&lt;br&gt;&lt;br&gt;コマンドを送って下さい。
&lt;br&gt;&lt;br&gt;もしメーリングリストの管理者へ直接聞きたいことがあれば
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=2053712&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ruby-ext-admin@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;へメールを出して下さい。しかしながら管理者の手間を省くためにメーリング
&lt;br&gt;リストサーバはあるものです。できるだけサーバを使ってみて下さい。
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=2053712&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ruby-ext@...&lt;/a&gt; 管理人
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=2053712&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ruby-ext-admin@...&lt;/a&gt;			
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Welcome-to-our-%28ruby-ext-ML%29-You-are-added-automatically-tp2053712p2053712.html" />
</entry>

</feed>
