AIW ジェネリック・パラメータ(Generic Parameters) API
Article Metadata
Code Example
Article
AIWジェネリック・パラメータAPI は、AIWコンシューマ・アプリケーションに、AIWジェネリック・パラメータを扱う方法を提供するために使用されます。ジェネリック・パラメータは、AIWコンシューマ(consumers)とプロバイダ(providers)間でデータを転送するために使用されます。
使用例
AIWジェネリック・パラメータAPIは主に次のことに使用されます:
ベーシックな型のジェネリック・パラメータ・リストの作成
プロバイダ特有のオブジェクトのジェネリック・パラメータ・リストの作成
サンプル・コード
ベーシックな型のジェネリック・パラメータ・リストの作成 (訳注:「ベーシックな型」は、TBoolやTReal 等を意味しない)
このサンプル・コードは、どのようにしてジェネリック・パラメタ・リストを作成し、ファイル名(ディスクリプタ)とエラー・コード(整数)アイテムでそれを埋めるかを示します。これは、プロバイダ特有のオブジェクトを必要としないAIWプロバイダに、共通の型のパラメータを渡す方法です。
#include <AiwGenericParam.h>// Create a list and put it into the cleanup stack.
CAiwGenericParamList* list = CAiwGenericParamList::NewLC();
// Set up and append file name parameter.
_LIT(KMyFileName, "c:\\data\\testfile.txt");
TFileName filename(KMyFileName);
TAiwGenericParam param(EGenericParamFile);
param.Value().Set(filename);
list->AppendL(param);
// Set up and append error code parameter.
param.Reset();
param.SetSemanticId(EGenericParamError);
param.Value().Set(KErrNotFound);
list->AppendL(param);
// The list can now be passed e.g. by calling Service Handler's
// ExecuteMenuCmdL() or ExecuteServiceCmdL().
// Pop and destroy the list when it is not needed anymore.
CleanupStack::PopAndDestroy(list);
一つのリストに、同じセマンティックidで複数のアイテムがあるかも知れません。
受け取ったアプリケーションは、CAiwGenericParamList の反復(iterator)メソッドを使って、リストのデータ・アイテムにアクセスします。
AIWフレームワークには、入力と出力のリストを作成するための便利なメソッドがあります。このリストを使うことで、コンシューマ・アプリケーションは、リストのヒープの割り当てと削除を行う必要はありません。唯一の制限は、入力と出力のリストそれぞれ一つずつのみリクエスト可能という点です。もし複数必要な場合、コンシューマ・アプリケーションは、自身でそれらを生成・削除しなければいけません。入力と出力リストを作成するメソッドは以下のように定義されています:
CAiwGenericParamList& CAiwServiceHandler::InParamListL();
CAiwGenericParamList& CaiwServiceHandler::OutParamListL();
プロバイダ特有のオブジェクトのジェネリック・パラメータ・リストの作成
コンシューマとプロバイダ間で、プロバイダ特有のクラスや構造体を転送する必要がある場合、ジェネリック・パラメータ・リストに追加する前に、それをTPtrC8 か TPckg を使ってシリアル化(直列化, serialize)する必要があります。このような種類のパラメータには、変数型id EVariantTypeDesC8 を使用します。AIWフレームワークは、ポインターを渡すことをサポートしていないことに注意してください。例題として、"Map and Navigation AIW プロバイダ"の文章を参照してください。


(no comments yet)