S.F.Tracker(47)

公開:2005-06-13 10:00
更新:2020-02-15 04:36
カテゴリ:sftracker,windows,audio,tracker

先週は何をしていたかというと、

・Undo・Redoのお勉強&雛形クラスの作成
・boost::serializationを使用した、設定情報の保存方法の検討&実装

Undo・Redoについては、おおよそ実装方法の見当がついたので、ベースとなるクラスの実装を行った。
このページのソースを参考にcommandクラス、command_managerクラスの実装作業を行った。
実装にはソース中のundo.hを参考にした。
元ソースとの違いは、Undoのための値の保存にboost::bindとboost::functionを組み合わせて使用することにしたところである。
元ソースはストレージ領域を用意して、引数を保存する方式を使用していた。
boost::bindは関数の引数の束縛をするために使用するためなのだが、bindした時点の値を保持する機能も有している。
これを利用して、「値をセットするときのメソッドと引数」と「値を元に戻す時のメソッドと引数」を2つのboost::functionオブジェクトに閉じ込めるのである。

しかし、これが実用的なのかどうかは現時点では判断できない。
実際に必要な場面で使用してみないことには...。

また、私は設定値の保存にboost::serializationを使用することにした。
オーディオドライバには設定がつき物で、よって設定値の保存が必要である。
でないと次回起動したときにまたドライバの設定を行わなくてはならない。
設定値の保存方法はそれこそいろいろあって、Pscyleはレジストリに設定値を書き込む方法を採用している。
boost::serializationを使用することにした目的は、「興味本位」なのと、「ファイル」や「メモリ」に設定値を保存したいためである。
設定値を保存するという機能を、ユーザが変更した設定を元に戻す際のUndoデータの保存にも応用しようとしている。

http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/sftracker/SFTracker/