C 言語用 BREW API を利用する方法
SophiaFramework プログラムから C 言語用 BREW API を利用する方法は以下のとおりです。
例 1 : IShell インターフェースの場合
SFBShellSmp xshell; IShellPtr ishell; // 方法1 if ((xshell = SFBShell::GetInstance()) != null) { ishell = interface_cast(xshell.Get()); // xshell が有効な間、 ishell を利用できる // ishell のスコープは xshell のスコープに依存する } // 方法2 if ((xshell = SFBShell::GetInstance()) != null) { ishell = interface_cast(xshell.Detach()); // ishell の解放権限を xshell から取得する // 開発者が ishell を明示的に解放する ISHELL_Release(ishell); }
例 2 : IFileMgr インターフェースの場合
SFBShellSmp shell; SFBBaseSmp xfilemgr; IFileMgr* ifilemgr; // 方法1 if ((shell = SFBShell::GetInstance()) != null) { // IFileMgr インターフェースを作成する if ((xfilemgr = shell->CreateInstance(AEECLSID_FILEMGR)) != null) { // スマートポインタクラスから // IFileMgr インターフェースへのポインタを取得する ifilemgr = reinterpret_cast<IFileMgr*>(interface_cast(xfilemgr.Get())); // IFileMgr インターフェースを利用する if (IFILEMGR_Test(ifilemgr, "myfile.txt") == SFERR_NO_ERROR) { // ... } // ifilemgr のスコープは xfilemgr のスコープに依存する // スコープを伸ばすには、xfilemgr と ifilemgr をクラス変数にする } } // 方法2 if ((shell = SFBShell::GetInstance()) != null) { // IFileMgr インターフェースを作成する if ((xfilemgr = shell->CreateInstance(AEECLSID_FILEMGR)) != null) { // スマートポインタクラスから // IFileMgr インターフェースへのポインタを取得する ifilemgr = reinterpret_cast<IFileMgr*>(interface_cast(xfilemgr.Detach())); // IFileMgr インターフェースを利用する if (IFILEMGR_Test(ifilemgr, "myfile.txt") == SFERR_NO_ERROR) { // ... } IFILEMGR_Release(ifilemgr); // ifilemgr のスコープは xfilemgr のスコープに依存しないが、 // ifilemgr は開発者が管理する // IFileMgr インターフェースを利用し終わった時点で // 開発者が ifilemgr を明示的に解放する } }