wiki:CDLref_namespace

ネームスペース

ネームスペースは、一般名前有効範囲を区切り、セルタイプ、シグニチャの名前衝突を防ぐために用いられます。

【記述例】

namespace nNS {
   signature sSig {
      void func( void );
   };
   [active]
   celltype tCelltype {
      entry sSig  eEntry;
   };
};

cell nNS::tCelltype Cell {
};

ここで namespace はキーワードであり、nNS はネームスペース名です。'{', '}' に囲まれた中に、シグニチャ (signature)、セルタイプ (celltype) を記述します。

慣習として、ネームスペース名は 'n' で始めます。

同じネームスペース名を持つネームスペースを、繰り返し記述することができます。

ネームスペースは、再帰的に設けることができます。

【補足説明】ネームスペースは、セルタイプとシグニチャのみに用いる。セルは、リージョンの下に置く。名前衝突回避とともにセルのレイアウト制御を行う。

【補足説明】以下のものも、ネームスペース下に置くことができない。

  • 構造体 (struct) タグ
  • 型定義 (typedef) された型名
  • 定数 (const)
  • 列挙型 (enum)

これらを TECS CDL でネームスペース下に置くことに技術的困難はないが、C 言語の生成コードにおいて短縮して記述する方法がなく、グローバル名を使用することになり利便性がないため。

ネームスペース識別子

ネームスペース識別子は、ネームスペースに属するシグニチャやセルタイプを、異なるネームスペースから参照する際に用います。 シグニチャ名、セルタイプ名を指定する箇所で、ネームスペース識別子を用いることができます。

リージョンは、ネームスペースと同様に名前有効範囲を区切ります。 従ってセル名を指定する箇所でも、ネームスペース識別子を用いることができます。

【記述例】

   nNS::sSig
   nNS::tCelltype

ネームスペース識別子は、一般名前有効範囲に属する物を参照するときに使用します。 ネームスペース識別子には、以下の3種類があります。

種類

参照する対象 記述例

単一の識別子

同じネームスペース、または親ネームスペースに存在する物を参照。

同じネームスペースの物が優先されます。親ネームスペースにも存在しない場合、
更にその親ネームスペースを再帰的に探索していき、見つかった物を参照します。

tCelltype
sSignature Cell

絶対パス指定

ルートネームスペース (ルートリージョン) から指定して、物を参照。

::nNS::tCelltype
::rRegion::rSubRegion::Cell

相対パス指定

入れ子の内側のネームスペースに存在する物、または親ネームスペースに存在する物を参照。

'::' で区切られた最初の識別子を名前とするネームスペースが同一ネームスペースになければ、
親ネームペースを再帰的に探索します。 入れ子の内側へ向かって再帰的な探索は行われません。

nNS::sSignature
nNS::nSubNS::tCelltype

単一の識別子、および相対パス指定の先頭の識別子と一致するものがネームスペース内にないとき、上位のネームスペースから探索します。


[TECS リファレンスマニュアル トップページ]・ [TECS CDL リファレンスマニュアル トップページ目次]

Last modified 8 years ago Last modified on Jan 16, 2016, 10:01:23 PM
Note: See TracWiki for help on using the wiki.