C++ API(Application Programmer's Interface)は C++ クラスのライブラリであり、C++ 開発者が Softimage オブジェクト モデルにアクセスするために使用するものです。 ライブラリでは、特に以下の種類のクラスが使用されます。
API クラス: ミューテータ クラスおよびアクセッサ クラスです。内部の Softimage オブジェクトに適用できるメソッドをカプセル化します。
コアクラス: Softimage の内部オブジェクトや配列にアクセスする際に API クラスによって使用される、汎用クラス(CRef)などの一般的な処理を行います。
計算クラス: ベクトル、行列、変換、回転、クォータニオンなどの Softimage 計算ライブラリ エレメントにアクセスします。 計算クラスは、API クラス オブジェクトとしては処理されません。これは、計算クラスはリファレンス オブジェクトで表されず、作成時に CRef オブジェクトを必要とせず、自由に作成できるためです。
C++ API は、自動的にオブジェクトのライフタイムを管理するように設計されています。 シーン内のオブジェクトを参照するクラス(例: CRef または API クラス)は負荷がかからず、この章の例で示されるようにスタックで作成されます。 これらのオブジェクトのコンストラクタは自動的にオブジェクトのカウントを増やし、デストラクタは自動的にこのカウントを減らします。 これにより、AddRef() および Release() を呼び出してオブジェクトのライフタイムを明示的に制御する必要がある COM 開発が、より簡単に行えるようになります。
シーンから削除されたオブジェクトのリファレンスは保持されないことに注意してください。 たとえば、プラグインによってヒープ内の球へのリファレンス オブジェクトが保持されている場合、球がシーンから削除されると(または別のシーンが開くと)、C++ API リファレンスには現在の Softimage コンテキストで使用可能なオブジェクトがなくなるので zombie オブジェクトをポイントします。
標準の C++ API プラグインでは、クラスはスタックに一時的に作成されるため、これは問題にはなりません。また、プラグインによってオブジェクトが明示的に削除された場合は(DeleteObj コマンドの呼び出しによって)、プラグインのコールバック実行中にのみオブジェクトが削除されます。
API クラスは、内部のオブジェクト メソッドを呼び出す仮想メソッドを持たないラッパー クラスです。 API 内部でポリモーフィズムが発生しているため、これらのクラスは基本的な API 関数セットのように動作します。 この追加のレイヤによって、バージョン間で下位互換性が確保されます。
C++ API は、CStatus クラスをエラー処理機能とともに使用します。CStatus クラスは、ステータスのデータ型(Fail、Invalid Argument、Out of Memory、Access Denied など)をカプセル化し、照会、エラー コードの設定、拡張エラー記述の印刷を可能にします。