<< 目次を表示 >> ページ位置: Enterprise Architectの拡張 > ソースコード生成のカスタマイズ > コード生成テンプレートフレームワーク > コード生成テンプレートの文法 > マクロ > 機能マクロ |
機能マクロはいろいろな要素の情報を編集したり、あるいは整形したりするのに便利なマクロです。それぞれの機能マクロは文字列を返します。
機能マクロの利用法には、2つの大きな方法があります。
機能マクロはパラメータをとることができます。パラメータは次のようにして機能マクロに渡されます。機能マクロを入れ子にできませんので、他の機能マクロの結果を渡す場合には、一度変数に保存し、その変数を引数として渡してください。
複数のパラメータを渡す場合には、カンマで区切って渡します。
機能マクロはすべて大文字で記述してください。パラメータは括弧で囲んで表記されます。
例: FUNCTION_NAME([param])
CONVERT_SCOPE(<umlScope>)
可視性のキーワードを生成するプログラム言語に対応した文字列に置換します。次の表は、<umlScope>の一覧とその処理の結果を示しています。CONVERT_SCOPEマクロはEAがサポートする言語でのみ利用できます。
言語 |
Package |
Public |
Private |
Protected |
C++ |
public |
public |
private |
protected |
C# |
internal |
public |
private |
protected |
Delphi |
protected |
public |
private |
protected |
Java |
|
public |
private |
protected |
PHP |
public |
public |
private |
protected |
VB |
Protected |
Public |
Private |
Protected |
VB .Net |
Friend |
Public |
Private |
Protected |
COLLECTION_CLASS(<language>)
現在の接続に該当するコレクションクラスを返します。
CSTYLE_COMMENT(<wrap_length>)
対象要素のノートを、C言語などで利用される /* と */ で挟んだ形で出力します。
DELPHI_PROPERTIES(<scope>, <separator>, <indent>)
Delphiのプロパティを生成します。
DELPHI_COMMENT(<wrap_length>)
対象要素のノートを、Delphiの形式で出力します。
EXEC_ADD_IN(<addin_name>, <function_name>, <prm_1>, ..., <prm_n>)
アドインを実行します。アドインからは文字列を戻すことができますので、アドインとして独自に処理した内容をソースコードに含めることができます。
<addin_name> と <function_name>で対象のアドインと呼び出されるメソッドを指定します。アドインに渡す値については、<prm_1> から <prm_n>で指定します。<addin_name>は、レジストリのキー名(アドインの管理ダイアログの一覧に表示される名前)です。
例: $result = %EXEC_ADD_IN("MyAddin","ProcessOperation",classGUID, opGUID)%
EXEC_ADD_INの実行時に呼ばれるメソッドは、2つの引数を持たなければなりません。最初の引数はEA.Repositoryであり、2番目は残りの引数を受け取るVariantの配列になります。戻り値の型定義はVariantになります。
例:Public Function ProcessOperation(Repository As EA.Repository, args As Variant) As Variant
FIND(<src>, <subString>)
srcからsubStringが最初に出現する位置を文字列で返します。見つからない場合には"-1"を返します。
GET_ALIGNMENT()
現在の出力内容のテキストをスペースやタブで置き換えた場合の文字列を返します。
JAVADOC_COMMENT(<wrap_length>)
対象要素のノートを、JavaDoc風の形式で出力します。
LEFT(<src>, <count>)
srcの文字列の最初のcount文字を取得します。
LENGTH(<src>)
srcの長さを返します。
MATH_ADD(<src>,<value>)
srcの文字列を数値とし、valueの文字列を数値として足した内容を文字列として返します。src, valueの値には、数値あるいは変数を指定します。
MATH_MULT(<src>,<value>)
srcの文字列を数値とし、valueの文字列を数値として掛けた内容を文字列として返します。
MATH_SUB(<src>,<value>)
srcの文字列を数値とし、valueの文字列を数値として引いた内容を文字列として返します。
上の3つのマクロの利用例:
上記のマクロの出力内容を確かめるために、以下のような内容を追加したとします。
a = 3 + 4 = $a
b = 10 - 3 = $b
c = 2 * 3 = $c
d = a + b = $d
e = b - c = $e
f = a * b = $f
g = a * 10 = $g
h = 10 * b = $h
この内容を含むコード生成テンプレートで生成した場合、生成される結果は以下のようになります。
a = 3 + 4 = 7
b = 10 - 3 = 7
c = 2 * 3 = 6
d = a + b = 14
e = b - c = 1
f = a * b = 49
g = a * 10 = 70
h = 10 * b = 70
MID(<src>,<start>)
MID(<src>,<start>,<count>)
srcの部分文字列を取得します。startの位置からcount文字取得します。countは省略できます。
PI(<option>, <value>, ...)
PIマクロの値をvalueに設定します。
<option>は、どの段階でこのPIマクロの変更を反映するかを指定します。有効な値は次の2つです。
1回の呼び出しで、2組の指定をできます。以下の内容はその例です。
%PI=" "%
%classAbstract ? "abstract"%
%if classTag:"macro" != ""%
%PI("I", "\n", "N", " ")%
%classTag:"macro"%
%endIf%
class
%className%
詳細はPIマクロのページをご覧ください。
PROCESS_END_OBJECT(<template_name>)
複数のクラスを、あるクラスの従属情報(属性・操作・パラメータ・列)に変換する場合に利用します。template_nameは、データを一時的に保存するための作業用テンプレートとして参照されます。
REMOVE_DUPLICATES(<source>, <separator>)
sourceがseparatorで区切られているとき、重複している項目や空白の項目を削除します。
REPLACE(<string>, <old>, <new>)
stringに含まれる、すべてのoldをnewで置換します。
RESOLVE_OP_NAME()
同名の操作が複数のインターフェースから継承されている場合に衝突を解決します。
RESOLVE_QUALIFIED_TYPE()
RESOLVE_QUALIFIED_TYPE(<separator>)
RESOLVE_QUALIFIED_TYPE(<separator>, <default>)
名前空間の情報を含んだ型を生成します。現在対象となっている属性・リンク属性・親要素・操作の戻り値・パラメータに対して生成されます。「.」以外の文字で区切る場合や、既定値を指定する場合にも対応できます。
RIGHT(<src>, <count>)
srcの文字列の最後からcount文字を取得します。
TO_LOWER(<string>)
stringをすべて小文字に変換します。
TO_UPPER(<string>)
stringをすべて大文字に変換します。
TRIM(<string>)
TRIM(<string>, <trimChars>)
stringに含まれる前後の空白文字を削除します。もし、trimCharsが指定されている場合には、trimCharsで指定されたすべての文字について、文字列の前後にある文字を削除します。
TRIM_LEFT(<string>)
TRIM_LEFT(<string>, <trimChars>)
stringで指定された文字列の先頭にある空白文字を削除します。
TRIM_RIGHT(<string>)
TRIM_RIGHT(<string>, <trimChars>)
stringで指定された文字列の末尾にある空白文字を削除します。
VB_COMMENT(<wrap_length>)
対象要素のノートを、Visual Basic形式で出力します。
WRAP_COMMENT(<comment>, <wrap_length>, <indent>, <start_string>)
commentで与えられた文字列を適切な長さで折り返します。それぞれの行の長さはwrap_lengthで指定された長さになります。また、indentで与えられた文字数だけインデント処理を行い、start_stringで指定された文字を各行の先頭に追加します。
例: $behavior = %WRAP_COMMENT(opBehavior, "40", " ", "//")%
注意: |
wrap_lengthの値を引数として渡す場合には必ず文字列として与えてください。内部的には数値として扱われます。 |
WRAP_LINES(<text>, <wrap_length>, <start_string>[, <end_string])
textで与えられた文字列を適切な長さで折り返します。それぞれの行の長さはwrap_lengthで指定された長さになります。また、start_stringで指定された文字を各行の先頭に追加します。end_stringで指定された文字がある場合は、各行の末尾に追加します。
XML_COMMENT(<wrap_length>)
対象要素のノートを、Visual C#等の言語で利用されるXMLドキュメントコメントの形式で出力します。
参照: