掲示板一覧   -   トピック一覧
   Enterprise Architect 全般
     staticメンバ変数の生成コードについて(C++)


フラット表示 前のトピック | 次のトピック
投稿者 トピック
tkouno
投稿日時: 2008-1-18 11:54
EA Administrator
投稿: 3939

Re: staticメンバ変数の生成コードについて(C++)

ざっと作成してみました。

以下、解説を含めて説明いたします。
今回のものが全ての場合に対応しているかどうかはわかりませんので
状況に応じて、さらに修正してご利用ください。

○基本方針

先ほどの返信にあるように、通常のクラスの定義の「外」に
あるので、単純に「Attribute」テンプレートに追加して
対応することはできません。
よって、Namespaceテンプレートから別途属性の定義を
確認するようなテンプレートを追加します。

○Namespace Body Implテンプレート

この内容を、以下のように修正します。(先頭3行はコメントです)
(2番目の行を追加します。)

%list="NamespaceImpl" @separator="\n\n\n"%
%list="Class__Static" @separator="\n"%
%list="ClassImpl" @separator="\n\n\n"%

○Class__Staticテンプレートの追加

独自処理のための、新規のテンプレートを追加します。
これは、画面左下にある「新規テンプレートの追加」ボタンを押して
「対象の種類」に「Class」を、「テンプレート名」の欄に「Static」と
入力してください。

左側のテンプレートの一覧の一番下に「Class__Static」という
テンプレートが追加されますので、それを選択して、以下の1行を
入力して保存してください。

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

このように、属性のための処理を追加する場合でも、直接属性の
テンプレートを作成して呼び出すことはできません。属性(や操作)は
クラスに所属するものですので、まずクラスのテンプレートを
追加しなければなりません。


○Attribute__Staticテンプレートの追加

次に、先ほどのClass__Staticテンプレートから呼ばれる
新しいテンプレートを作成します。
画面左下にある「新規テンプレートの追加」ボタンを押して
「対象の種類」に「Attribute」を、「テンプレート名」の欄に「Static」と
入力してください。

左側のテンプレートの一覧の下から2番目に「Attribute__Static」という
テンプレートが追加されますので、それを選択して、以下の内容を
入力して保存してください。


%if attStatic=="T"%
%PI=" "%
$ptr = %attContainment=="By Reference" ? "*" : ""%
%RESOLVE_QUALIFIED_TYPE("::", "int")%$ptr
%PI=""%
%className%::%attName%
%if attCollection == "T" and attContainerType != ""%
%attContainerType%
%endIf%
%if attInitial != ""%
= %attInitial%
%endIf%
;
%endIf%


先頭行のif文で判断し、staticの場合のみ処理を行います。
6行目でクラス名::属性名の出力を作成しています。
それ以外の部分のほとんどは、「Attribute Declaration」テンプレートからの
コピーです。


というような感じで、カスタマイズを行うことで
自由に出力することができます。

ぜひお試しください!
フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
   staticメンバ変数の生成コードについて(C++) 未登録ゲスト 2008-1-18 11:20
     Re: staticメンバ変数の生成コードについて(C++) tkouno 2008-1-18 11:26
     » Re: staticメンバ変数の生成コードについて(C++) tkouno 2008-1-18 11:54
         Re: staticメンバ変数の生成コードについて(C++) 未登録ゲスト 2008-1-18 13:35
           Re: staticメンバ変数の生成コードについて(C++) tkouno 2008-1-18 13:41