32 #ifndef _NPT_STREAMS_H_ 33 #define _NPT_STREAMS_H_ 39 #include "NptReferences.h" 40 #include "NptConstants.h" 41 #include "NptResults.h" 42 #include "NptDataBuffer.h" 43 #include "NptStrings.h" 53 const int NPT_ERROR_READ_FAILED = NPT_ERROR_BASE_IO - 0;
54 const int NPT_ERROR_WRITE_FAILED = NPT_ERROR_BASE_IO - 1;
55 const int NPT_ERROR_EOS = NPT_ERROR_BASE_IO - 2;
67 virtual NPT_Result Load(
NPT_DataBuffer& buffer, NPT_Size max_read = 0);
68 virtual NPT_Result Read(
void* buffer,
69 NPT_Size bytes_to_read,
70 NPT_Size* bytes_read = NULL) = 0;
71 virtual NPT_Result ReadFully(
void* buffer,
72 NPT_Size bytes_to_read);
73 virtual NPT_Result Seek(NPT_Position offset) = 0;
74 virtual NPT_Result Skip(NPT_Size offset);
75 virtual NPT_Result Tell(NPT_Position& offset) = 0;
76 virtual NPT_Result GetSize(NPT_LargeSize& size) = 0;
77 virtual NPT_Result GetAvailable(NPT_LargeSize& available) = 0;
80 NPT_Result ReadUI64(NPT_UInt64& value);
81 NPT_Result ReadUI32(NPT_UInt32& value);
82 NPT_Result ReadUI24(NPT_UInt32& value);
83 NPT_Result ReadUI16(NPT_UInt16& value);
84 NPT_Result ReadUI08(NPT_UInt8& value);
99 virtual NPT_Result Write(
const void* buffer,
100 NPT_Size bytes_to_write,
101 NPT_Size* bytes_written = NULL) = 0;
102 virtual NPT_Result WriteFully(
const void* buffer,
103 NPT_Size bytes_to_write);
104 virtual NPT_Result WriteString(
const char* string_buffer);
105 virtual NPT_Result WriteLine(
const char* line_buffer);
106 virtual NPT_Result Seek(NPT_Position offset) = 0;
107 virtual NPT_Result Tell(NPT_Position& offset) = 0;
108 virtual NPT_Result Flush() {
return NPT_SUCCESS; }
111 NPT_Result WriteUI64(NPT_UInt64 value);
112 NPT_Result WriteUI32(NPT_UInt32 value);
113 NPT_Result WriteUI24(NPT_UInt32 value);
114 NPT_Result WriteUI16(NPT_UInt16 value);
115 NPT_Result WriteUI08(NPT_UInt8 value);
125 NPT_Position offset = 0,
126 NPT_LargeSize size = 0,
127 NPT_LargeSize* bytes_written = NULL);
142 NPT_Result Seek(NPT_Position offset)
override {
143 return InputSeek(offset);
145 NPT_Result Tell(NPT_Position& offset)
override {
146 return InputTell(offset);
151 virtual NPT_Result InputSeek(NPT_Position offset) = 0;
152 virtual NPT_Result InputTell(NPT_Position& offset) = 0;
168 NPT_Result Seek(NPT_Position offset)
override {
169 return OutputSeek(offset);
171 NPT_Result Tell(NPT_Position& offset)
override {
172 return OutputTell(offset);
177 virtual NPT_Result OutputSeek(NPT_Position offset) = 0;
178 virtual NPT_Result OutputTell(NPT_Position& offset) = 0;
198 NPT_Result Read(
void* buffer,
199 NPT_Size bytes_to_read,
200 NPT_Size* bytes_read = NULL)
override;
201 NPT_Result GetSize(NPT_LargeSize& size)
override {
202 size = m_Buffer.GetDataSize();
205 NPT_Result GetAvailable(NPT_LargeSize& available)
override {
206 available = (NPT_LargeSize)m_Buffer.GetDataSize()-m_ReadOffset;
211 NPT_Result Write(
const void* buffer,
212 NPT_Size bytes_to_write,
213 NPT_Size* bytes_written = NULL)
override;
216 const NPT_Byte* GetData()
const {
return m_Buffer.GetData(); }
217 NPT_Byte* UseData() {
return m_Buffer.UseData(); }
218 NPT_Size GetDataSize()
const {
return m_Buffer.GetDataSize(); }
219 NPT_Size GetBufferSize()
const {
return m_Buffer.GetBufferSize();}
222 NPT_Result SetDataSize(NPT_Size size);
226 NPT_Result InputSeek(NPT_Position offset)
override;
227 NPT_Result InputTell(NPT_Position& offset)
override {
228 offset = m_ReadOffset;
233 NPT_Result OutputSeek(NPT_Position offset)
override;
234 NPT_Result OutputTell(NPT_Position& offset)
override {
235 offset = m_WriteOffset;
242 NPT_Size m_ReadOffset;
243 NPT_Size m_WriteOffset;
259 const NPT_String& GetString()
const {
return *m_String; }
260 NPT_Result Reset() {
if (m_String) m_String->SetLength(0);
return NPT_SUCCESS; }
263 NPT_Result Write(
const void* buffer, NPT_Size bytes_to_write, NPT_Size* bytes_written = NULL)
override;
265 NPT_Result Seek(NPT_Position )
override {
return NPT_ERROR_NOT_SUPPORTED; }
266 NPT_Result Tell(NPT_Position& offset)
override { offset = m_String->GetLength();
return NPT_SUCCESS; }
270 bool m_StringIsOwned;
287 NPT_Result Read(
void* buffer,
288 NPT_Size bytes_to_read,
289 NPT_Size* bytes_read = NULL)
override;
290 NPT_Result Seek(NPT_Position offset)
override;
291 NPT_Result Tell(NPT_Position& offset)
override;
292 NPT_Result GetSize(NPT_LargeSize& size)
override;
293 NPT_Result GetAvailable(NPT_LargeSize& available)
override;
297 NPT_Position m_Position;
298 NPT_Position m_Start;
299 NPT_LargeSize m_Size;
313 NPT_Result Write(
const void* buffer, NPT_Size bytes_to_write, NPT_Size* bytes_written = NULL)
override;
315 NPT_Result Seek(NPT_Position )
override {
return NPT_ERROR_NOT_SUPPORTED; }
316 NPT_Result Tell(NPT_Position& )
override {
return NPT_ERROR_NOT_SUPPORTED; }
321 #endif // _NPT_STREAMS_H_
Definition: NptStreams.h:92
Definition: NptStreams.h:251
Definition: NptDataBuffer.h:44
Definition: NptStreams.h:184
Definition: NptStreams.h:164
Definition: NptStrings.h:57
Definition: NptStreams.h:305