このオブジェクトの保持するデータとメソッドの処理内容を以下に示す。 exref classとして、runtime/ge_exref.cで定義されている。
(輸出元)ノード番号、輸出表エントリのID、重み(WEC)。
より詳細には、runtime/include/klic/ge_exref.hに以下のように定義されている。
struct exref_object{
struct generator_object_method_table *method_table;
long node; /* ノード番号 */
long index; /* 輸出表エントリ */
long wec; /* 重み */
q to_exref; /* generator二重ループの入口 */
long gc_flag; /* GCメソッドがよびだされたかどうかのフラグ */
};
返信先を用意して%readを送信しコンシューマ外部参照オブジェクトを作成する。 コンシューマ外部参照オブジェクトの作成時に与える引数群のうち、 ノード番号、輸出表エントリのID 及び WEC は、 自分が保持しているデータをそのまま渡す。 作成したオブジェクトへのポインタをデレファレンスメソッドの返り値とする。
(メソッドの引数の)『対象データ』に従って以下のいずれかの処理を行う。
%unify(Tn=初期値,自分の参照先,具体値)
%unify(Tn=初期値,自分の参照先,『対象データ』)
%readの転送上限引数Tnの値に従い 以下のいずれかの処理を行う。
%read(Tn-1,自分の参照先,(前のままの)返信先)