文字列データの変換

文字列データを元データからプログラム中で読み込んで使用するバイナリデータに変換するプログラムを考えます。


この変換処理への入力は、ラベルと文字列データの組です。

この入力の表現は抽象的なもので、具体的な元データはスプレッドシートです。
スプレッドシートを直接扱うツールとしては ExcelOpenOffice.org の Calc が考えられます。
これらのツールのマクロ機能を使用してバイナリデータを出力できると便利なのですが、
個人的にまだそこまで精通していないので、まずは csv を出力して、それを利用します。


変換処理からの出力は、ヘッダ、文字列へのオフセット(ポインタ)配列、文字列データブロックがこの順序で出力されます。
ヘッダには、オフセット配列と文字列データブロックの先頭のオフセットが含まれ、オフセット配列の各要素は
対応する文字列データのオフセットです。また、ヘッダには、文字列データブロックのサイズも含まれます。

先に出力されるデータ(ヘッダ、オフセット配列)が、後で出力されるデータ(オフセット配列、)の情報を必要としているため、
入力データをいったんすべて読み込んで解析し、情報を整理したうえで順に出力していく必要があります。


以上を踏まえて、プログラムは以下のような流れになります。

  1. csv からラベルと文字列データの組を作成し、入力データとする
  2. 入力データを順に取り出し、各文字列データのサイズに基づいて情報を整理する
  3. 収集したデータを、バイナリデータのフォーマットにあわせて出力する

1 と 2 の処理を分けておき、将来的に 1 の部分をスプレッドシートから直接入力データを作成する処理に
置き換える事を考えています。