TNB Library
TnbSerializeAdapter.h
[詳解]
1#pragma once
13#include "TnbCollection.h"
15#include "TnbSerializer.h"
16
17
18
19//TNB Library
20namespace TNB
21{
22
23
24
40{
41 ICollectionT<BYTE> * m_pColl;
42
43public:
44
50 {
51 }
52
61 virtual void AddRaw(size_t size, LPCVOID P)
62 {
63 if ( m_pColl->AddElements(size, static_cast<const BYTE*>(P)) != size )
64 {
66 }
67 }
68};
69
70
71
87{
88 const IConstCollectionT<BYTE> * m_pColl;
89 mutable INDEX m_pos;
90
91public:
92
98 : m_pColl(in), m_pos(0)
99 {
100 }
101
110 virtual void GetRaw(size_t size, LPVOID _P) const
111 {
112 CConstOffsetAdapterT<BYTE> ad(m_pColl, m_pos);
113 size_t l = ad.GetElements(size, static_cast<BYTE*>(_P));
114 if ( l != size )
115 {
116 throw CShortOfDataException();
117 }
118 m_pos += l;
119 }
120};
121
122
123
130template<typename TYP>
132{
133 size_t size = _c.GetSize();
134 if ( size > 1 )
135 {
136 TYP last = _c.Get(0);
137 for ( INDEX i = 1; i < size; i++ )
138 {
139 TYP t = _c.Get(i);
140 _c.Set(i, t - last);
141 last = t;
142 }
143 }
144}
145
146
147
154template<typename TYP>
156{
157 size_t size = _c.GetSize();
158 if ( size > 1 )
159 {
160 TYP last = _c.Get(0);
161 for ( INDEX i = 1; i < size; i++ )
162 {
163 TYP t = _c.Get(i) + last;
164 _c.Set(i, t);
165 last = t;
166 }
167 }
168}
169
170
171
172}; // TNB
173
情報群管理アダプタ関係のヘッダ
情報群管理関係のヘッダ
シリアライザー関係のヘッダ
追加失敗例外
Definition: TnbException.h:94
デシリアライズアダプタ.
CDeserializeAdapter(const IConstCollectionT< BYTE > *in)
コンストラクタ
virtual void GetRaw(size_t size, LPVOID _P) const
[取得] 取得.
シリアライズアダプタ.
virtual void AddRaw(size_t size, LPCVOID P)
[追加] 追加.
CSerializeAdapter(ICollectionT< BYTE > *in)
コンストラクタ
データ足らず発生例外
Definition: TnbException.h:120
void EncodeDeltaCollection(ICollectionT< TYP > &_c)
デルタ符号コレクション符号化
void DecodeDeltaCollection(ICollectionT< TYP > &_c)
デルタ符号コレクション復号化
TNB Library
Definition: TnbDoxyTitle.txt:2
virtual bool Set(INDEX index, const TYP &t)=0
[設定] 要素の設定.
virtual size_t AddElements(size_t size, const TYP *P=NULL)
[追加] 複数要素追加.
virtual size_t GetElements(size_t size, TYP *_P, INDEX offset=0) const
[取得] 複数要素取り出し.
virtual TYP Get(INDEX index) const
[取得] 要素の取得.
virtual size_t GetSize(void) const =0
[取得] 要素数取得.
デシリアライザーインターフェースクラス.
シリアライザーインターフェースクラス.