ユーザ データ

 
 
 

ユーザ データは、UFO プロセス インスタンス、および UFO エディタ インスタンスにアタッチすることができます。 ufoProcessSetUserDataufoProcessGetUserDataufoEditorSetUserData、および ufoEditorGetUserData をそれぞれ使用することにより、ユーザ データを任意のユーザ関数に設定してアクセスすることができます。

UFO プロセス インスタンスがコピーされた場合、ユーザ関数 ufoProcessCopyUserData を指定して、ユーザ定義メソッドで関連プロセス ユーザ データをコピーできます。 同様に、UFO プロセス インスタンスが破壊(破棄)された場合、ufoProcessDeleteUserData ユーザ関数を指定して、ユーザ定義メソッドでその UFO プロセス インスタンスを整理することができます。

ディスク上のプロセス ファイルに対する UFO ユーザ データの読み出し/書き込みを容易にするユーザ関数のほか、UFO プロセスの標準パラメータおよび入力/出力設定があります。 ASCII 形式でデータを保存してロードするには、ufoProcessWriteAsciiData ユーザ関数および ufoProcessReadAsciiData ユーザ関数をそれぞれ指定します。 あるいは、バイナリ形式でデータを保存してロードするには、ufoProcessWriteBinaryData ユーザ関数および ufoProcessReadBinaryData ユーザ関数をそれぞれ指定します。

現行バージョンでは、UFO エディタ インスタンスは同時に 1 つしか存在しません。そのため、対応する ufoEditorCopyUserData ユーザ関数および ufoEditorDeleteUserData ユーザ関数は存在しません。 UFO エディタが破壊された場合、ufoProcessDeleteUserData ユーザ関数を指定して、ユーザ定義メソッドでエディタ ユーザ データを整理することができます。

UFO ライタに求められるのは、レンダリング時によく使われる構造体および値が格納される UFO コード内にグローバル データを使用するのを控えるとともに、UFO ユーザ データを用いて UFO の各インスタンス同士を見分けるメソッドを採り入れることです。 このようにする根本的な狙いは、同時に使われていて同じデータにアクセスしている同一 UFO プロセスの複数インスタンスを保護することにあります。 マルチプロセシングの場合、レンダリング時のグローバル データの書き込みは特に、エラーの原因になると考えられます。