29 December 2006
[SIXX] 0.2がでますよ
久しぶりにSIXXを更新します。バージョン0.2です。2年ぶりの更新です。
シリアライズ、デシリアライズ時のカスタマイズがより容易に、かつ柔軟に指定できるようになりました。
以下、主立った特徴:
- Booleanの読み込みが安全に(Complier evaluate:を使わない)
- DataAndTimeの(デ)シリアライズに対応(Squeakのみ)
- Font系の(デ)シリアライズに対応(Squeakのみ)
- SixxSettings>>useNCRで、多バイト文字列を数値文字参照で出すか、そのまま出すかの設定ができる(VW, Squeak)
- SixxShapeChangeReadStreamの追加。クラス定義が変化したインスタンスを変換させながら読み込ませることができる
- シリアライザのカスタマイズ
Object>>sixxPrepareWrite | 書き込む直前に呼ばれる。 |
Object>>sixxWriteValue | 実際にシリアライズされるオブジェクトを返す |
Object>>sixxIgnorableInstVarNames | 変数を列挙しておくと書き込まれない |
Object>>sixxInitialize | 読み込む直後に呼ばれる |
Object>>sixxReadValue | 読み込まれたオブジェクトから、クライアントに使われるオブジェクトを返す |
sixxWriteValueとsixxReadValueによって、Mementoパターンの実装がより簡単になりました。ユーザはMementoを使っていることを全く意識せずに、オブジェクトを読み書きできます。
さらに柔軟なカスタマイズを提供するのがSixxShapeChangeReadStreamです。
SixxShapeChangeReadStreamにShapeChangerを登録することで、クラスがリネームされていたり、インスタンス変数がリネームされていたり、削除されていたり、追加されていた場合に適切に変換を行わせることができます。
srs := SixxShapeChangeReadStream on: oldSixx readStream.
srs shapeChangers at: #SmallIntegerOLD put: SmallInteger. "単純なリネーム"
srs shapeChangers at: #SixxShapeChangedObject put: SixxMockShapeChanger.
"複雑な変換の場合はShapeChangerを実装して登録"
Dolphin版の移植者を募集中です。
Last modified 29 December 2006 at 12:16 pm by ume |