UML から C++ への変換のシステム引数の設定

UML から C++ への変換のシステム引数は、eclipse.ini ファイルに指定することができます。 このファイルでは、変換構成ファイルに含まれていない変換動作を指定できます。 例えば、生成される属性および操作の代替ファイル名拡張子を指定したり、 それらの属性および操作の表示順序を可視性に基づいて変更したりすることができます。

UML から C++ への変換のシステム引数を指定するには、以下のようにします。

  1. eclipse.ini ファイルをテキスト・エディターで開きます。 eclipse.ini ファイルは、製品のインストール時にインストール・ルートとして指定したディレクトリーの中にあります。
  2. このファイルの最後に、変換動作の設定を追加します。 各設定は、ファイル内の他の既存ワークベンチ引数の後に、単独行で指定してください。 以下の表は、構成可能な動作、および eclipse.ini ファイルに追加しなければならない引数をリストしたものです。
    アクション システム引数 デフォルトの変換動作
    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 キーワードが組み込まれます。

    以下の例で考えてみます。

     このイメージは、T1 というクラス型のテンプレート・パラメーターを持つ、TemplateClass1 という UML テンプレート・クラスを示しています。

    デフォルトでは、変換によって 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++ ボディ・ファイルが生成されます。
  3. 「ファイル」 > 「保存」をクリックします。
  4. Eclipse を再起動して、-clean オプションを指定します。

フィードバック