TNB Library
TnbWriter.h
[詳解]
1#pragma once
13#include "TnbReader.h"
14
15
16
17//TNB Library
18namespace TNB
19{
20
21
22
36{
42 virtual bool CanWrite(void) const = 0;
43
50 virtual void Write(size_t size, LPCVOID P) = 0;
51
57 virtual void SetEnd(void) = 0;
58
66 {
67 if ( ! CanWrite() )
68 {
69 throw CWriteFailureException(ERROR_INVALID_HANDLE);
70 }
72 v.Copy(c);
73 Write(v.GetSize(), v.ReferBuffer());
74 }
75
85 void WriteFrom(const IReader& reader, size_t size = 0, size_t oneBlockSize = 4096)
86 {
87 if ( ! CanWrite() )
88 {
89 throw CWriteFailureException(ERROR_INVALID_HANDLE);
90 }
91 CByteVector vb;
92 if ( size == 0 )
93 {
94 size = ToIndex(reader.GetLeftoverSize());
95 }
96 while ( size > 0 )
97 {
98 size_t l = size;
99 if ( l > oneBlockSize ){ l = oneBlockSize; }
100 vb = reader.ReadInto(l);
101 l = vb.GetSize();
102 if ( l == 0 ){ break; }
103 Write(vb.GetSize(), vb.ReferBuffer());
104 size -= l;
105 }
106 }
107
115 virtual void AddRaw(size_t size, LPCVOID P)
116 {
117 Write(size, P);
118 }
119};
120
121
122
123}; // TNB
ファイル関係のヘッダ
virtual size_t GetSize(void) const
[取得] サイズ取得
Definition: TnbVector.h:368
virtual const TYP * ReferBuffer(void) const
[取得] データアドレス取得
Definition: TnbVector.h:664
書き込み失敗発生例外
Definition: TnbException.h:255
TNB Library
Definition: TnbDoxyTitle.txt:2
virtual size_t Copy(const IConstCollectionT< TYP > &c)
[設定] コピー.
読み込みインターフェース
Definition: TnbReader.h:36
LONGLONG GetLeftoverSize(void) const
[取得] 残りサイズ取得.
Definition: TnbReader.h:95
CByteVector ReadInto(size_t size=0) const
[取得] 読み込み
Definition: TnbReader.h:150
シリアライザーインターフェースクラス.
書き込みインターフェース
Definition: TnbWriter.h:36
virtual void SetEnd(void)=0
[設定] EOFを指定.
virtual void AddRaw(size_t size, LPCVOID P)
[追加] 追加.
Definition: TnbWriter.h:115
void WriteFrom(const IReader &reader, size_t size=0, size_t oneBlockSize=4096)
[保存] 書き込み.
Definition: TnbWriter.h:85
void WriteFrom(const IConstCollectionT< BYTE > &c)
[保存] 書き込み.
Definition: TnbWriter.h:65
virtual bool CanWrite(void) const =0
[確認] 書込み可能か
virtual void Write(size_t size, LPCVOID P)=0
[保存] 書き込み