Next: 索引, Previous: ユニット, Up: Top

## 5 ツール/ユーティリティ

### 5.1 構成要素設定メソッド生成ツール

シミュレーション構成要素は，先に述べた`MicsElement`を継承し，幾つかのインターフェースを実装しなければならない． これらの実装において，MICSのフレキシビリティを保つためには， 適切に`MicsElement`の`initialize`をオーバライドすることが必要である．また，このメソッドの中身は各ユニットの実装者に任されているため，そのドキュメントもまた重要である． そこで，MICSでは，`net.wasamon.mics.tools.MakeInitialize`というツールを用意している．

#### 5.1.1 使い方

         java net.wasamon.mics.MakeInitialize [-o 出力フォーマット] ソースファイル

出力フォーマットは，現在javaとHTMLをサポートしている．またオプションの指定を省略した場合には，Javaのソースコードを出力する．

#### 5.1.2 ソースファイルの書き方

`MakeInitialize`は，XMLで記述した設定ファイルの構成からJavaのソースコードや，HTML形式によるドキュメントなどを生成することができるツールである．`MakeInitialize`の入力XMLの形式を次に示す．

`initalize name=`クラス名
  MakeInitializeに与えるソースのルートエレメント．属性`name`で，クラス名を指定する．これは，クラスのトップの設定に対応する．
`attribute name=`属性名 `type=`型
  現在のエレメントレベルにおいて指定すべき属性の名前と，Javaにおける型．型はStringとintだけが認められる．intは，`Integer.parseInt`を用いてプリミティブのint型に変換される．
`child name=`エレメント名 `repeatable=`true|false
  現在のエレメントレベルの子エレメント．`name`で指定した名前の要素を子エレメントに持てることを指示する．`repeatable`が`false`の場合，設定ファイル中では，この要素を必ず一つ指定しなければならない．一方`repeatable`が`true`の場合には，この要素を幾つでも指定することが(あるいは指定しないことが)できる．
`exec`
  このエレメントの設定に対して，実行すべきJavaのソースコード．この部分では，同じエレメントレベルの`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>