ftxui::component を導入したあたりから、 クラッシュするようになった。
「cpp」タグの記事が24件件あります
全てのタグを見るHtmlParser 整理に着手
w3m 最大の難所、 html parser の整理に手をつけた。
ftxui のdom
tui 描画に ftxui の Screen を取り入れたが、 さらに dom もとり入れた。
リファクタリング構想
Windows で http get するところまでできた。 使用ライブラリーの構成が固まった。
co_await で非同期
c++20 の coroutine うまくいきそう。
msvc でビルド
Windows 版、cygwin でも mingw でもなく、msvc 版のビルドを試みる。
ftxui 導入
tui 描画に ftxui を取り入れる。
libuv
pty input, signal, timer を置き換える。
funcmap
funcmap 改造。
tab と buffer
データ構造
global 変数をメンバ ー変数に変える
スレッドセーフにするべく global 変数をメンバー変数などに変えていきます。
だいぶシンプルになってきた
http get から html parse, term 表示までの流れができてきました。
非同期タスク
2種類の非同期タスクが必要で、 ひとつは http get、もうひとつは text 入力。
機能が壊れている
なるべく壊さないようにしていますが、 わりと壊れています。 忘れないように修復優先度をメモ。
Buffer分割計画
Buffer が大きいので役割ごとに分割してみる。
MD5 deprecated warning
MD5 警告が多くてメッセージが埋もれるのがつらいので対処を試みる。
network 整理
比較的に独立性の高い network 関連を整理する。
GC 管理の class
new を使えるようにする。
mainloop
いよいよ本格的な改造に踏み込みはじめる。 mainloop を分離した。
const char * との戦い
c++ 化した瞬間からものすごい量の警告が発生していて、
やむをえず -w
していました。
描画の流れ
描画の流れとデータ構造
source と header をペアにする
巨大なヘッダー proto.h に大量の関数が詰め込んである。 fm.h に主要な型が詰め込んである。
typedef struct の除去
これからヘッダーを小分けにしていくのに、 前方宣言を使いたいのだけどその時に typedef に配慮が必要です。
C++化
C では多少型が違っても void*
や int
になってわりとコンパイルが通る。
関数 signature が無くてもコンパイルが通る。
C++ ではそうはいかない。
そこがいい。