[#352] ruby 1.1a5 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

38 messages 1997/09/01
[#353] Re: ruby 1.1a5 released — keiju@... (石塚圭樹 ) 1997/09/01

[#354] Re: ruby 1.1a5 released — matz@... (Yukihiro Matsumoto) 1997/09/01

まつもと ゆきひろです

[#356] Re: methods [Re: ruby 1.1a5 released] — matz@... (Yukihiro Matsumoto) 1997/09/01

まつもと ゆきひろです

[#357] Re: methods [Re: ruby 1.1a5 released] — keiju@... (Keiju ISHITSUKA) 1997/09/01

けいじゅ@日本ラショナルソフトウェアです.

[#359] Re: methods [Re: ruby 1.1a5 released] — matz@... (Yukihiro Matsumoto) 1997/09/02

まつもと ゆきひろです

[#363] Re: methods [Re: ruby 1.1a5 released] — matz@... (Yukihiro Matsumoto) 1997/09/02

まつもと ゆきひろです

[#374] Re: methods [Re: ruby 1.1a5 released] — matz@... (Yukihiro Matsumoto) 1997/09/02

まつもと ゆきひろです

[#376] Re: methods [Re: ruby 1.1a5 released] — keiju@... (Keiju ISHITSUKA) 1997/09/02

けいじゅ@日本ラショナルソフトウェアです.

[#382] Re: methods [Re: ruby 1.1a5 released] — matz@... (Yukihiro Matsumoto) 1997/09/02

まつもと ゆきひろです

[#390] Re: methods [Re: ruby 1.1a5 released] — keiju@... (Keiju ISHITSUKA) 1997/09/03

けいじゅ@日本ラショナルソフトウェアです.

[#391] Re: methods [Re: ruby 1.1a5 released] — matz@... (Yukihiro Matsumoto) 1997/09/03

まつもと ゆきひろです

[#441] How to report a bug — takagi@... (TAKAGI Hiromitsu)

Bus error が出ました。

15 messages 1997/09/09

[#461] [Q] ruby-socket(mswin32) — Masaki Suketa <suke@...>

助田です

27 messages 1997/09/11
[#462] Re: [Q] ruby-socket(mswin32) — matz@... (Yukihiro Matsumoto) 1997/09/11

まつもと ゆきひろです

[#463] Re: [Q] ruby-socket(mswin32) — Masaki Suketa <suke@...> 1997/09/11

助田です

[#464] Re: [Q] ruby-socket(mswin32) — matz@... (Yukihiro Matsumoto) 1997/09/11

まつもと ゆきひろです

[#467] Re: [Q] ruby-socket(mswin32) — WATANABE Hirofumi <watanabe@...> 1997/09/11

わたなべです.

[#594] BUG?(marshal) — Masaki Suketa <suke@...>

以下のプログラムを実行した時に(3)と(4)で出力結果が違います。

17 messages 1997/09/30

[ruby-dev:402] Re: module depends on other modules

From: matz@... (Yukihiro Matsumoto)
Date: 1997-09-04 01:56:57 UTC
List: ruby-dev #402
まつもと ゆきひろです

In message "[ruby-dev:400] module depends on other modules"
    on 97/09/04, Eiji-usagi-MATSUmoto <ematsu@pfu.co.jp> writes:
|
|うさぎ@変なサブジェクトでごめんなさい
|
|ある拡張モジュール内で、他の拡張モジュールの機能を使いたい時は
|どうしたらいいんでしょうか。

方法はいくつかありますが

  * rb_eval_string経由
  * 関数直呼び
  * rb_funcall()

がすぐに思いつく方法でしょう.が,2番目の方法はOSによっては
出来ないことがあるそうです.それに(そういえば)kconv.cはほと
んどの関数をstaticにしていましたから,改造しない限り直呼びは
出来ませんね.^^;;;

ということで3が一番お勧めでしょう.

  Init_xxx()
  {
      # まず,requireしておく必要がある
      rb_eval_string("require 'kconv'");
  }

  # rb_eval_stringを使ったもの
  #   文字列の長さが長すぎたり,\0を含んでいると駄目
  conv_1(self, str)
     VALUE self, str;
  {
     char buf[1024];

     sprintf(buf, "Kconv::kconv(\"%s\")", RSTRING(str)->ptr);
     return rb_eval_string(buf)
  }

  # 関数直呼び
  #   kconv.cを変更しないと使えない
  #   OSによっては動かない
  conv_2(str)
     VALUE self,str;
  {
     extern VALUE kconv_kconv();
     return kconv_kconv(1, &str, self);
  }

  # rb_funcall()を使ったもの
  #   多分,制限は無い
  conv_3(str)
     VALUE self,str;
  {
     VALUE kconv = rb_eval_string("Kconv");

     return rb_funcall(kconv, rb_intern("kconv"), 1, str);
  }

|でも、、そもそもコード変換しなくても、eucならそのまま通るんだから
|違うコード系を使ってる人は、自前でkconv使って変換してね、というい
|い方にすれば、それでいいんじゃないかという気もしてきたなぁ。。。

なんか,私もそれで良いような気がします.

                                まつもと ゆきひろ /:|)

In This Thread