掲示板一覧   -   トピック一覧
   EA ソースコード生成・コード生成テンプレート
     想定外のソースコード生成


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

想定外のソースコード生成

○ご質問

ソースコード生成時に以下の現象がありました。
クラス図の記述に誤りがあったのか、EAの問題なのか判断が出来ずにいます。

1.Char配列型の属性に対して正常にソースが生成されない。
 char attribute[242]となって欲しいところ、char[242] attributeとなる。

2.パラメータをポインタ型としてソースを生成しても、ポインタ型で生成されない。
 言語はC++を使用しています。
 クラス要素は以下のような設定をしています。
 ---------------------------------------------------
 操作
  名前    write
  パラメータ writeData:writeData*
        (名前:writeData、型:writeData*)
  戻り値の型 int
  可視性   public
 ---------------------------------------------------

 上記設定でソースコードを生成すると
 int write(WriteData* writeData);となって欲しいところ、
 int write(WriteData writeData);となります。

3."new"が付く属性名の場合、ソースコードを生成すると、"-"が付加されてしまう。
 newOldAttributeとなって欲しいところ、new-OldAttributeとなる。

○回答

1.弊社では、C++で確認しましたが、ご要望のchar attribute[242]で
 生成されました。
 モデルへの設定方法は、こちら「クラス図でメンバ変数に配列を記述する方法」
 投稿がご参考になると思います。

 なお、現在、コード生成テンプレート(メインメニューから「設定」→
 「コード生成のテンプレート」)をカスタマイズしているということはありませんでしょうか?

 ご確認のほど、よろしくお願いいたします。


2.弊社では、2通りの方法で確認いたしましたが、いずれもご希望の出力がされました。

 1) 直接、型へポインタを設定
  パラメータダイアログの型欄に、直接ポインタを設定した場合、
  以下のような出力になりました。
  int write(WriteOutputData* writeOutputData);

 2) 種類欄とコード生成テンプレートを利用
  以下のようにコード生成テンプレートをカスタマイズした状態で、
  型欄はWriteOutputData、種類欄にはoutを設定した場合、
  1) と同様の出力になりました。

  [C++コード生成テンプレートカスタマイズ内容]
  (2009/10/5 具体的なカスタマイズ内容の記載が漏れていましたので、追記しました。)
  ParameterテンプレートおよびParameter Implテンプレートに対して、
  以下の追記をする必要があります。
  ---------------------------------------------------
  ・・
  %RESOLVE_QUALIFIED_TYPE("::", "int")%
  $COMMENT = "ここから↓"
  %if paramKind=="out" or paramKind=="inout"%
  *
  %endIf%
  $COMMENT = "ここまで↑"
  ・・
  ---------------------------------------------------   

3.ご指摘の現象を確認することができませんでした。
 newOldAttributeという名前の属性が、そのまま生成されました。
 こちらもコード生成テンプレートをカスタマイズされていないか、
 ご確認いただけますでしょうか?
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ