ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

BREWで画面間メモリ一括管理(その3-各画面での設定・取得)

2006-10-12 14:31:01 | ケータイ

 シリーズ「BREWで画面間メモリ一括管理」(いわゆるBREW版カオル姫方式)の第三回目、今日は、各画面における、共通領域への値設定と取得の方法です。




■前回のまとめ
 その前に前回の内容をまとめておくと、
・共通領域の連想配列を保持しておくところ
   IKHMap *pMap
 を、アプリの構造体に用意する

・アプリ_initAppData(はじめに来るところ)で、
 上記共通領域の連想配列pMapを、
  IKHMAP_Create(pMe->pIShell,pMe->pIDisplay);
 で作成する

・アプリ_freeAppData(最後に来るところ)で、
 上記共通領域の連想配列pMapを、
  IKHMAP_Release
 で開放する。そうすると、連想配列の各要素も、
 解放される

*連想配列:あるキーを入れたら、それに対する値が帰ってくる配列
 perlでは、配列として存在するが、Javaでは、同じことをハッシュマップ
 (またはハッシュテーブル)で行う。Cではないので、IKHMapとして、
 今回、作っている。




■各画面での値の設定
 今回、gamen1でやっているので、そこで説明します。

●各画面の構造体(gamen1.h)
 これは、どっちでもいいんですけど、画面の構造体に、

// 共通領域
IKHMap *pMap;

 というかたちで、全体アプリの構造体の値を置いとけるところを
作っておきます。

●画面の初期化(gamen1_InitAppData)
 上記領域をとった場合、

// 共通領域を設定
pMe->pMap = poya->pMap;

 っていうかたちで、アプリ全体領域の共通領域
(ここではpoya->pMap)の”ポインタを”pMe->pMapに
セットします(つまり、実体は、アプリ全体領域の共通領域が
さしているところと同じです)

●値のセット
 今回は、gamen1_doJob2でやっています。

 IKHMAP_StrPut(pMe->pMap,"sei_ritu",sei_ritu);

 のように、IKHMAP_StrPutという関数を使います。
 引数は
  第一引数=共通領域のポインタ
  第二引数=キーワード
  第三引数=値の文字列
 です(この関数は、値が文字列のケースしか使えません)

 おなじキーワードがすでにあれば、そいつは削除して、
新規に、この値を設定します。
 なお、値の領域は、関数内で取得し、その後、引数の
「値の文字列」の内容をコピーします。
 つまり、引数の値の文字列に対しては、なにもしないので、
この引数のメモリー解放は、ユーザー側でやってください。

●注意
 pMe->pMapは、領域を取っているわけでないので、
gamen1_FreeAppDataで領域を開放「しない」でください。

なお、上記例のgamen1.cは、ここにあります。



■値の受け取り
 
 gamen2.cのgamen2_InitAppDataでやっています。

  username = (char *)IKHMAP_Get(poya->pMap,"username");

 のように、値をIKHMAP_Get(で取得します。
 引数は
  第一引数=共通領域のポインタ
  第二引数=キーワード
 です。返り値が結果になります(NULLは”設定されていない”の意味)

 なお、返り値は、配列の値のポインタそのものを返します。
 なので、勝手に解放(FREEIF)とか、しないでください。
 また、値を書き換えると、それ以降、ずっと、そのキーワードの値は、
代わってしまうので、書き換えないでください。
(キーワードの値を変えたい場合は、IKHMAP_StrPutしてください)

 なお、このように、初期化でしか使わない場合は、画面の構造体に
共通領域のポインタを取らなくてもいいです(統一させるのであれば、
とってもいい)。

 また、要素がいらなくなったら、IKHMap_Removeをすれば、解放
されます。勝手にFREEIFしないでください。
 ただし、もし、解放しなくても、プログラムが終了するとき、
または、同じキーワードで新しい値が設定される(=更新する)ときに、
値は解放されます。




と、こんな感じです。
これで、利用できるはずです。

次回は、具体的にIKHMapの中身について書きます
(なので、ただ、この関数を使う分には、今日までの範囲でできるはず)
この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« AJAXはVIEW、PHPはC... | トップ | Javaの画面表示-その3:画... »
最新の画像もっと見る

ケータイ」カテゴリの最新記事