テンプレート化されている部分とそうでない部分がごちゃごちゃになっている現状をなんとかしようとプログラムを変形中。こういうのを放置していると拡張するのがだんだん嫌になってくるので。
テンプレート化はコンパイラが最適化しやすく、かつ、一般的な形を見つけるのがなかなか難しい。生成されたコードを見ると無駄な一時オブジェクトのロード/ストアが残っていたりしてムカッとくる。
テンプレート化されている部分とそうでない部分がごちゃごちゃになっている現状をなんとかしようとプログラムを変形中。こういうのを放置していると拡張するのがだんだん嫌になってくるので。
テンプレート化はコンパイラが最適化しやすく、かつ、一般的な形を見つけるのがなかなか難しい。生成されたコードを見ると無駄な一時オブジェクトのロード/ストアが残っていたりしてムカッとくる。
やべぇよ、今月ももうおしまいですよ。番組改編期ですよ。いや、まあ、いつものことですね。はい。
うわーん、もう疲れたヨー。目が痛いヨー。もうディスプレイなんて見たくないヨー。指も痛いヨー。頭がボーっとするヨー。
………、あーあ、仕事しよう。
kuiライブラリ(カスタマイズ可能なUIライブラリ)が気に入らない。何が気に入らないかって言うと……、まあ、面倒だから以下略。いや、細かいところが色々気に入らないのだけど。詳しいところはまだよく分かっていないし。週末直すことにしよう。
マウス移動イベントとホイールイベントに対応した。久しぶりにミニゲームが作りたくなった。それと、ルーティングイベント万歳。
竹内くん、いいよ、竹内くん。
テストを改修中。それが終わったら何か出します。いや、出せたらイイナ。
今使っているイベント配信機構がもうずっと長いこと気に入らない。何が気に入らないかって言うとイベントリスナー(ハンドラ)登録部分。いちいちリスナーインタフェースから継承して、オーバーライドするのが面倒。なのでメンバ関数ポインタ呼び出しをヒープへの割り当て無しでラッピングするテンプレートクラスを書いて(boost::functionに効率の良いallocatorを指定する方が良いかどうか迷った)、それをリスナー登録の時に使おうとしたのだけど、実はリスナーインタフェースの基底クラスはデストラクタで自分宛のメッセージをキューから削除する処理を行っているんだった。ダメじゃん。デストラクタにその処理を行う関数呼び出しを毎回書くとか、それだけのために何かを継承するのだったら今までと変わらないよ。むしろ忘れる危険性があるし。それだったら今までの方がシンプルで効率も良く、安全だ。別に自由なメンバ関数を呼んでもらえないことが困るってほどでもないし。ということでせっかく書いたテンプレートクラスはお蔵入りです。時間を無駄にした。いや、勉強になった。
結局このあたりはオブジェクトの寿命管理の呪縛から逃れられないんだよね。イベントをきっかけにイベントハンドラになっているオブジェクトを削除するなんて事は良くあるわけだし。boost::signalですらtrackableを必要とする。さらにイベントハンドラがイベント発生元を削除したいケースも良くある。GCがあれば何て事は無いんだろうけどなぁ。侵入型の参照カウンタで自分自身をロックするくらいでも何とかなる?
ちなみにQtだとこんな感じらしいです。つまりはイベントの通知は自分が削除されても良いタイミングで行え、それが出来なければタイマーか何かで遅延するか、自分が削除されたことを検知せよ。頭痛い。いや、興味深い。
やっぱり囲碁は自由に打たなきゃつまんないよね。縮こまっちゃダメ。自由に打って負けたのなら、まあ、仕方ない。