SophiaFramework UNIVERSE 5.3 |
SFXCallback クラスは、 コールバック処理の核となるクラスです。 内部に BREW 環境とコールバック情報を受け渡しするための BREW API AEECallback 構造体を保持し、 コールバックのパラメータ設定や、コールバック登録の確認やキャンセルを行えます。
SFXCallback::Set 関数では、 以下のように BREW API CALLBACK_Init 関数を呼び出して、 SFXCallback クラスが内部に保持する BREW API AEECallback 構造体に、 コールバック関数とコールバック関数に渡すデータを設定しています。
例 810. SFXCallback::Set 関数の実装
class SFXCallback { ... private: SFXCallback クラスは AEECallback 構造体を内部に保持する AEECallback _callback; ... } /*public */Void SFXCallback::Set(CallbackSPP spp, VoidPtr reference) { _callback に登録済みのコールバックをキャンセルする Cancel(); _callback のデータをクリアする SFXHelper::memset(&_callback, 0, sizeof(_callback)); _callback をコールバック関数とコールバック関数に渡すデータで初期化する CALLBACK_Init(&_callback, spp, reference); return; }// SFXCallback::Set //
interface_cast 演算子により、 SFXCallback クラスを BREW API AEECallback 構造体にキャストできます。 また、この逆のキャストも可能です。
一般に、この演算子を利用して BREW API と SophiaFramework UNIVERSE とで BREW API AEECallback 構造体の受け渡しを行います。
interface_cast 演算子を使用して、 SFXCallback クラスを BREW API AEECallback 構造体に変換し、 BREW API ISHELL_SetTimerEx 関数に渡すコードは、以下の通りです。
例 811. SFXCallback クラスを AEECallback 構造体に変換して BREW API に渡す方法
/*public */inline SFCError SFBShell::SetTimerEx(SInt32 mSecs, SFXCallbackPtr callback) { return ISHELL_SetTimerEx(interface_cast(this), mSecs, interface_cast(callback)); }// SFBShell::SetTimerEx //
SFXCallback クラス | |
---|---|
SFXCallback クラスは、 ストレージ系クラスの読み書きで使用されるコールバックや、 タイマー(SFXTimer、タスク(SFXTask)の実装で利用されています。 |
SFXTask | SFXTimer | interface_cast | BREW API AEECallback | BREW API CALLBACK_Init | BREW API ISHELL_SetTimerEx | ストレージ
コンストラクタ/デストラクタ |
---|
SFXCallback( Void ) SFXCallback クラスのコンストラクタです。
|
~SFXCallback( Void ) SFXCallback クラスのデストラクタです。
|
パブリック関数 | |
---|---|
Void |
Cancel( Void ) コールバックの登録をキャンセルします。
|
static SFXCallbackConstRef |
EmptyInstance( Void ) 空のコールバックを取得します。
|
CallbackSPP |
GetProcedure( Void ) コールバック関数を取得します。
|
VoidPtr |
GetReference( Void ) コールバック関数に渡すデータを取得します。
|
Bool |
IsQueued( Void ) コールバックが登録されているか判定します。
|
Void |
Set(
CallbackSPP spp
, VoidPtr reference
) コールバックを設定します。
|
AEECallback * |
interface_cast(
SFXCallback * param
) SFXCallback クラスを AEECallback 構造体に型変換します。
|
AEECallback const * |
interface_cast(
SFXCallback const * param
) SFXCallback クラスを AEECallback 構造体に型変換します。
|
型 |
---|
CallbackSPP コールバック関数の型です。
|
グローバル関数 | |
---|---|
AEECallback * |
interface_cast(
SFXCallback * param
) SFXCallback クラスを AEECallback 構造体に型変換します。
|
AEECallback const * |
interface_cast(
SFXCallback const * param
) SFXCallback クラスを AEECallback 構造体に型変換します。
|
[ public, explicit ] SFXCallback(Void);
このコンストラクタは、このコールバックが内部で保持する BREW API AEECallback 構造体の内容をゼロクリアします。
[ public ] ~SFXCallback(Void);
このデストラクタは、 内部的に SFXCallback::Cancel 関数を呼び出し、 コールバックの登録をキャンセルします。
[ public ] Void Cancel(Void);
この関数は、 SFXCallback::Set 関数で設定した、 コールバックの登録をキャンセルします。
コールバックが登録されていない場合は、何も行いません。
Tip | |
---|---|
サスペンド時は、この関数を呼び出してコールバックの登録をキャンセルすることを推奨します。 |
注意 | |
---|---|
この関数は、内部で BREW API CALLBACK_IsQueued 関数を呼び出してコールバックの登録を確認してから、 BREW API CALLBACK_Cancel 関数を呼び出してコールバックの登録をキャンセルします。 |
注意 | |
---|---|
この関数は、SFXCallback::~SFXCallback デストラクタから呼び出されます。 |
SFXCallback::Set | SFXCallback::~SFXCallback | BREW API CALLBACK_IsQueued | BREW API CALLBACK_Cancel
[ public, static ] SFXCallbackConstRef EmptyInstance(Void);
[ public, const ] CallbackSPP GetProcedure(Void);
このコールバックに設定したコールバック関数
この関数は、 SFXCallback::Set 関数を使用してこのコールバックに設定したコールバック関数を取得します。
注意 | |
---|---|
具体的には、 このコールバックが内部で保持する BREW API AEECallback 構造体の pfnNotify メンバに設定されている値を返します。 |
[ public, const ] VoidPtr GetReference(Void);
このコールバックに設定したコールバック関数に渡すデータ
この関数は、 SFXCallback::Set 関数を使用してこのコールバックに設定したコールバック関数に渡すデータを取得します。
注意 | |
---|---|
具体的には、 このコールバックが内部で保持する BREW API AEECallback 構造体の pNotifyData メンバに設定されている値を返します。 |
[ public, const ] Bool IsQueued(Void);
この関数は、 AEE シェルにコールバックを登録するための情報 (コールバック関数とコールバック関数に渡すデータ)を設定します。
SFXCallback::Cancel 関数を呼び出すので、 この関数を実行する前に登録されていたコールバックはキャンセルされます。
注意 | |
---|---|
この関数は、このコールバックが内部で保持する BREW API AEECallback 構造体の内容をゼロクリアしてから BREW API CALLBACK_Init 関数を呼び出してコールバックを設定します。 この関数を実行した後、引数に指定したコールバック関数とコールバック関数に渡すデータは、 BREW API AEECallback 構造体の pfnNotify メンバと pNotifyData メンバに設定されます。 |
SFXCallback::Cancel | SFXCallback::IsQueued | SFXCallback::GetProcedure | SFXCallback::GetReference | BREW API CALLBACK_Init | BREW API AEECallback
[ public, friend ] AEECallback * interface_cast( SFXCallback * param // キャストするコールバック );
[ public, friend ] AEECallback const * interface_cast( SFXCallback const * param // キャストするコールバック );
この関数は、SFXCallback クラスを BREW API AEECallback 構造体に型変換します。
typedef Void(* SFXCallback::CallbackSPP)(VoidPtr reference)
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |