サンプル自動生成ツールの検討の設計ノート
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
- あらかじめ用意しておいたファイルをコピーします。
以上