![]() ![]() ![]()
|
SophiaFramework 2.1 |
SophiaFramework には BREW のインターフェイス IInterface に対応するラッパー クラス SFBInterface が用意されています。 たとえば、BREW の IDisplay インターフェイスには、 それに対応する SFBDisplay が用意されています。
BREW インターフェースのほぼすべての関数に対して、 対応するラッパーが用意されています。 それに加えて、プログラミングに便利ないくつかの拡張関数も用意しています。 詳細はクラス リファレンスを参照してください。
ラッパー クラスには、BREW API 関数を薄く包み込んだインライン関数と、 BREW API 関数を補完するような拡張された関数の 2 種類の関数が実装されています。
前者の関数は C++ コンパイラが適切に処理する限り コンパイル時にインライン展開されてネイティブの BREW API 呼び出しに変換されますので、速度低下が発生することはありません。
たとえば、BREW API 関数の 1 つである IIMAGE_GetInfo は次のようなプロトタイプを持ちます。
void IIMAGE_GetInfo(IImage * pIImage, AEEImageInfo * pi);
この関数に対応する SFBImage::GetInfo 関数は、 次のようにインライン定義されています。
class SFBImage : public SFBBase {
...
inline Void GetInfo (AEEImageInfo* pi)
{
IIMAGE_GetInfo(reinterpret_brew<IImagePtr>(this), pi);
return;
}
};
したがって、この関数をソースコード中で使用しても、 コンパイル段階でネイティブ BREW API 呼び出しに展開されるため、 速度低下は発生しません。
これに対して、BREW API 関数の単なる薄いラッパーではなく、 SophiaFramework で独自に定義した拡張関数も存在します。 たとえば、BREW API 関数 IShell_GetAppCopyright は次のようなプロトタイプを持ちます。
int ISHELL_GetAppCopyright(
IShell * pIShell,
AECHAR * pBuff,
int nSize
)
この関数は指定されたサイズをもつバッファに、 アプレットの著作権情報を取得します。 この BREW API 関数に対応するラッパー関数として SFBShell::GetAppCopyright が用意されていますが、 この関数には複数のオーバーロードがあります。
class SFBShell : public SFBBase {
...
inline SIntN GetAppCopyright(WCharPtr pBuff, SIntN nSize)
{
return(ISHELL_GetAppCopyright(reinterpret_brew<IShellPtr>(this), pBuff, nSize));
}
SFUWideString GetAppCopyright(SIntN nSize = 256);
};
最初のインライン関数は BREW API 関数の薄いラッパー関数となっており、 速度低下は発生しません。 2 つめのオーバーロード関数ではインライン関数ではなく、 指定されたサイズのバッファを内部的に確保した上で BREW API 関数を呼び出して結果の文字列を SFUWideString として返すように実装されています。 このような関数は、 コンパイル段階で単純な BREW API 関数呼び出しには展開されませんが、 簡易なプログラミングができるという利点があります。
![]() |
注意 |
|---|---|
SophiaFramework の無料評価版では、 ラッパー クラスの関数はすべて非インライン関数として提供されますので、 ラッパー クラスを使用することにより速度低下が発生します。 しかし、SophiaFramework の製品版では BREW API 関数に対応する関数は すべてインライン関数として提供されるため、 コンパイラがインライン展開を行う限り速度低下は発生しません。 | |
SophiaFramework では KDDI 拡張インターフェイスに対するラッパー クラスも用意しておりますが、標準では使用できないようになっています。 KDDI 拡張インターフェイス IKDDIPhoneSystem および IKDDIPPP のラッパークラスである SFBKDDIPhoneSystem および SFBKDDIPPP を利用するためには、 KDDI の BREW 日本拡張パッケージをお使いの BREW SDK にインストールした上で、 SophiaFramework.hpp ヘッダー ファイルををインクルードする前に、 SFMKDDIEXTENSION マクロを定義します。
#define SFMKDDIEXTENSION #include <SophiaFramework.hpp>
これで拡張インターフェイスのラッパー クラスが使用可能になります。
| Copyright(C) 2003 Sophia Cradle Inc., All Rights Reserved. |
![]() ![]() ![]()
|