| |||||||||||
| MINERVAは、Javaで書かれたプログラム部品と協力します。プログラム部品は「外部」で宣言され、MINERVAコードとして利用されます。 この機能を、すでに存在するネットワーク・グラフィカルユーザインタフェース・マルチメディア拡張などでライブラリおよびユーティリティを拡張して利用することができます。 Javaクラスにアクセスするインタフェースは、MINERVA内にあるジェネレータを使用して実現されます。ユーザは、Java関数へのインタフェースを宣言します。 ジェネレータは、パラメータの変換及びクラス呼び出しの為に、上の宣言を呼び出しのための枠組に変換します。 外部クラスの宣言は、以下のようになります。
dynamic_function( PredicateName, JavaClassName, FunctionName(TypeArg1,...,TypeArgN), ReturnType). Examples:
dynamic_function(
button__set_label, % MINERVA predicate name
'Button', % Java class name
setLabel(string), % Java method
void % Java return type
).
結果として得られるMINERVAの述語は、各々、以下のようになります。
PredicateName(Object,Arg1,...,ArgN,ReturnArg) PredicateName(Object,Arg1,...,ArgN) % for void functions PredicateName(Arg1,...,ArgN,ReturnArg) % for static functions PredicateName(Arg1,...,ArgN) % for static void functions この例では、以下の二つの述語が得られます。
button__set_label(Button,DisplayText) font__get(FontName,Font) MINERVAからJavaを呼び出すインタフェースの一例をあげます。
dynamic_function(
get_line_number,
'java.io.LineNumberInputStream',
getLineNumber,
int
).
上記のように、3つのインタフェース述語が作られねばなりません。 動的述語には、以下が必要です。
int java.io.LineNumberInputStream.getLineName() (述語: get_line_number(+LineNumberStream,-LineNumber)) void java.io.LineNumberInputStream.setLineName(int lineno) (述語: set_line_number(+LineNumberStream,+LineNumber)) 'java.io.LineNumberInputStream'のオブジェクトを作るための インタフェース述語を以下に示します。
create_line_number_input_stream(+Stream, -LineNumberStream)この述語は、 "new java.io.LineNumberInputStream(stream)"の関数にコピーされます。 静的関数には、インタフェース記述(static_function)があります。 より詳しい情報は「例題プログラム」の章を参照して下さい。
| |||||||||||
| |||||||||||
| 戻る> |
|