CubeSuite+コード生成機能の目的

CubeSuite+のコード生成(以下Cg)は、有用で効果的なツールです。今回は、このCgの目的を整理します。

図は、あるプロジェクトのCubeSuite+画面です。プロジェクトツリーのファイルに、コード生成カテゴリがあり、Cg出力のヘッダファイルとソースファイルは、ここに配置されます。ファイルには、新たなカテゴリを追加し、Cg出力ファイルと区別できるようにしています。

CubeSuite+画面
CubeSuite+画面

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.huserdefine.hは追加済みの空ソースファイル
テンプレート生成 一体様式 r_main.c r_cg_周辺.h r_cg_macrodriver.huserdefine.hは追加済みのメインループ付き空ソースファイル
r_systeminit.c r_cg_周辺.h r_cg_macrodriver.huserdefine.hは追加済みの周辺初期化API付き初期化ソースファイル

userdefine.hは、Cg生成時、空ヘッダファイル。

APIのプトロタイプ宣言や型定義が記述されたヘッダファイルは、r_main.cに自動追加され、Cgが生成したAPIをファイル内で宣言なしに使えます。分離様式は、このように使用側で明示的な宣言が不要になる利点があります。APIやライブラリのように、ソースにバグが無く品質が良い関数を使うのに適した方法です。一方、ユーザが作成した関数は、(バグがあるかもしれませんので)使用側で明示的に宣言した方が良いでしょう。

通常は、Cg出力のコード生成カテゴリのファイルの中身に、ユーザがソースを書き加えることでプログラムが完成します(どこに書き加えるかは、2012/8/13記事参照)。具体的には、r_cg_周辺.cr_main.cの空ソース部分、userdefine.hが対象です。r_cg_周辺.cでユーザが追加した関数は、r_main.cなどの使用側で明示的に使用宣言します。userdefine.hは、ユーザ追加ソースで必要となるマクロや型定義などを記述します。

Cgが指定する場所へソースを書き加えれば、後に構成が変わってCg再生成をしても、ユーザが追加したソースはそのまま引き継がれます。Cgの目的が2つあり、生成ファイルとその内容を俯瞰的に理解していないと、有用性が判りづらい点もあるので、整理しました。

4 thoughts on “CubeSuite+コード生成機能の目的”

コメントを残す