掲示板一覧 - トピック一覧 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という名前の属性が、そのまま生成されました。 こちらもコード生成テンプレートをカスタマイズされていないか、 ご確認いただけますでしょうか? |
| フラット表示 | 前のトピック | 次のトピック |
| 題名 | 投稿者 | 日時 |
|---|---|---|
| » |
sugimoto | 2008-12-18 15:03 |




