Changes between Initial Version and Version 1 of IMPref_foreach


Ignore:
Timestamp:
Jan 16, 2016, 9:11:03 PM (8 years ago)
Author:
okuma-top
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • IMPref_foreach

    v1 v1  
     1== FOREACH_CELL マクロ ==
     2
     3セルタイプコードにおいて、そのセルタイプに属するすべてのセルの変数を操作を行うために FOREACH_CELL マクロを使用できます。
     4主として、初期化の際に用います。
     5
     6=== FOREACH_CELL マクロの使用 ===
     7
     8すべてのセルに対する操作を行うには、FOREACH_CELL マクロで始め END_FOR_EACHCELL で終わるループにより実現できます。
     9以下にコードの例を示します。
     10
     11{{{
     12  #include "tCelltype_tecsgen.h"
     13
     14  ...
     15
     16  func()
     17  {
     18    /* tCelltype のすべてのセルについて初期値を作業変数に移す */
     19
     20    CELLCB  *p_cellcb;          /* 短縮形で属性、内部変数を参照するために p_cellcb とします */
     21    int      i;                 /* ループ変数を用意する必要があります.名前は適当で構いません */
     22
     23    FOREACH_CELL(i,p_cellcb)    /* FOREACH_CELL でループの開始を宣言します */
     24      VAR_a0 = ATTR_a;              /* 短縮形 VAR_a0, ATTR_a で変数、属性参照できます */
     25      VAR_b0 = ATTR_b;
     26    END_FOREACH_CELL
     27  }
     28}}}
     29
     30=== FOREACH_CELL マクロの多重使用 ===
     31
     32FOREACH_CELL マクロを多重ループで用いることができます。
     33この場合、内側のループ内では外側のループのセルの属性、変数には直接アクセスすることはできません。
     34外側のループの属性、変数は別の自動変数に写し取ることで、内側のループで参照できます。
     35
     36{{{
     37  #include "tCelltype_tecsgen.h"
     38
     39  ...
     40
     41  func()
     42  {
     43    CELLCB  *p_cellcb;          /* 短縮形で属性参照するために p_cellcb としました */
     44    int      i;
     45
     46    FOREACH_CELL(i,p_cellcb)
     47      CELLCB   *p;              /* p としたので短縮形で属性参照できません */
     48      int      j;               /* 内側のループ変数を j とします */
     49      FOREACH_CELL(j,p)
     50        /* 外側のループには短縮形が使えるが、内側のループはセルタイプのグローバル名を伴うマクロを使用 */
     51        if ( ATTR_a == tCelltype_ATTR_a( p ) ) {
     52           ...
     53        }
     54      END_FOREACH_CELL
     55    END_FOREACH_CELL
     56  }
     57}}}
     58
     59
     60------------
     61[TECS リファレンスマニュアル [wiki: トップ]]
     62[TECS コンポーネント実装リファレンスマニュアル [wiki:IMPref トップ]・[wiki:IMPref_index 目次]]]