[#8530] Enumerable and rand — Koretsugu Daigoro <tmmcross@...>

これつぐです。

21 messages 1999/12/05
[#8534] Re: Enumerable and rand — matz@... (Yukihiro Matsumoto) 1999/12/06

まつもと ゆきひろです

[#8581] Re: [ruby-list:19228] Ruby 1.4.3 — Katsuyuki Komatsu <komatsu@...>

小松です。

19 messages 1999/12/07
[#8592] Re: [ruby-list:19228] Ruby 1.4.3 — matz@... (Yukihiro Matsumoto) 1999/12/07

まつもと ゆきひろです

[#8645] urllib and httplib — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

47 messages 1999/12/14
[#8646] Re: urllib and httplib — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/12/14

なひです.

[#8653] Re: urllib and httplib — matz@... (Yukihiro Matsumoto) 1999/12/14

まつもと ゆきひろです

[#8656] Re: urllib and httplib — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/12/15

なひです.

[#8659] Re: urllib and httplib — Wakou Aoyama <wakou@...> 1999/12/15

青山です。

[#8685] Re: urllib and httplib — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/12/21

なひです.

[#8687] Re: urllib and httplib — TAKAHASHI Masayoshi <maki@...> 1999/12/21

高橋征義です。

[#8690] Re: urllib and httplib — matz@... (Yukihiro Matsumoto) 1999/12/21

まつもと ゆきひろです

[#8717] Re: urllib and httplib — TAKAHASHI Masayoshi <maki@...> 1999/12/24

高橋征義です。

[#8963] Re: urllib and httplib — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/01/19

なひです.

[#8650] [PATCH] Ruby/Tk — Koji Arai <JCA02266@...>

新井です。

20 messages 1999/12/14
[#8651] Re: [PATCH] Ruby/Tk — Koji Arai <JCA02266@...> 1999/12/14

新井です。

[#8692] [win] dir name — KANEKO Naoshi <wbs01621@...>

金子です。

22 messages 1999/12/21
[#8695] Re: [win] dir name — Koji Oda <oda@...1.qnes.nec.co.jp> 1999/12/22

小田@QNES です。

[#8741] Re: [ruby-list:19945] Re: array + empty string — Wakou Aoyama <wakou@...>

青山です。

18 messages 1999/12/27
[#8743] Re: [ruby-list:19945] Re: array + empty string — matz@... (Yukihiro Matsumoto) 1999/12/28

まつもと ゆきひろです

[#8742] [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Kazunori NISHI <kazunori@...>

西@九大です。

64 messages 1999/12/27
[#8744] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — matz@... (Yukihiro Matsumoto) 1999/12/28

まつもと ゆきひろです

[#8748] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Kazunori NISHI <kazunori@...> 1999/12/28

西@九大です。

[#8751] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — matz@... (Yukihiro Matsumoto) 1999/12/28

まつもと ゆきひろです

[#8767] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Kazunori NISHI <kazunori@...> 1999/12/29

西@九大です。

[#8777] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — matz@... (Yukihiro Matsumoto) 1999/12/30

まつもと ゆきひろです

[#8791] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Minero Aoki <aamine@...> 1999/12/31

あおきです。

[#8792] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — matz@... (Yukihiro Matsumoto) 1999/12/31

まつもと ゆきひろです

[#8793] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — ARIMA Yasuhiro <fit0298@...> 1999/12/31

有馬です。

[#8795] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Akinori MUSHA aka knu <knu@...> 1999/12/31

 knuです。

[#8798] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — matz@... (Yukihiro Matsumoto) 2000/01/01

まつもと ゆきひろです

[#8811] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Akinori MUSHA aka knu <knu@...> 2000/01/03

 knuです。

[ruby-dev:8565] interface declaretion

From: "Dai.K." <MAP2303@...>
Date: 1999-12-07 05:06:32 UTC
List: ruby-dev #8565
  かんだです。


  すぐにではないんですが、Ruby/CORBA で Rubyスクリプトから IDL の生成をや
るつもりです。IDL というのは C++ のサブセット風の言語で、インターフェース
のみを記述するものです。例えばこんな感じです。

interface String {
  String crypt(in String salt);
};

  CORBA実装ではこれを処理してサーバーやクライアントのスタブコードを生成
するので、IDLの扱いはほとんど必須です。
  サーバー開発者は IDL も提供しないといけないんですが、いちいち IDL で
書くのは面倒というのがあって、例えば Java コードから IDL の生成は定めら
れてます(見てないんで詳しいところは分からないですが)。

  あとまだ構想ですが、動的に IDL を読んでスタブを作ってオブジェクトに
extend するとかいうことも考えてます。それならいちいち IDL を解析するより
も .rb で記述されているのがあればそっち使っちゃえ、と思いますよね。
# どっちかというとこちらの方が理由は強い。カッコいいゾ:-)

  というわけで、Ruby スクリプトで IDL と同等のことを記述したいのですが、
先ほどの例を見て分かる通り、例えば型などは Ruby の文法では情報が足りませ
ん。まだ typedef とか enum どうしようとかもあるんですが、とりあえず、メ
ソッド宣言文を加えてくれませんか?

  def を色々拡張するというのも考えましたが、それよりも宣言専用の構文を
導入した方が互換性などもいいと思いますので、こんなのはどうでしょう?

class A
  dcl void foo()
  def foo(); end

  dcl String str()
  def str()
    return "Hello, World"
  end

  dcl String test(in Integer i)
  def str(i)
    i.to_s
  end
end

  dcl文の追加。dcl は予約語扱いになるのかな。
  冗長なので def 文を省略できた方がいいかもしれないです。


  ちなみに次のようなモジュールでも同様のことはできますが、とてもじゃな
いですが受け入れ難い構文です(^^;

--------------------------------------------------------------------
module IDL
  def IDL.extend_object(obj)
    ret = super
    obj.instance_eval <<EOF

    @methods = Hash::new
    def declared_methods
      return @methods
    end
    def declared_method(name)
      return @methods[name]
    end
EOF

    return ret
  end

  def dcl(*args)
    mname = args.shift

    ret = nil
    params = []
    iparams = []
    oparams = []
    args.each do |param|
      io, type, name = *param

      if io == :ret
	ret = [type, name]
      else
	params << [io, type, name]
      end

      case io
      when :inout
	iparams << [type, name]
	oparams << [type, name]
      when :in
	iparams << [type, name]
      when :out, :ret
	oparams << [type, name]
      end
    end
    @methods[mname] = [ret, params, iparams, oparams]
  end
end


class A
  extend IDL

# void foo()
  dcl :foo, [:ret, nil]

# String str()
  dcl :str, [:ret, String]

# String test(in Integer i)
  dcl :test, [:ret, String], [:in, Integer, :i]
end

p A.declared_method(:foo)
p A.declared_method(:str)
p A.declared_method(:test)
--------------------------------------------------------------------


In This Thread

Prev Next