前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFXCallback
コールバック関数を扱うためのクラスです。
#include <SFXCallback.h.hpp>
class SFXCallback;
SFMTYPEDEFCLASS(SFXCallback)

解説

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 //
[Note] 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 構造体に型変換します。

SFXCallback::SFXCallback
SFXCallback クラスのコンストラクタです。
[ public, explicit ]
SFXCallback(Void);

解説

このコンストラクタは、このコールバックが内部で保持する BREW API AEECallback 構造体の内容をゼロクリアします。

参照

BREW API AEECallback


SFXCallback::~SFXCallback
SFXCallback クラスのデストラクタです。
[ public ]
~SFXCallback(Void);

解説

このデストラクタは、 内部的に SFXCallback::Cancel 関数を呼び出し、 コールバックの登録をキャンセルします。

参照

SFXCallback::Cancel


SFXCallback::Cancel
コールバックの登録をキャンセルします。
[ public ]
Void Cancel(Void);

解説

この関数は、 SFXCallback::Set 関数で設定した、 コールバックの登録をキャンセルします。

コールバックが登録されていない場合は、何も行いません。

[Tip] Tip

サスペンド時は、この関数を呼び出してコールバックの登録をキャンセルすることを推奨します。

[Note] 注意

この関数は、内部で BREW API CALLBACK_IsQueued 関数を呼び出してコールバックの登録を確認してから、 BREW API CALLBACK_Cancel 関数を呼び出してコールバックの登録をキャンセルします。

[Note] 注意

この関数は、SFXCallback::~SFXCallback デストラクタから呼び出されます。

参照

SFXCallback::Set | SFXCallback::~SFXCallback | BREW API CALLBACK_IsQueued | BREW API CALLBACK_Cancel


SFXCallback::EmptyInstance
空のコールバックを取得します。
[ public, static ]
SFXCallbackConstRef EmptyInstance(Void);

解説

この関数は、空のコールバックを表すインスタンスを取得します。

[Note] 注意

空のコールバックは、SFXCallback::SFXCallback コンストラクタの実行直後の状態と同じです。

参照

SFXCallback::SFXCallback


SFXCallback::GetProcedure
コールバック関数を取得します。
[ public, const ]
CallbackSPP GetProcedure(Void);

戻り値

このコールバックに設定したコールバック関数

解説

この関数は、 SFXCallback::Set 関数を使用してこのコールバックに設定したコールバック関数を取得します。

[Note] 注意

具体的には、 このコールバックが内部で保持する BREW API AEECallback 構造体の pfnNotify メンバに設定されている値を返します。

参照

SFXCallback::Set | SFXCallback::GetReference | BREW API AEECallback


SFXCallback::GetReference
コールバック関数に渡すデータを取得します。
[ public, const ]
VoidPtr GetReference(Void);

戻り値

このコールバックに設定したコールバック関数に渡すデータ

解説

この関数は、 SFXCallback::Set 関数を使用してこのコールバックに設定したコールバック関数に渡すデータを取得します。

[Note] 注意

具体的には、 このコールバックが内部で保持する BREW API AEECallback 構造体の pNotifyData メンバに設定されている値を返します。

参照

SFXCallback::Set | SFXCallback::GetReference | BREW API AEECallback


SFXCallback::IsQueued
コールバックが登録されているか判定します。
[ public, const ]
Bool IsQueued(Void);

戻り値

  • 登録されているとき: true
  • そうでないとき: false

解説

この関数は、AEE シェルにコールバックが登録されているか判定します。

[Note] 注意

この関数は、内部で BREW API CALLBACK_IsQueued 関数を呼び出します。

参照

SFXCallback::Set | BREW API CALLBACK_IsQueued


SFXCallback::Set
コールバックを設定します。
[ public ]
Void Set(
    CallbackSPP spp     // コールバック関数
    VoidPtr reference   // コールバック関数に渡すデータ(参照値)
);

解説

この関数は、 AEE シェルにコールバックを登録するための情報 (コールバック関数とコールバック関数に渡すデータ)を設定します。

SFXCallback::Cancel 関数を呼び出すので、 この関数を実行する前に登録されていたコールバックはキャンセルされます。

[Note] 注意

この関数は、このコールバックが内部で保持する 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


interface_cast
SFXCallback クラスを AEECallback 構造体に型変換します。
[ public, friend ]
AEECallback * interface_cast(
    SFXCallback * param   // キャストするコールバック
);
[ public, friend ]
AEECallback const * interface_cast(
    SFXCallback const * param   // キャストするコールバック
);

戻り値

BREW API AEECallback 構造体

解説

この関数は、SFXCallback クラスを BREW API AEECallback 構造体に型変換します。

参照

BREW API AEECallback


SFXCallback::CallbackSPP
コールバック関数の型です。
typedef Void(* SFXCallback::CallbackSPP)(VoidPtr reference)