その14

Advシステムは簡易スクリプト形式で文法を記述していくのですが、
プログラム用言語、プログラム用スクリプトと違って単純明快でなければなりません。
プログラミングをしたことがない人でもすぐ覚えられ、且つ開発効率が良いこと、さらにメンテナンス性が求められます。


例えば立ち絵表示の場合で、毎回(または単位ごと)にloadして必要無くなればdeleteして、だと
メモリの無駄などは全くないのですが、タイピングが多い上にdeleteのタイミングを考えたりとか面倒です。

その場その場でloadしたのでは遅い上に自由度がありません。どこでどんなファイルを参照しているかも分かりません。


そこで、先頭に全てのファイルをloadすることにします。
全てを一気にメモリに載せるわけにはいかないので、そのタイミングをマネージメントする機構を作ります。


struct manager {
    int using;  // メモリ使用量

    fast_list<file*> files;
};

struct file {
    int filesize;
    string filename;

    free();     // メモリを解放
};


draw時にメモリになければloadし、manager::filesにpush_back()します。
その際にメモリ使用量をチェックし、超えているとmanager::filesの先頭をfree()&pop_front()し続けます。


既にメモリ上にあるものをloadすると、manager::filesでの位置を一番最後に移動、つまり削除されにくくなります。
タイムクリティカルな処理には明示的にload関数を呼ぶことで、pre-loadしておくことができます。



(1)処理速度と自由度
(2)開発効率とメンテナンス性


ああ、文章がまとまらない。・゚・(ノД`)・゚・。