Changes between Initial Version and Version 1 of CDLref_composite


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

--

Legend:

Unmodified
Added
Removed
Modified
  • CDLref_composite

    v1 v1  
     1= 複合セルタイプ記述 =
     2
     3複合セルタイプは、1つ以上のセルを組合わせて新しいセルタイプを定義するものです。
     4複合セルタイプは、複数のセルを組合わせる目的以外に、属性の初期値を与えたり、固定結合させるのに用いることもできます。
     5
     6【記述例】
     7
     8  {{{
     9[singleton]                             // 複合セルタイプの指定子
     10composite tCompositeCelltype {          // composite キーワードと複合セルタイプ名
     11    entry sSignature eEntry;            // entry  キーワード、対応付けられたシグニチャ名、受け口名
     12    call  sSignature cCall;             // call  キーワード、対応付けられたシグニチャ名、呼び口名
     13    attr {                              // 属性
     14        int32_t val = 10;
     15    };
     16
     17    // 内部セル
     18    cell tCelltype Cell1 {
     19        cCellCall = Cell2.eEntry;       // 内部セルへの結合
     20        val = composite.val;            // 属性のエクスポート
     21    };
     22    cell tCelltype Cell2 {
     23        cCall => composite.cCall;       // 呼び口のエクスポート
     24    };
     25    composite.eEntry => cell2.eEntry;   // 受け口のエクスポート
     26
     27};
     28  }}}
     29
     30複合セルタイプは、セルタイプと同様に、呼び口、受け口、属性、内部セルを持ちます。
     31複合セルタイプに組み入れられるセルを「内部セル」と呼びます。
     32
     33複合セルタイプに属するセルの生成は、複合セルタイプの内部セルのコピーが作成されるとともに、呼び口の結合先や、属性の初期値が整えられます。
     34
     35== 複合セルタイプの指定子 ==
     36
     37=== active 指定子 ===
     38
     39active 指定子は、少なくとも一つの内部セルのセルタイプがアクティブである場合、指定する必要があります。
     40
     41=== singleton 指定子 ===
     42
     43singleton 指定子は、少なくとも一つの内部セルのセルタイプがシングルトンである場合、指定する必要があります。
     44
     45singleton 指定子は、内部セルのセルタイプにシングルトンのものがない場合でも指定できます。
     46この場合、複合セルタイプのセルは、1つだけ定義することができます。
     47
     48== 受け口 ==
     49
     50複合セルタイプの受け口は、内部セルの呼び口を複合セルタイプの受け口としてエクスポートするものです。
     51受け口配列とすることもできます。
     52
     53== 受け口の指定子 ==
     54
     55=== allocator 指定子 ===
     56
     57allocator 指定子は、リレーアロケータまたは内部アロケータを指定するものです。
     58
     59==== リレーアロケータの指定 ====
     60
     61【記述例】
     62{{{
     63composite tCompRelayAlloc {
     64        [allocator( func.a    <= cCallExt.func.a,
     65                                func2.buf <= cCallExt.func2.buf )]
     66        entry sSig eEntExt;
     67        call sSig cCallExt;
     68
     69        cell tRelay Cell1 {
     70                cCall => composite.cCallExt;
     71        };
     72
     73        composite.eEntExt => Cell1.eEnt;
     74};
     75}}}
     76
     77T.B.W.
     78
     79==== 内部アロケータの指定 ====
     80
     81【記述例】
     82{{{
     83composite tCompAlloc {
     84        entry sAlloc eAlloc;
     85        [allocator(
     86                func.a=eAlloc,
     87                func2.buf=eAlloc)]
     88        entry sSig  eEntExt;
     89        attr {
     90                int32_t  num;
     91        };
     92
     93        [allocator(
     94                eEnt.func.a=Alloc.eA,
     95                eEnt.func2.buf=Alloc.eA)]
     96        cell tCt1 Cell1 {
     97                num = composite.num;
     98        };
     99
     100        cell tAlloc Alloc{
     101                num = composite.num;
     102        };
     103
     104        cell tAlloc Alloc2{
     105                num = composite.num;
     106        };
     107
     108        composite.eEntExt => Cell1.eEnt;
     109        composite.eAlloc  => Alloc.eA;
     110};
     111}}}
     112
     113T.B.W.
     114
     115=== 使用しない指定子 ===
     116
     117以下の指定子は、複合セルタイプの受け口では指定しません。
     118
     119 * inline
     120
     121inline 指定子は、セルタイプの実装において必要になるもので、セルタイプの利用者にとって、必要な情報ではありません。
     122
     123=== 固定結合 ===
     124
     125複合セルタイプにおいても、セルタイプ同様に固定結合を指定できます。
     126
     127内部セルのセルタイプにおいても固定結合が指定されている場合、複合セルタイプでしてされた固定結合と内部セルのセルタイプにおいて指定された固定結合の両方とも結合されます。
     128
     129== 呼び口 ==
     130
     131複合セルタイプの呼び口は、内部セルの呼び口を複合セルタイプの受け口としてエクスポートするものです。
     132呼び口配列とすることもできます。
     133
     134== 呼び口の指定子 ==
     135
     136=== optional 指定子 ===
     137
     138optional 指定子は、内部セルのセルタイプにおいて optional と指定された受け口をエクスポートする場合に指定します。
     139
     140== 属性 ==
     141
     142複合セルタイプの属性は、内部セルの属性をエクスポートするものです。
     143
     144複合セルタイプの属性において初期値を与えることができます。
     145この場合、内部セルの属するセルタイプの属性において指定された初期値を上書きします。
     146
     147=== C_EXP の名前置換 ===
     148
     149composite における名前置換は、特別な規則が適用されます。
     150composite の attr に現れる C_EXP における $id$, $ct$, $cell$ の名前置換では、複合セルタイプの名前、複合セルの名前に置換されます。
     151他の名前置換は、複合セルタイプの内部セルが展開されてコピーされたセルの名前によって置換されます。
     152
     153以下に、複合セルタイプにおける名前置換の例を示します。
     154次のような TECS CDL 記述があるものとします。
     155
     156【記述例】
     157{{{
     158  composite tComposite {
     159    attr {
     160      int32_t  a = C_EXP( "A_$id$" );
     161    };
     162    cell tCelltype Cell1 {
     163      a = composite.a;
     164      b = C_EXP( "B_$id$" );
     165    };
     166    cell tCelltype2 Cell2 {
     167      a = composite.a;
     168      c = C_EXP( "C_$id$" );
     169   };
     170  };
     171
     172  cell tComposite CompositeCell {
     173  };
     174}}}
     175
     176CompositeCell における、名前置換の結果は A_$id$ は "A_CompositeCell" に、B_$id$ は "B_CompositeCell_Cell" に、C_$id$ は "C_Composite_Cell2" となります。
     177属性 a は Cell1, Cell2 ともに、同じ初期値を持つことになります。
     178
     179【仕様決定の理由】この仕様は、タスクとタスク例外を別のセルとして生成し、それらを composite で一つのセルにまとめる際に、タスクの ID の名前を一致させるために導入された(他の用途でも使用してもよい)
     180
     181
     182== 属性の指定子 ==
     183
     184=== size_is 指定子 ===
     185
     186size_is 指定子は、エクスポートする属性の、元のセルタイプ定義において指定されている場合に指定します。
     187
     188=== 使用しない指定子 ===
     189
     190以下の指定子は、複合セルタイプの属性では指定しません。
     191
     192 * omit
     193
     194omit 指定子は、セルタイプの実装において必要になるもので、セルタイプの利用者にとって、必要な情報ではありません。
     195
     196== 内部セル ==
     197
     198内部セルは、複合セルタイプを構成するセルです。
     199複合セルタイプは、1個以上の内部セルを持ちます。
     200
     201== 呼び口のエクスポート ==
     202
     203内部セルの呼び口を複合セルタイプの呼び口としてエクスポートできます。
     204内部セル内に記述します。
     205
     206エクスポートするものが、受け口配列の場合、配列全体をエクスポートする必要があります。
     207特定の添数のみエクスポートすることはできません。
     208
     209== 受け口のエクスポート ==
     210
     211内部セルの受け口を複合セルタイプの受け口としてエクスポートできます。
     212内部セルの外側に記述します。
     213
     214エクスポートするものが、受け口配列の場合、配列全体をエクスポートする必要があります。
     215特定の添数のみエクスポートすることはできません。
     216
     217== 属性のエクスポート ==
     218
     219内部セルの属性を複合セルタイプの属性としてエクスポートできます。
     220内部セル内に記述します。
     221
     222== 内部セルの指定子 ==
     223
     224=== allocator 指定子 ===
     225
     226内部セルの allocator 指定子は、セル記述の allocator 指定子と同様です。
     227この場合のアロケータは、内部セルです。
     228
     229== 使用しない指定子 ==
     230
     231以下の指定子は、複合セルタイプでは指定する必要がありません。
     232
     233 * omit
     234 * inline
     235
     236これらの指定子は、セルタイプの実装において必要になるもので、セルタイプの利用者にとって、必要な情報ではありません。
     237
     238
     239------
     240[TECS リファレンスマニュアル [wiki:  トップページ]]・
     241[TECS CDL リファレンスマニュアル [wiki:CDLref トップページ]・[wiki:CDLref_index 目次]]