掲示板一覧   -   トピック一覧
   EA ソースコード生成・コード生成テンプレート
     名前空間がある場合の前方参照


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
tkouno
投稿日時: 2010-4-8 10:52
EA Administrator
投稿: 3939

名前空間がある場合の前方参照

○ご質問

以下のサポートフォーラムの記事を参考にして
前方参照の出力を作成しました。

https://www.sparxsystems.jp/forum/modules/xhnewbb/viewtopic.php?topic_id=1460&viewmode=flat

ただ、名前空間の出力を有効にしたときに
文法エラーになってしまいます。

対処方法はありますか?

○回答

ご質問の件につきましては、コード生成テンプレートを
カスタマイズすることで対応可能です。

最低限の結果を出すまでの手順をお知らせしますので、この内容を元に
ご希望の結果になるようにカスタマイズしてみてください。

1. サポートフォーラムにある記事のXMLファイルを読み込み、前方宣言を出力するようにします。
2. 左下にある「新規テンプレートの追加」ボタンを押し、テンプレートを追加します。
  種類は「Namespace」、テンプレート名は「ForwardDeclare」としてください。
3. このテンプレートの中身は、以下のようにします。

-----ここから
%if packagePath == "" or genOptCPPGenNamespace != "T"%
%endTemplate%

namespace %packageName%
{
%list="Namespace__ForwardDeclare" @indent="\t"%
%ImportSection%
}
-----ここまで

この内容は、既存のNamespaceテンプレートの内容からコピーしたものです。
ただし、Namespaceの処理の部分であるlistマクロで、自分自身を
呼ぶようにしています。また、クラスの処理の代わりに、前方宣言を
処理している%ImportSection%マクロを呼んでいます。

4. 最後に、このテンプレートを呼ぶように、Fileテンプレートを
  カスタマイズします。今まで%ImportSection%を呼んでいる部分で、
  代わりに今回作成したテンプレートを呼ぶようにします。

%list="Namespace__ForwardDeclare" @separator="\n\n"%

以上で、ご希望の結果になります。改行の数やタブの制御などで
不完全な部分がありますので、このあたりはぜひさらにカスタマイズして
ご要望に沿う形にしてみてください。

ぜひお試しください。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ