TNB Library
公開メンバ関数 | 全メンバ一覧
ISerializer 構造体abstract

シリアライザーインターフェースクラス. [詳解]

#include <TnbSerializer.h>

+ ISerializer の継承関係図

公開メンバ関数

virtual void AddRaw (size_t size, LPCVOID P)=0
 [追加] 追加. [詳解]
 
template<typename T >
ISerializeroperator<< (const T &t)
 [追加] 追加. [詳解]
 
virtual ~ISerializer (void)
 デストラクタ [詳解]
 

詳解

シリアライザーインターフェースクラス.

基本型、および、 ISerializable を実装したクラス
( ICollectionT もこれを実装しています)、
および、 CStrT 系 はシリアライズ可能になっています。

シリアライズしたデータは、同じ型、同じ順番でデシリアライズする必要があります。
使用例

    void Foo(ISerializer& _sr)
    {
        int i;
        CStr str;
        _sr << i << str;            // int と文字列をシリアライズする。           
    }
 

覚え書き
その他の型(MFCクラスやユーザクラスなど)は以下のようなオペレータを用意することでシリアライズに対応可能です。

    struct TMyType {    //ユーザクラス
    {
        CStr strKey;
        int  iValue;
    }

    inline ISerializer& operator<<(ISerializer& _sr, const TMyType& t)      
    {
        _sr << t.strKey << t.iValue;
        return _sr;
    }
 

必要ファイル
TnbSerializer.h
日付
06/08/17 新規作成
08/04/16 機能整理
14/08/13 仮想デストラクタ実装

TnbSerializer.h110 行目に定義があります。

構築子と解体子

◆ ~ISerializer()

virtual ~ISerializer ( void  )
virtual

デストラクタ

TnbSerializer.h149 行目に定義があります。

関数詳解

◆ AddRaw()

virtual void AddRaw ( size_t  size,
LPCVOID  P 
)
pure virtual

[追加] 追加.

指定データを追加します。

覚え書き
pure関数です。サブクラスでは本メソッドを実装する必要があります。
引数
size追加するデータサイズ(単位BYTE)
P追加するデータ
例外
CTnbException失敗時は、任意のスローの可能性があります。

CSerializeAdapter, IWriterで実装されています。

◆ operator<<()

ISerializer & operator<< ( const T &  t)

[追加] 追加.

指定データをシリアライズして追加します。

引数
tデータ
戻り値
自分の参照
例外
CNotSupportExceptionシリアライズをサポートしていない型が指定されると、スローされます。
CTnbException失敗時は、任意のスローの可能性があります。

TnbSerializer.h161 行目に定義があります。