掲示板一覧   -   トピック一覧
   EA ソースコード生成・コード生成テンプレート
     fileImportsの内容を分けて生成したい


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
sugimoto
投稿日時: 2010-9-17 15:19
EA Administrator
投稿: 1895

fileImportsの内容を分けて生成したい

○ご質問

fileImportsマクロには、以下が含まれていると認識しています。

(1)ソースコードの生成ダイアログで入力した"インポートおよびヘッダ"
  エディットボックスの内容を出力する機能
(2)関連線で必要と判断されたターゲットクラスのインポート宣言出力機能

(1)はそのままヘッダファイルに出力することはできますか?

(2)だけ一部をソースファイルに出力するようカスタマイズしたいのですが、
そのようなことは可能でしょうか?

classImports以外の関連線から自動的に生成される#include文を、
ステレオタイプによってヘッダファイルに出力するか、ソースファイルに
出力するかを制御したいです。

このステレオタイプでの判定が意図した通りにできませんでした。


また、ステレオタイプは接続のプロパティダイアログで指定するものを想定しています。
ImportSectionテンプレートにて、%list="Import" xxx and connectorStereotype== "xxx"%
のような指定は可能でしょうか?


○回答

(1)につきましては、上段の情報になりますでしょうか?
その場合は、classImportが該当しますので、Import Sectionテンプレートにおいて、
fileImportsの箇所をclassImportsに置き換えることになります。

(2)につきましては、文法的にAND条件は利用できますが、ImportSectionから
直接接続の情報は参照できません。

このため、connectorStereotypeの判定は無視されています。

コード生成テンプレートでは、どこからでもすべてのフィールド置換マクロを
利用できるわけではなく、利用できる範囲が決まっています。

このことはセミナーなどでも紹介しています。
https://www.sparxsystems.jp/seminar/EACodeGenerate.htm
(上記Webページ内のPDFファイルにも書かれています。)

今回のように接続の情報で判断し、接続先のクラスの名前を判断したいという場合は、
ImportSectionテンプレートは使用せず、生成条件・生成情報を1からすべて
定義する必要があります。

まず、Fileテンプレートで、ImportSectionを削除し、自分で新規に作成した
クラス用テンプレート(名前は任意です)を呼び出します。

クラス用に新規作成したテンプレートでは、接続用に新規追加したテンプレート
(名前は任意です)を呼び出します。

接続用に新規追加したテンプレートでは、接続のタイプやステレオタイプを
チェックし、該当すれば接続先のクラス名についてinclude文を生成するようにします。


特別な条件で接続に関する情報を生成したい場合は、
上記のように1から作成する必要があります。

○ご報告

回答の内容で、ご希望の出力ができたとのご報告を頂きました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ