ExternalType パーツは、EGL を外部言語要素にマップします。
このマッピングは、サービス関数に対してインターフェース・パーツが提供するマッピングと似ていますが、EGL の外部言語要素へのマッピングは、フィールドとコンストラクターを含むように一般化されます。 ExternalType パーツがサポートする唯一の外部要素は Java™ オブジェクトです。
ExternalType の概念は、ライブラリーまたはサービスの概念と似ています。 これらいずれにおいても、プログラム内で外部機能を使用します。サービスまたは ExternalType の場合、EGL はコードに直接アクセスできないため、 EGL が必要な型の検査を実行できるように、特定のプロトタイプを提供する必要があります。
ExternalType 定義はストレージを予約しません。 変数は、このパーツに基づいて宣言する必要があります (オプションで EGL new 文を使用)。これにより、その変数および関数を使用するようになります (ただし、これらの関数が static と宣言されている場合を除きます。このトピックの『構文』を参照してください)。
ExternalType パーツで使用される多数の概念は、Java や C# のようなオブジェクト指向言語に由来しています。それらの概念には、拡張、継承、コンストラクターなどが含まれます。これらの用語について詳しく知りたい場合は、Java の基本解説書を参照してください。
ExternalType パーツの主な用途の 1 つは、イベント処理用に関数ポインターの配列を作成することです。 EGL テキスト・レポートでの ExternalTypes の使用ついては、EGL テキスト・レポートを参照してください。
関数が static とマークされている場合は、 ExternalType パーツの名前とドット構文 (typeName.methodName()) を使用してこの関数を呼び出します。 あるいは、ExternalType に基づいて変数を作成し、ドット構文 externalTypeVariable.methodName() を使用してこの変数名をメソッド名に追加します。 詳しくは、例を参照してください。
ExternalType CustomDate extends Serializable type JavaObject
{
packageName="com.mycompany",
javaName="CustomDate"
}
// 関数
end
関連する Java クラスに java.io.Serializable インターフェースが実装されている場合、シリアライズ可能 ExternalType 変数はディスクに直接保存可能であり、後で復元できます。 シリアライズ可能 ExternalTypes を拡張しない ExternalType は、一時的 である、つまりディスクへ直接保存できないとみなされます。 非シリアライズ可能 ExternalType で情報を保存する場合は、データ・ソースを使用する必要があります。
ExternalType Serializable type JavaObject
{
JavaName = "Serializable",
PackageName = "java.io"
}
end