Changes between Initial Version and Version 1 of CDLref_namespace


Ignore:
Timestamp:
Jan 16, 2016, 10:01:23 PM (8 years ago)
Author:
okuma-top
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • CDLref_namespace

    v1 v1  
     1== ネームスペース==
     2
     3ネームスペースは、一般名前有効範囲を区切り、セルタイプ、シグニチャの名前衝突を防ぐために用いられます。
     4
     5【記述例】
     6{{{
     7namespace nNS {
     8   signature sSig {
     9      void func( void );
     10   };
     11   [active]
     12   celltype tCelltype {
     13      entry sSig  eEntry;
     14   };
     15};
     16
     17cell nNS::tCelltype Cell {
     18};
     19}}}
     20
     21ここで namespace はキーワードであり、nNS はネームスペース名です。'{', '}' に囲まれた中に、シグニチャ (signature)、セルタイプ (celltype) を記述します。
     22
     23慣習として、ネームスペース名は 'n' で始めます。
     24
     25同じネームスペース名を持つネームスペースを、繰り返し記述することができます。
     26
     27ネームスペースは、再帰的に設けることができます。
     28
     29【補足説明】ネームスペースは、セルタイプとシグニチャのみに用いる。セルは、リージョンの下に置く。名前衝突回避とともにセルのレイアウト制御を行う。
     30
     31【補足説明】以下のものも、ネームスペース下に置くことができない。
     32 * 構造体 (struct) タグ
     33 * 型定義 (typedef) された型名
     34 * 定数 (const)
     35 * 列挙型 (enum)
     36これらを TECS CDL でネームスペース下に置くことに技術的困難はないが、C 言語の生成コードにおいて短縮して記述する方法がなく、グローバル名を使用することになり利便性がないため。
     37
     38=== ネームスペース識別子 ===
     39
     40ネームスペース識別子は、ネームスペースに属するシグニチャやセルタイプを、異なるネームスペースから参照する際に用います。
     41シグニチャ名、セルタイプ名を指定する箇所で、ネームスペース識別子を用いることができます。
     42
     43リージョンは、ネームスペースと同様に名前有効範囲を区切ります。
     44従ってセル名を指定する箇所でも、ネームスペース識別子を用いることができます。
     45
     46【記述例】
     47{{{
     48   nNS::sSig
     49   nNS::tCelltype
     50}}}
     51
     52ネームスペース識別子は、一般名前有効範囲に属する物を参照するときに使用します。
     53ネームスペース識別子には、以下の3種類があります。
     54
     55{{{#!th
     56種類
     57}}}
     58||=  参照する対象   =||=  記述例  =||
     59|-----------------
     60{{{#!td
     61単一の識別子
     62}}}
     63{{{#!td
     64同じネームスペース、または親ネームスペースに存在する物を参照。
     65
     66同じネームスペースの物が優先されます。親ネームスペースにも存在しない場合、[[BR]]
     67更にその親ネームスペースを再帰的に探索していき、見つかった物を参照します。
     68}}}
     69{{{#!td
     70tCelltype [[BR]]
     71sSignature
     72Cell
     73}}}
     74|-----------------
     75{{{#!td
     76絶対パス指定
     77}}}
     78{{{#!td
     79ルートネームスペース (ルートリージョン) から指定して、物を参照。
     80}}}
     81{{{#!td
     82::nNS::tCelltype [[BR]]
     83::rRegion::rSubRegion::Cell
     84}}}
     85|-----------------
     86{{{#!td
     87相対パス指定
     88}}}
     89{{{#!td
     90入れ子の内側のネームスペースに存在する物、または親ネームスペースに存在する物を参照。
     91
     92'::' で区切られた最初の識別子を名前とするネームスペースが同一ネームスペースになければ、[[BR]]
     93親ネームペースを再帰的に探索します。
     94入れ子の内側へ向かって再帰的な探索は行われません。
     95}}}
     96{{{#!td
     97nNS::sSignature [[BR]]
     98nNS::nSubNS::tCelltype
     99}}}
     100|-----------------
     101
     102単一の識別子、および相対パス指定の先頭の識別子と一致するものがネームスペース内にないとき、上位のネームスペースから探索します。
     103
     104------
     105[TECS リファレンスマニュアル [wiki:  トップページ]]・
     106[TECS CDL リファレンスマニュアル [wiki:CDLref トップページ]・[wiki:CDLref_index 目次]]