gtool4/Fortran 90 リファレンス - ライブラリ概観

オブジェクト指向構成

2001年09月25日 豊田英司


オブジェクト指向スタイル

gtgraph, gtdata ライブラリは独自のオブジェクト指向スタイルで記述されています。

実例を示しましょう。

データアクセスをするには必ず変数を開かなくてはなりません。変数を開くというのを Fortran ではどう書くかというと、たとえば

use gtool

type(GT_VARIABLE):: var

type(VSTRING):: filename

  ...

filename = "gtool.nc"

call Open(var, filename)

のようになります。ある gtool 変数というのは type(GT_VARIABLE) 型の (Fortran の) 変数であらわされます。これを Open というサブルーチンに突っ込むと、変数が開かれるわけです。ではこの Open の実体はどこにあるかというと、gtdata_generic モジュールにその手がかりが書かれています。

! 一部省略があります

interface open

    subroutine GTVarOpen(var, url, writable, err)

        type(GT_VARIABLE), intent(inout):: var

        type(VSTRING), intent(in):: url

        logical, intent(in), optional:: writable

        logical, intent(out), optional:: err

    end subroutine

    subroutine GTVarOpenByDimOrd(dimvar, var, dimord, ount_compact, err)

        type(GT_VARIABLE), intent(inout):: dimvar

        type(GT_VARIABLE), intent(in):: var

        integer, intent(in):: dimord

        logical, intent(in), optional:: count_compact

        logical, intent(out), optional:: err

    end subroutine

end interface

ここで open というインターフェイスは GTVarOpen と GTVarOpenByDimOrd という2つのサブルーチンが提供するのであるといっています。上の例をコンパイルすると、単に Open と書いてあるところでコンパイラが引数リストに合う GTVarOpen を選択してくれるのです。GTVarOpen については別に書いたのでそちらを見てくださいね。

Fortran 90 言語では Open のような interface 文に書かれている名前を総称名、GTVarOpen などのような本当の名前を個別名といいます。引数の型の違うサブルーチンは同じ総称名を持つことができます。同様に、引数の型の違う関数は同じ総称名を持つことができます。gtool4/Fortran 90 ではこの総称名というメカニズムを使って多数のサブルーチンや引数を整理しています。

構造型名や総称名のリストは別のページにしました

動的多相性をポインタで実現するアイデアは V.K.Decyk et al. (1998) から得たものです。これによって gtgraph 層はすべて GT_DEVICE と GT_OBJECT の操作であるかのように利用できますし、gtdata 層はすべて GT_VARIABLE の操作であるかのように利用できます。