[#8468] require で SEGV — ruby <g96p0935@...>
西本です。
[#8469] [PATCH] -s command line option — nobu.nakada@...
なかだです。
[#8507] mode_t in file.c — Katsuyuki Komatsu <komatsu@...>
小松です。
[#8530] Enumerable and rand — Koretsugu Daigoro <tmmcross@...>
これつぐです。
まつもと ゆきひろです
これつぐです。
まつもと ゆきひろです
原です。
まつもと ゆきひろです
原です。
ごとけんです
これつぐです。
[#8565] interface declaretion — "Dai.K." <MAP2303@...>
[#8581] Re: [ruby-list:19228] Ruby 1.4.3 — Katsuyuki Komatsu <komatsu@...>
小松です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
小松です。
まつもと ゆきひろです
小松です。
[#8622] Win32API (Re: Ruby 1.4.3 binaries for Cygwin and DJGPP) — WATANABE Hirofumi <Hirofumi.Watanabe@...>
わたなべです.
有馬@FITECです。
よしだです
[#8623] [BUG?] core dump `ruby -r debug' — IWAMURO Motonori <iwa@...>
岩室@富士通です。
[#8635] slow gsub — WATANABE Hirofumi <Hirofumi.Watanabe@...>
わたなべです.
[#8645] urllib and httplib — TAKAHASHI Masayoshi <maki@...>
高橋征義です。
なひです.
高橋征義です。
なひです.
まつもと ゆきひろです
なひです.
青山です。
なひです.
高橋征義です。
まつもと ゆきひろです
高橋征義です。
なひです.
西@九大です。
なかだです。
あおきです。
[#8650] [PATCH] Ruby/Tk — Koji Arai <JCA02266@...>
新井です。
新井です。
新井です。
新井です。
永井@知能.九工大です.
新井です。
永井@知能.九工大です.
新井です。
新井です。
[#8665] [mswin32] STDERR does not work during `_function. — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです.
金子です。
金子です。
[#8667] make symlinks around libruby.so in instruby.rb — akira yamada / やまだあきら <akira@...>
[#8692] [win] dir name — KANEKO Naoshi <wbs01621@...>
金子です。
小田@QNES です。
えぐち@エスアンドイー です。
小田@QNES です。
えぐち@エスアンドイー です。
なかだです。
小田@QNES です。
えぐち@エスアンドイー です。
小田@QNES です。
[#8705] [mswin32] 100% CPU usage when use sleep — Katsuyuki Komatsu <komatsu@...>
小松です。
まつもと ゆきひろです
小松です。
[#8722] [mswin32] Win32API — KANEKO Naoshi <wbs01621@...>
金子です。
小松です。
まつもと ゆきひろです
[#8741] Re: [ruby-list:19945] Re: array + empty string — Wakou Aoyama <wakou@...>
青山です。
まつもと ゆきひろです
青山です。
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#8742] [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Kazunori NISHI <kazunori@...>
西@九大です。
まつもと ゆきひろです
西@九大です。
まつもと ゆきひろです
西@九大です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
西@九大です。
あおきです。議論も好き。
西@九大です。
あおきです。
まつもと ゆきひろです
有馬です。
knuです。
まつもと ゆきひろです
これつぐです。
knuです。
まつもと ゆきひろです
あおきです。
まつもと ゆきひろです
In message "[ruby-dev:8792] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num)"
まつもと ゆきひろです
ごとけんです
ごとけんです
なかだです。
ごとけんです
[ruby-dev:8565] interface declaretion
かんだです。
すぐにではないんですが、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)
--------------------------------------------------------------------