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

[dennou-ruby:000574] Re: new name for proto2c



ごとけんです

札幌に帰って来ました。堀之内さん、川那辺さん、黒井さん、お忙
しいところお世話になりました。やぱり札幌はさぶいです。

In message "[dennou-ruby:000571] Re: new name for proto2c"
    on 00/11/13, Kuroi Keiko <keiko@xxxxxx> writes:
>いい名前だと思いますけど…。さっき、
>
>kuro@xxxxxx:~$ apt-cache search felt
>felt - Package for introductory level finite element analysis.
>felt-doc - FElt User's Guide and Reference Manual.
>
>ていうのを見つけてしまいました。f-elt ってことなんですかね?

がびーん、FreeBSD の ports にもありました。チェックしておく
べきだった。fwrap というのはどうかしらん…と思ったら、whois
によれば fwrap.com があるそうです。Lycos の FAST FTP Search 
でも引っかかるなあ。

いっそのこと fwrappe -- Fotran WRAPPer -- フラッペ -- ごくご
く飲めない(cannot be `swig') -- にしたいけど、長い??

>> usage:
>>   felt [options] basename file1.fp ...
>> 
>> options:
>>     -l <layout>
>>     -d <destination dir>
>> 
>> layout は各*.cファイルの作り方を書いたものです。具体的には、
>> 
>>   math1_blklib.c: p_header -
>>   math1_chrlib.c: p_header -
>>     ....

>-l を省略した場合は、
>
>    *.c: <デフォルトのファイル> - 
>
>のような感じですか?

そのつもりです。layoutファイル中でレイアウト指定が省略された
ものについてもそうするつもりです。

>> それと p_init 相当のdcl.cもヒナ型を出力するように出来るんじゃ
>> ないかと思うんですが、どう思いますか??
>x.fp ファイルに felt をかけると、f2c みたいに、x.c と x.P(?)
>ができて、x.P(?) の内容は、こんな感じで、
>
>    extern VALUE dcl_gropn(VALUE, VALUE);
>    .....
>
>    rb_define_module_function(mDCL, "gropn", dcl_gropn, 1);
>    .....
>
>あとで、必要な *.P(?) をマージして Init_dcl() の体裁を整えて
>dcl.c の出来上がり、とイメージしています。
>それとも、felt 一回で済ますため、dcl.c に追加していくのです
>かね?

うーむ。ぼくは中間ファイルは不要と思ってたけど *.h を吐かせ
て #include した方が逆に分かりやすいのかも知れません。一方、
extern と rb_def... が混ざった *.P はオプションかなあ。

>*.P(?) をつくるのは、*.c の内容を作ったら必要な情報はあるの
>でできると思います。
>    Prototype#declare
>    Prototype#define
>のようなメソッドを作りましょうか?
>でも、標準出力にだせないし。。。どうしましょう?

名前を決めてないので commit 出来ないですけど、手元で作っちゃ
いました。いまは Prototype#to_s はコードにしてますが、

  class Prototype
    # to_s -> wrapper

    def declaration ; end
    def rb_define_module_function ; end
    alias to_s declaration
  end

しようと思います。つまり、fwrappe では、以下のようになります。

  PrototypeParser.new(f).parse do |x|
    dotc.print x.wrapper
    doth.print x.declaration
    init.print_with_indent 4, x.rb_define_module_function
  end

-- gotoken