前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0

22.1. BREW インターフェース

SophiaFremwork には、BREW SDK に含まれるすべての インターフェイスに対応する C++ ラッパー クラスが提供されます。

22.1.1. SFBHash の場合

例 22.1. インターフェースの作成

// SFBHashSmp は SFBHash インターフェースを管理するスマートポインター
// SFBHash::NewInstance 関数を使って新しいインターフェースを作成する
SFBHashSmp hash(SFBHash::NewInstance(AEECLSID_MD5));

例 22.2. インターフェースの呼び出し

// API 呼び出し
hash->Restart();

例 22.3. インターフェースの利用後の処理

// インターフェースは自動的に解放されるので、何もしなくてよい

// インターフェースを明示的に解放する場合
// hash->Release(); とする

22.1.2. ラッパーの実行速度

ラッパー クラスには、BREW API を C++ で単純にラップしたインライン関数と SophiaFramework のクラスを引数とする関数があります。

インライン関数はコンパイル時にインライン展開されるので、実行時に速度が低下することはありません。

例 22.4. IShell インターフェースの ISHELL_GetAppCopyright 関数

// BREW ネイティブ API
int ISHELL_GetAppCopyright(IShell* pIShell, AECHAR* pBuff, int nSize);

// BREW API 関数を単純にラップしたインライン関数
SInt32 SFBShell::GetAppCopyright(WCharPtr buf, SInt32 size);

// SophiaFramework のクラスを引数とする関数
SInt32 SFBShell::GetAppCopyright(SFXWideStringPtr string);

この関数は引数として WChar 型文字列を格納するバッファへのポインターを与えます。

インライン関数は BREW ネイティブ API を単にラップしたものです。

SophiaFramework のクラスを引数とする関数では、SFXWideString などが使えるように拡張されています。 SFXWideString のサイズを取得する等のオーバーヘッドが含まれるため、速度は若干遅くなります。