29 December 2006

[SIXX] 0.2がでますよ


久しぶりにSIXXを更新します。バージョン0.2です。2年ぶりの更新です。

シリアライズ、デシリアライズ時のカスタマイズがより容易に、かつ柔軟に指定できるようになりました。

以下、主立った特徴:
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版の移植者を募集中です。