CubeSuite+のコード生成(以下Cg)は、有用で効果的なツールです。今回は、このCgの目的を整理します。
図は、あるプロジェクトのCubeSuite+画面です。プロジェクトツリーのファイルに、コード生成カテゴリがあり、Cg出力のヘッダファイルとソースファイルは、ここに配置されます。ファイルには、新たなカテゴリを追加し、Cg出力ファイルと区別できるようにしています。
Cgの目的は、API生成とテンプレート作成の2つです。それゆえ、Cgの出力ファイルには、2つ様式があります。1つがAPI関連のヘッダとソース分離様式、もう1つがテンプレート関連のヘッダ、ソース一体様式です。
目的 | 様式 | 例 | 生成内容 |
API生成 | 分離様式 | r_cg_周辺.h | 周辺APIプトロタイプ宣言、型定義など |
r_cg_周辺.c | 周辺APIソース | ||
r_cg_周辺_user.c | r_cg_周辺.h とr_cg_macrodriver.h、userdefine.hは追加済みの空ソースファイル | ||
テンプレート生成 | 一体様式 | r_main.c | 全r_cg_周辺.h とr_cg_macrodriver.h、userdefine.hは追加済みのメインループ付き空ソースファイル |
r_systeminit.c | 全r_cg_周辺.h とr_cg_macrodriver.h、userdefine.hは追加済みの周辺初期化API付き初期化ソースファイル |
※userdefine.hは、Cg生成時、空ヘッダファイル。
APIのプトロタイプ宣言や型定義が記述されたヘッダファイルは、r_main.cに自動追加され、Cgが生成したAPIをファイル内で宣言なしに使えます。分離様式は、このように使用側で明示的な宣言が不要になる利点があります。APIやライブラリのように、ソースにバグが無く品質が良い関数を使うのに適した方法です。一方、ユーザが作成した関数は、(バグがあるかもしれませんので)使用側で明示的に宣言した方が良いでしょう。
通常は、Cg出力のコード生成カテゴリのファイルの中身に、ユーザがソースを書き加えることでプログラムが完成します(どこに書き加えるかは、2012/8/13記事参照)。具体的には、r_cg_周辺.cとr_main.cの空ソース部分、userdefine.hが対象です。r_cg_周辺.cでユーザが追加した関数は、r_main.cなどの使用側で明示的に使用宣言します。userdefine.hは、ユーザ追加ソースで必要となるマクロや型定義などを記述します。
Cgが指定する場所へソースを書き加えれば、後に構成が変わってCg再生成をしても、ユーザが追加したソースはそのまま引き継がれます。Cgの目的が2つあり、生成ファイルとその内容を俯瞰的に理解していないと、有用性が判りづらい点もあるので、整理しました。
A person necessarily lend a hand to make critically articles I might state. That is the first time I frequented your web page and so far? I surprised with the analysis you made to make this particular publish incredible. Excellent process!
fantastic publish, very informative. I’m wondering why the other specialists of this sector do not understand this. You must proceed your writing. I’m sure, you have a huge readers’ base already!
link building tools
Thanks a lot for sharing this with all of us you really know what you’re talking about! Bookmarked. Kindly also visit my site =). We could have a link exchange agreement between us!
I am genuinely thankful to the holder of this web site CubeSuite コード生成機能の目的 » HappyTechブログ who has shared this wonderful paragraph at at this time. replica hermes birkin bag http://replicahermeshandbagsbirkin.blogspot.com/