RokkoFortranFunctionOverload - t-sakashita/rokko GitHub Wiki
Fortran関数のオーバーロードの方針
interface
構文の後に総称名に書き、オーバロードする副プログラムを列挙する。
- モジュールプロシージャの場合:
module procedure
を付ける。例:https://gist.github.com/t-sakashita/8cfd3f85277959f63ef560db2bfd02a5 - 外部副プログラムの場合:単に
procedure
とする。(module procedure
を付けるとエラーとなる。)
オーバーロードを使って、できるだけ関数名は短く綴る。
だが、Fortranには、階層的な名前空間がない。
オーバーロードした名前は、通常の関数名として使用できない。
ユーザが使いそうな関数名となることは避けたい。
そこで、一律に、接頭辞としてrokko_
を付けて、衝突を避けることにした。
parameters
ではなく、rokko_parameters
と名付ける。construct
は使わず、rokko_construct
と名付ける。
class
キーワードの使用
class
キーワードを使えば、moduleの実体が複数作れる。
call params%set("",)
オブジェクトを第一引数として書くか、%の前に書くかの違いであり、記述の長さに違いはない。 また、Fortranユーザにはなじみがないし、コンパイラの対応状況、オーバーヘッドが未知である。まだ導入しない。
Fortran2008が普及した後に検討
- コンストラクタのような書き方
- finalizeを自動で呼び出す。