UML から C++ への変換のシステム引数を指定するには、以下のようにします。
| アクション | システム引数 | デフォルトの変換の振る舞い |
|---|---|---|
| 次の順序で属性および操作を表示: Public, Protected, Private | -DVISIBILITY_ORDER=true | このシステム引数を指定しないと、生成されたコードでは、属性と操作が次の順序でリストされます: Private, Protected, Public。 |
| #include ディレクティブの相対パス情報を除外 | -DEXCLUDE_PATH_FOR_INCLUDES=true | このシステム引数を指定しないと、変換により、相対パス情報を指定する #include ディレクティブが生成されます。 |
| クラス・テンプレートを型パラメーターを使用して宣言するときに typename キーワードを生成 (例えば、template <typename identifier> class_declaration) | -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;
}
}; //end class 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++ ボディ・ファイルが生成されます。 |