2019-07-14-01-steamの大手術をしている - project-enigma

2019-07-14-01-steamの大手術をしている

>> Site top >> weblog >> 月別アーカイブ >> 2019年07月のlog >> 2019-07-14-01-steamの大手術をしている

最終更新日付:2019/07/14 12:00:00


steamの大手術をしている

2019 年 07 月 14 日

今度は1ヶ月半の放置になってしまった。このところずっと、steam の基盤になっている部分にインパクト特大の変更をしていた。というか、まだ終わってない。いつ終わるかも、わからない。

 

コトの発端は、steam 内で使える rpn コマンドだった。こいつは逆ポーランド記法で使える電卓みたいなもので、steam の中では(データには一切アクセスしないという意味で)ちょっと特殊なコマンドなのだけれど、分数表現なども扱えるようにしてあるので、なかなか便利なやつなのだ。

その基本的なアイディアは std::any に近いものだ。Number クラスが、整数、浮動小数点数、分数なんかを表現する Impl オブジェクトへの参照カウントハンドルを保持する、てやつ。これ自体は特に目新しいことはない。というか、自分のやることに新奇性は(大体いつも)ない。

問題は、「これを文字列なんかも表現できる Value クラスに格上げして、rpn コマンドだけじゃなくて普遍的に利用すれば全体的にすっきりするんじゃないの?」と思ってしまったことだ。steam は、プロンプトを出してコマンドをパラメータと共に受け取り、それを処理する、ということを繰り返す。パラメータはコマンド毎に異なるが、数値のこともあれば文字列のこともある。これまでは、すべて文字列として受け取り、各コマンドでパースしていた、これをプロンプトの処理側で一括して Value にできたらいいな、というのが目論見だったわけだ。あと、シェル変数と同じようなやり方で変数も管理できるけど、それも従来の文字列管理から Value 管理にしようと。

当然ながら、コードの隅から隅まで、気が滅入るくらい影響範囲が広い。そして、何日もコンパイルを通せない日が続く。こういう時は本当に落ち着かない。そして、2週間振りくらいに全体ビルドが通るところまできたのでこれを書いている、と。

巨大な変更になることは最初からわかっていたから、git でひさしぶりに専用のブランチを fork して作業しているが、やってみたら想像以上に修正しまくりだった。繰り返すけどまだ終わってない。最後までやり切れるかどうかもちょっと怪しい。頑張るしかない。

 

コメント

このページにコメントする

 

このページのタグ

Page tag : fist

 

 


Copyright(C) 2005-2019 project-enigma.
Generated by CL-PREFAB.