S.F. Page

Programming,Music,etc...

設定内容を保存する

設定ダイアログの内容をファイルに保存して、起動時に読み込み反映するコードを追加した。

保存のコードはBoost.Serializationを使用して実装した。以前このライブラリを使っていたのだけれどすっかり忘れてしまっていたので思い出しながらの実装。デストラクトのタイミングで保存したい情報をシリアライズする。情報はXMLフォーマットで書き出す。逆に読み込むときはコンストラクタで情報を読み込む。保存されるファイルの中身はこんな感じ

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE boost_serialization>
<boost_serialization signature="serialization::archive" version="9">
<current_params class_id="0" tracking_level="0" version="0">
	<exclusive_mode>1</exclusive_mode>
	<event_mode>0</event_mode>
	<bits>16</bits>
	<valid_bits>16</valid_bits>
	<sample_rate>44100</sample_rate>
	<latency>1000000</latency>
	<channel>2</channel>
</current_params>
</boost_serialization>

Boost.Serializationは多機能である。クラスインスタンスの構造のまま保存することが(うまくやれば)可能だし、ポインタのシリアライズなんてことも(うまくやれば)可能だ。でも私の場合はクラス中の保存したい内容が限られているので、保存すべき部分のみをシリアライズするといった使い方をしている。なんでかというとOSが生成するインターフェースへのポインタとか、そのポインタから得られる情報をキャッシュするメンバとかまでをシリアライズする必要はないので。でもうまく設計するとそのあたりも解決できそうだけどね。

ソースコード