以前は、OpenC ++(http://opencxx.sourceforge.net/opencxx/html/overview.html)を使用して次のようなコード生成を実行していました。
ソース:
class MyKeyword A {
public:
void myMethod(inarg double x, inarg const std::vector<int>& y, outarg double& z);
};
生成:
class A {
public:
void myMethod(const string& x, double& y);
// generated method below:
void _myMehtod(const string& serializedInput, string& serializedOutput) {
double x;
std::vector<int> y;
// deserialized x and y from serializedInput
double z;
myMethod(x, y, z);
}
};
この種のコード生成は、処理用のメタレベルプログラムを作成することにより、OpenC ++のチュートリアル( http://www.csg.is.titech.ac.jp/~chiba/opencxx/tutorial.pdf )のユースケースと直接一致します。 「MyKeyword」、「inarg」、「outarg」とコード生成を実行します。ただし、OpenC ++は古く、現在は非アクティブであり、私のコードジェネレーターはg ++ 3.2でのみ動作し、より高いバージョンのg++のヘッダーファイルの解析でエラーをトリガーします。
VivaCoreを見てきましたが、メタレベルのプログラムをコンパイルするためのインフラストラクチャを提供していません。LLVMも調べていますが、ソースからソースへのコンパイルの使用法を理解するための指導を行うドキュメントが見つかりません。ROSEコンパイラフレームワークも知っていますが、それが自分の使用法に適しているかどうか、独自のC ++フロントエンドバイナリを商用製品で使用できるかどうか、Windowsバージョンが利用可能かどうかはわかりません。
特定のチュートリアル/論文/ドキュメントへのコメントやポインタは大歓迎です。