VS6でSerialization
設定ファイルの読み書き処理の為に、VS6でもboost::serializationが使いたいんだけど、昔VS6で使ってみたらなんかcompile errorが取り除けなかったので諦めている。
boost::serializationの気に入っているところは、データの読み書きに必要なコードが圧倒的に少なくて済む事。
http://hw001.gate01.com/eggplant/tcf/cpp/boost_serialization.html を見て自分みたいな脳無しでもすんなり使えた。
boost::serializationで気に入らないのが、設定ファイルのフォーマットが変わった時に、それに対応するコードを用意しなければいけないところ。怠惰なのでversion判別するコードを書くよりかは、対応する記録が存在しなかった時は規定値を使うやり方にしたい。でもそれにはデータに骨組み部分が無いと、記録がされているのかされていないのかの判別が出来ない。あと、設定なので人間が読める形式のデータにした方が良いだろうし、それにはXMLが良いんじゃないか。
でも型と文字列の変換関数を用意する必要がある。enumの値も数字化せずに文字で保存した方が面倒だけれど可読性は上がる。しかし型の構造に合わせて自動的にXMLをtraverseするコードはどういうふうにすれば作れるんだろう?まぁとりあえずXMLの読み書きにはTinyXMLを使おう…。
出来れば自作は避けたいんだけれど、あまり自分の好みに合ったのが見つからない。CodeProjectに投稿されたライブラリを色々見てみて目を引いたのは↓のやつ。
http://www.codeproject.com/library/Calvin_Persistence_Lib.asp
でもVC7.1以降向けらしい…。
しかしVS2005Expressが無料の時代に、有料のソフトをVC6で作るのもなんだかなぁ…。でもアプリ本体だけでなく利用している多くのstatic libraryもVC6でbuildしたものだし、作ってる管理の気苦労と検証の手間も考えると、面倒だし時間が無い…。