change-class が便利
CL-Gtk2 を触ってみたらとてもよかったので、エディタを使ってみている。
GtkSourceBuffer で編集対象をあつかうただが、オープンしたファイル名なども一緒に GtkSourceBuffer に持っていてほしい。
そこで change-class してみた。
GtkSourceBuffer は CL-Gtk2 では source-buffer クラスになっている。 source-buffer クラスを継承して欲しいスロットを持ったクラスを作る。 source-buffer のインスタンスができたところで、その作ったクラスに change-class する。
(defclass* buffer (source-buffer)
((view)
(name nil)
(file nil)
(yank "AAAA")
(digit-argument nil :accessor nil)
(external-format :utf-8))
(:metaclass gobject-class))
(change-class (make-instance 'source-buffer)
'buffer
:name "command buffer")
動的プロキシとかデリゲートとか意味ないな (特異メソッドはまた違う話しか) 。
MOP なら動的にスーパークラスを追加する手もあるかもしれない。
あっ、make-instance したのを change-class するのはひどい例だった。
0 件のコメント:
コメントを投稿