| MINERVAは、Javaで書かれたプログラム部品と協力します。プログラム部品は「外部」で宣言され、MINERVAコードとして利用されます。
この機能を、すでに存在するネットワーク・グラフィカルユーザインタフェース・マルチメディア拡張などでライブラリおよびユーティリティを拡張して利用することができます。
Javaクラスにアクセスするインタフェースは、MINERVA内にあるジェネレータを使用して実現されます。ユーザは、Java関数へのインタフェースを宣言します。
ジェネレータは、パラメータの変換及びクラス呼び出しの為に、上の宣言を呼び出しのための枠組に変換します。
外部クラスの宣言は、以下のようになります。
dynamic_function(
PredicateName,
JavaClassName,
FunctionName(TypeArg1,...,TypeArgN),
ReturnType).
static_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
).
static_function(
font__get, % MINERVA predicate name
'Font', % Java class name
getFont(string), % Java method
'Font' % 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
).
dynamic_function(
set_line_number,
'java.io.LineNumberInputStream',
setLineNumber(int),
void
).
create_instance(
create_line_number_input_stream,
'java.io.LineNumberInputStream'('java.io.InputStream')
).
上記のように、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)があります。
より詳しい情報は「例題プログラム」の章を参照して下さい。
- 実行:
- Manual/Reference/Invocation/minervax
- 例:
- gui/gui.mxt
- ExamplePrograms/MinervaFeatures/MinervaToJava_1
- gui/gui.mxt
- ExamplePrograms/MinervaFeatures/MinervaToJava_2
- ExamplePrograms/MinervaFeatures/MinervaToJava_3
- ExamplePrograms/MinervaFeatures/MinervaToJava_4
|