Port

次はI/O周りをすることになった。
仕様を読んだり、コードを眺めていたりします。現状のmoshではポート関係のクラスの継承関係は

  • BinaryInputPort
    • BinaryArrayBinaryInputPort
    • CustomBinaryInputPort
    • FileBinaryInputPort
  • BinaryOutputPort
    • FileBinaryOutputPort
  • TextualInputPort
    • StringTextualInputPort
  • TextualOutputPort
    • StringTextualOutputPort
    • TextualByteVectorOutputPort

のようになっている。ポート全てに関わってくるtranscoder(デコーダ/エンコーダ)や、ファイルオプションを考えるとPortクラスが親にいるほうが良いような気がするな。あとInputでもありOutputでもあるポートの扱いをどうするのかが困りどころ。

  • Port
    • InputPort
      • BinaryInputPort
      • TextualInputPort
    • OutputPort
      • BinaryOutputPort
      • TextualOutputPort
    • InputOutputPort
      • BinaryInputOutputPort
      • TextualInputOutputPort

こんな感じかなあ。
FileBinaryInputPortとかはCustomBinaryInputPortの一種としてつくると綺麗な気がする。けどできるかどうかまだ良くわからない。