機能マクロ

<< 目次を表示 >>

ページ位置:  Enterprise Architectの拡張(SDK) > コード生成テンプレートフレームワーク > コード生成テンプレートフレームワーク > コード生成テンプレートの文法 > マクロ >

機能マクロ

機能マクロはいろいろな要素の情報を編集したり、あるいは整形したりするのに便利なマクロです。それぞれの機能マクロは文字列を返します。

 

機能マクロの利用法には、2つの大きな方法があります。

 

機能マクロはパラメータをとることができます。パラメータは次のようにして機能マクロに渡されます。機能マクロを入れ子にすることはできませんので、他の機能マクロの結果を渡す場合には、一度変数に保存し、その変数を引数として渡してください。

 

複数のパラメータを渡す場合には、カンマで区切って渡します。

 

Function macros are named according to the All-Caps style, as in:

例: FUNCTION_NAME([param]).

 

利用できる機能マクロは以下の表のとおりです。パラメータは括弧で囲んで表記されます。

例: FUNCTION_NAME([param]).

 

注意:

機能マクロはすべて大文字で記述してください。

例: %CONVERT_SCOPE(opScope)%

 

 

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ドキュメントコメントの形式で出力します。

 

 

参照: