シミュレーション構成要素は,先に述べたMicsElement
を継承し,幾つかのインターフェースを実装しなければならない.
これらの実装において,MICSのフレキシビリティを保つためには,
適切にMicsElement
のinitialize
をオーバライドすることが必要である.また,このメソッドの中身は各ユニットの実装者に任されているため,そのドキュメントもまた重要である.
そこで,MICSでは,net.wasamon.mics.tools.MakeInitialize
というツールを用意している.
java net.wasamon.mics.MakeInitialize [-o 出力フォーマット] ソースファイル
出力フォーマットは,現在javaとHTMLをサポートしている.またオプションの指定を省略した場合には,Javaのソースコードを出力する.
MakeInitialize
は,XMLで記述した設定ファイルの構成からJavaのソースコードや,HTML形式によるドキュメントなどを生成することができるツールである.MakeInitialize
の入力XMLの形式を次に示す.
initalize name=
クラス名name
で,クラス名を指定する.これは,クラスのトップの設定に対応する.
attribute name=
属性名 type=
型Integer.parseInt
を用いてプリミティブのint型に変換される.
child name=
エレメント名 repeatable=
true|falsename
で指定した名前の要素を子エレメントに持てることを指示する.repeatable
がfalse
の場合,設定ファイル中では,この要素を必ず一つ指定しなければならない.一方repeatable
がtrue
の場合には,この要素を幾つでも指定することが(あるいは指定しないことが)できる.
exec
attribute
エレメントのname
で指定した文字列に対応する値を$変数名
として利用することができる.
たとえば,SimpleProcessorの設定ファイルは次のように構成されている.
<initialize name="net.wasamon.mics.processor.SimpleProcessor">
<attribute name="memory" type="int"/>
<child name="channel" repeatable="true">
<attribute name="id" type="String"/>
<attribute name="offset" type="int"/>
<exec>
channelManager.add($id, $offset);
</exec>
</child>
<exec>
memory = new RandomAccessMemory($memory);
</exec>
</initialize>
これは,次に示すSimpleProcessorへの設定ファイルを受け付ける.
<element id="proc0" class="net.wasamon.mics.processor.SimpleProcessor" memory="2048">
<channel id="bus0" offset="2048"/>
</element>