[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:000349] Re: [REQ] header for Ruby/DCL



ごとけんです

In message "[dennou-ruby:000347] Re: [REQ] header for Ruby/DCL"
    on 00/05/09, Takeshi Horinouchi <horinout@xxxxxx> writes:
>堀之内です。

>何人かで手分けすると楽になりますね。全部は辛いですが、お手伝い
>します。

ありがとうございます。是非お願いします。やりたいところを宣言
してから、さっそくはじめて下さって構いません。僕のほうでは
CVSのcommit権限の準備をします。

>最大の難関は const のような気がします。変数の値が変更される可能性が
>無い場合 const をつける必要がありますか?  

必要です。

>dcl のソースでは引数への
>代入があるかどうかは、ソースレベルでは中を見ないと分かりませんね。
>ドキュメントも中を読んで頑張って解釈しないといけなかった気がします..。

この部分にすごく時間をくうことが、こないだ分かりました。

詳しくいえば、何らかの値を取り出すサブルーチンを使う場合に必
要です。const 情報をどう使うかは次の例で説明します。

>>  subroutine glrget (
>> 	const char *
>> 	float
>>  )

この場合、Rubyのメソッドとしては glrget_ の第2引数を値として
返したいので、次のようなラッパを書きます。

static VALUE
glrget(self, str)
    VALUE self, str;
{
    float x;
    char *p;

    p = STR2CSTR(str);
    glrget_(p, &x, strlen(p));
    return rb_float_new(x);
}

このなかで、返す変数が x に格納されているという知識を得るの
に「const がついてない」ことを使うのです。もちろん上のはプロ
トタイプもどきはあくまで例ですからもっと読みやすいモノにして
も構いません。少なくとも僕に分かるように C の型名さえ使って
もらえて、正規表現程度でなんとかなるような仕様ならなんでも良
いです。

またGCとのからみで、static や extern 変数の領域の割当が変更
されるとマズいから出来るだけすべて知っておきたいです。

逆に言えば領域の割当が変更されないことが保証されている場合は
「const がついてない」という情報は不要です。

>f90ラッパーだと intent(in)/intent(inout)/intent(out) をちゃんと書い
>てあるんでしょうか。なら、それを参考に出来ますね。

ですね。だれかレビューして下さると助かります。

>これなんですけど、ruby の知識は要らないので、dennou-davis のほうに流し
>て人を募りませんか。

それはよい考え。流してみます。

-- gotoken