掲示板一覧 - トピック一覧 EA ソースコード生成・コード生成テンプレート C言語でのインナークラス(構造体)のコード生成方法は? |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | トピック |
---|---|
sugimoto | 投稿日時: 2010-7-15 14:15 |
EA Administrator 投稿: 1992 |
C言語でのインナークラス(構造体)のコード生成方法は?○ご質問
C言語で以下のような構造体をクラスのインナークラスとしてコード生成する にはどうすればよいのでしょうか? ・sample.h -------------------------- typedef struct Hoge { int x; } HOGE; HOGE hoge getHoge() void setHost(HOGE* hoge); -------------------------- struct Hogeは、sampleクラスのインナークラスとして定義すればよいことは 分かりますが、困っていることが2つあります。 (1) コード生成テンプレートで、"InnerClass"はどのテンプレートに定義されているのでしょうか? C言語のコード生成テンプレートの、"Class Body"には以下の記述があります。 $pubFeatures2 = %list="InnerClass" @separator="\n\n" classScope=="Public" or classScope=="Package"% + "\n\n" ここで、"InnerClass"とありますが、InnerClassが左ペインのテンプレート一覧にありません。 どのテンプレートコードを追いかければよいのでしょうか? ※そもそも、テンプレートで"%ClassBody%"とあっても、左ペインには "Class Body"と名前が違っており(空白があり)、コードからどのテンプレートを 追いかければよいのか、対応関係がいまいち分かりません。 (2)構造体を定義するとともに、typedef宣言したいのですが、 標準機能でサポートされていますでしょうか? 以下のように、struct Hogeを、HOGEと定義したいです。 1: typedef struct Hoge 2: { 3: int x; 4: } HOGE; 左ペインのステレオタイプの上書きにある、structテンプレートを 修正すればいけそうな感じがするのですが、typedef宣言をどうやって 入れればよいか分かりません。 ○回答 (1)InnerClassにつきましてはヘルプ「制御マクロ」に記載がありますように、 Classなどのテンプレートが呼ばれます。 また、テンプレートを呼ぶ際には、スペースなしで呼びます。 このことは、ヘルプに追記いたします。 (2)typedef宣言につきましては、ヘルプ「Cの追加情報」にありますように、 タグ付き値に「typedef」を設定してください。値は「true」と記述してください。 また、HOGEの部分ですが、ヘルプ「C++の追加情報」にあるtypeSynonymsが C言語でも利用できることが分かりました。 タグ付き値に「typeSynonyms」を設定してください。 値は「HOGE」と記述してください。 この内容もヘルプに追記いたします。 ○ご報告 回答の方法でご希望の動作になったとのご報告をいただきました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |