巨大なヘッダー proto.h に大量の関数が詰め込んである。 fm.h に主 要な型が詰め込んである。
これらを適当に分割して、source と header のペアのモジュールに分割したい。 この分割作業に前段で実施した、typedef struct の除去が効果がある。 ポインター参照しかない型を安心して前方宣言できる。
w3m のコア
あと file.cpp(元 file.c)が特に巨大で 7000 行くらいある。 ここに html パースと 2次元レイアウトのコアがある。 この部分をなるべく壊さずに活かしたいのです。 グローバル変数をクラスのメンバー変数に改造するとかして、 多重に動かせるようにはしたい。
fm.h を分配
主に型を基準に、xxx.cpp と xxx.h のペアになるように分配した。
元が 1200 行くらいで、マクロをカットして 600 行、 そこから型を分配して 300行くらいに削減。 global 変数がここに配置してある。これらも型のソースに分配して fm.h は無にする予定。
グローバル設定
- rc => lua にしたい
search, linein 系
- search => 軽量化 USE_MIGEMO を削除
- linein => main loop に手を入れる前にこっち先にモジュール化するとよさそう。 readline みたいな lineeditor.
- regex
Command / mainloop / keymap
- main
- mainloop => libuv 化したい。setjmp/lognjmp を回避して goto を回避して単純化したい。
- menu => 軽量化。削除予定
- command => lua にしたい
- keymap => lua にしたい
Buffer 系
- Buffer
- Line
- Anchor
- AreaMap
html parse 系
- readbuffer => utf8 対応
- table
- form
- frame => 軽量化。削除予定
- etc
- file
IO http
- istream
- url
- httprequest
- cookie
term display
- display
- terms => utf8 対応