UML から C++ への変換のシステム引数を指定するには、以下のようにします。
| アクション | システム引数 | デフォルトの変換動作 |
|---|---|---|
| Public、Protected、Private の順に属性および操作を表示する。 | -DVISIBILITY_ORDER=true | このシステム引数を指定しなかった場合、生成されたコードでは、Private、Protected、Public の順に属性および操作がリストされます。 |
| #include ディレクティブで相対パス情報を除外する。 | -DEXCLUDE_PATH_FOR_INCLUDES=true | このシステム引数を指定しなかった場合、変換では、相対パス情報を指定した #include ディレクティブが生成されます。 |
| タイプ・パラメーターを持つクラス・テンプレート (例えば、template <typename identifier> class_declaration など) の宣言時に、typename キーワードを生成する。 | -DTYPENAME_TEMPLATES=true | このシステム引数を指定しなかった場合、クラス型のテンプレート・パラメーターを持つテンプレート・クラスが含まれているモデルに対して変換を実行すると、生成された宣言に class キーワードが組み込まれます。
以下の例で考えてみます。 ![]() デフォルトでは、変換によって TemplateClass1.h に以下の宣言が生成されます。
template <class Parameter1>
class Class1
{
//Class1 のセクションの開始
//TODO: 保持する属性を追加します
//Class1 のセクションの終了
public:
//@uml.annotationsderived_abstraction="platform:/resource/Miscellaneous%20Models/source.emx#_hFn-0GaLEdyC-b6mj80KQA"
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Operation1()
{
//TODO 自動生成されたメソッド・スタブ
return 0;
}
}; //クラス Class1 の終了
</class>
-DTYPENAME_TEMPLATES=true を指定すると、変換によって TemplateClass1.h に以下の宣言が生成されます。
template <typename Parameter1>
class Class1
{
//Class1 のセクションの開始
//TODO: 保持する属性を追加します
//Class1 のセクションの終了
public:
//@uml.annotationsderived_abstraction="platform:/resource/Miscellaneous%20Models/source.emx#_hFn-0GaLEdyC-b6mj80KQA"
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Operation1()
{
//TODO 自動生成されたメソッド・スタブ
return 0;
}
}; //クラス Class1 の終了</typename>
|
| ヘッダー・ファイルにインライン関数コードを生成する。 | -DINLINE_HEADER=true | このシステム引数を指定しなかった場合、変換では、C++ ボディ・ファイルに、インライン関数のコードが生成されます。 |
| C++ ボディ・ファイルの代替ファイル名拡張子を指定する。 | -DBODY_FILE_EXTENSION=.<file name extension> 例えば、.cc というファイル名拡張子を持つ C++ ボディ・ファイルを生成するには、-DBODY_FILE_EXTENSION=.cc と指定します。
注: ソース・モデル要素に «cpp_properties» ステレオタイプを適用した場合は、bodyFileExtension プロパティーの値によって、eclipse.ini ファイルに指定した値がオーバーライドされます。
|
このシステム引数を指定しなかった場合、変換では、.cpp というファイル名拡張子を持つ C++ ボディ・ファイルが生成されます。 |