サンプル自動生成ツールの検討の設計ノート 20050824 -MT- 20050902 -MT- 【サンプル自動生成ツール】 + 開発者向けに、sample/XXXSample/[clng and java] 以下のディレクトリ、 ファイルを、自動で生成するツールを用意しようと思います。 + 従来、サンプルを追加する度に、定型的な作業を行う必要がありました。 その際は、現存のサンプルファイルコピーし、内容を書き換えていました。 この時、以下のようなミスが発生していました。 - main 関数内で呼び出す decode、encode 関数名の記述ミス。 (コピー元のファイルと、UMS で記述した関数名が異なる場合に発生) - XXXTest 内の、callBack 関数の関数名、戻り値、引数、の記述ミス。 (コピー元とのファイル、UMS で記述した関数が異なる場合に発生) - Makefile、build.xml 内の、書き換え漏れ。 それに、これまで、サンプルの改修が数回発生しましたが、その度にサンプル全体 を修正していました。 上記のミスを抑えるため、また、作業時間の短縮のため、以下のファイルを自動で 生成するツールを用意しようと思います。 - 生成されるファイル (1) サンプルの Main 関数 (2) サンプルの Test 関数の雛形 (3) Makefile の雛形(C言語) (4) build.xml の雛形(Java) (5) schema.xml ※サンプルの main() をまとめる作業を行う際、Makefile や、bulid.xml の処理 内容もサンプルごとにほとんど同じため、これらのファイルをサンプル毎に自 動で生成すればよいのではと考えました。 + 開発者の仕事 - サンプルを格納するディレクトリの作成 - UMS ファイルの作成 - 入出力データの作成 - サンプル自動生成ツールの実行 ⇒ !!この部分が、今回の提案です。 - サンプル Test 関数の処理内容記述 - Makefile、build.xml の処理内容追記 【処理内容】 + サンプル自動生成ツールは、シェルで作成する予定です。 - 実行形式 (TBD) %createsample -clng -m2 XXX.ums [OUTDIR] -> 1番目の引数 : -clng or -java //C言語用、もしくは Java 用 -> 2番目の引数 : -m2 or -m3 //tableTools 用、もしくは umsCodeGenerator 用 -> 3番目の引数 : XXX.ums //UMS ファイル -> 4番目の引数 : [OUTDIR] //ディレクトリ名 (省略時は、UMS ファイルの basename) - シェルの処理内容 (1) サンプルの Main ファイル作成 (2) サンプルの Test ファイル作成 (3) Makefile 作成(C言語) (4) build.xml 作成(Java) (5) schema.xml コピー + 生成されるファイル まだ TBD の部分もありますが、以下のように処理を行おうと考えています。 (1) サンプルの Main 関数 - UMS ファイルを input とし、XSL により、生成します。 - C言語 : XXXMain.c -> 以下の部分を UMS から取得します。 -------------------------------------------------------------- #include ".h" ( output_buffer, &bitlen, &state ); -------------------------------------------------------------- - Java : XXXMain.java -> 以下の部分を UMS から取得します。 -------------------------------------------------------------- class Main { Test sample = new Test(); sample. ( inputBuffer.getBytes( "US-ASCII" ), inBitlen ); -------------------------------------------------------------- (2) サンプルの Test 関数の雛形 - UMS ファイルを input とし、XSL により、生成します。 - C言語 : XXXTest.c -> callBack 関数の戻り値、関数名、引数を UMS から取得します。 -> 関数の処理内容は、開発者に記述してもらいます。 -------------------------------------------------------------- { -------------------------------------------------------------- - Java : XXXTest.java -> callBack 関数の戻り値、関数名、引数を UMS から取得します。 -> 関数の処理内容は、開発者に記述してもらいます。 -------------------------------------------------------------- class Test extends { { -------------------------------------------------------------- (3) Makefile の雛形(C言語) - 以下の XXX の部分を取得し、書き換えます。 ---------------------------------------------------------------- NAME=XXX ---------------------------------------------------------------- - sed コマンドにより、生成します。 - 入出力データのファイルの指定部分は、開発者に記述してもらいます。 (4) build.xml の雛形(Java) - 以下の XXX の部分を取得し、書き換えます。 ---------------------------------------------------------------- ---------------------------------------------------------------- - sed コマンドにより、生成します。 - 入出力データのファイルの指定部分は、開発者に記述してもらいます。 (5) schema.xml - あらかじめ用意しておいたファイルをコピーします。 以上