![]() ![]() ![]()
|
SophiaFramework UNIVERSE 5.0 |
レスポンダシステムを利用するすべての BREW アプレットは SFYApplication クラスを継承し、ユーザー定義アプリケーションクラスを実装します。
SFYApplication クラスはレスポンダではなく、デフォルトの配信エンジンと描画エンジンとルートを保持するクラスです。
SFYApplication クラスに対するレスポンダ関連の操作はデフォルトのルートに委譲され、 SFYApplication クラスに用意された API の範囲内でアプリケーションクラスはレスポンダのように振舞うことができます。
抽象アプリケーションクラス(SFYApplication)はカスタマイズされたユーザー定義アプリケーションクラスを作成するための起点となります。
SFYApplication クラスは、各種アプリケーションクラスを実装するための起点となります。
このクラスは、デフォルトの配信エンジンと 描画エンジンとルートを実装し、 いくつかの仮想関数のデフォルトの動作も実装します。
表 9.6. 仮想関数名とデフォルトの動作
| 仮想関数名 | デフォルトの動作 | オーバーライド |
|---|---|---|
| SFYApplication::HandleEvent | 配信エンジンを起動し、イベントが処理された場合はさらに描画エンジンを起動※1 | 任意 |
| SFYApplication::HandleRender | 描画エンジンを起動し、画面を強制的に再描画※1 | 任意 |
| SFCApplication::HandleError | − | 任意 |
![]() |
注釈 |
|---|---|
※1.配信エンジンや描画エンジンの起動中にメモリ不足などのエラーが発生するなど致命的なエラーが発生した場合は SFCApplication::HandleError 関数を起動します。 | |
以下にユーザー定義アプリケーションクラスを作成するときに最低限必要なコードを示します。
例 9.31. 宣言
SFMTYPEDEFCLASS(USRApplication)
class USRApplication : public SFYApplication {
SFMSEALCOPY(USRApplication)
public:
static SFCInvokerPtr Factory(Void);
private:
explicit USRApplication(Void) static_throws;
virtual ~USRApplication(Void);
};
例 9.32. 実装
// ブートローダ : BREW アプレットで最初に実行される関数 SFCApplet::FactorySPP SFCApplet::Boot(AEECLSID id, SFXAnsiStringPtr license) { // ここにライセンスコードを記述する *license = "heap://"; return (id == AEECLSID_USRAPPLICATION) ? (&USRApplication::Factory) : (null); } // ファクトリ関数 : ユーザー定義アプリケーションクラスのインスタンスを生成する関数 SFCInvokerPtr USRApplication::Factory(Void) { return ::new USRApplication; } // コンストラクタ USRApplication::USRApplication(Void) static_throws { if (static_try()) { // 初期化処理を記述する } } // デストラクタ USRApplication::~USRApplication(Void) { // 終了処理を記述する }
![]() |
コンストラクタやデストラクタ内の return 文 |
|---|---|
|
通常、C++ではコンストラクタやデストラクタでは return 文を記述しません。 GCC(将来的にサポート予定)を使う場合、コンストラクタやデストラクタ内で return 文を記述すると、 特定の継承関係になっているときにコンパイラがフリーズするバグが確認されています。 | |
|
Copyright(c) 2002 - 2009 Sophia Cradle Incorporated All Rights Reserved. |
![]() ![]() ![]()
|