ultimatepp/uppdev/CoreTopics/src.tpp/Stream$en-us.tpp
cxl 132e974caf License fixes
git-svn-id: svn://ultimatepp.org/upp/trunk@501 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2008-10-02 10:30:18 +00:00

1153 lines
No EOL
48 KiB
C++

topic "Streams";
[2 $$0,0#00000000000000000000000000000000:Default]
[i448;a25;kKO9;2 $$1,0#37138531426314131252341829483380:class]
[l288;2 $$2,0#27521748481378242620020725143825:desc]
[0 $$3,0#96390100711032703541132217272105:end]
[H6;0 $$4,0#05600065144404261032431302351956:begin]
[i448;a25;kKO9;2 $$5,0#37138531426314131252341829483370:item]
[l288;a17;*@5;1 $$6,6#70004532496200323422659154056402:requirement]
[l288;i1121;b17;O9;~~~.1408;2 $$7,0#10431211400427159095818037425705:param]
[{_}%EN-US
[s0; Streams&]
[ {{993:993:993:993:995:996:987:1013:1016:1021f0;g33;GNl17/25r17/4t17/0b17/0@7-2 [s0; [^topic`:`/`/Core`/src`/Stream`$en`-us`#`:`:Stream`:`:class Stream^1 Stream]]
::l0/25r0/25t0/15b0/15@2-1 [s0;%- ]
:: [s0;%- ]
::r/4t/0b/0 [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
::l17/25r17/4t17/0b17/0@7-2 [s0; [^topic`:`/`/Core`/src`/Stream`$en`-us`#`:`:StringStream`:`:class StringStream^1 S
tringStream]]
::l0/25r0/25t0/15b0/15@2-1 [s0;%- ]
:: [s0;%- ]
::r/4t/0b/0 [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
::l17/25r17/4t17/0b17/0@7-2 [s0; [^topic`:`/`/Core`/src`/Stream`$en`-us`#`:`:MemStream`:`:class MemStream^1 MemStre
am]]
::l0/25r0/25t0/15b0/15@2-1 [s0;%- ]
:: [s0;%- ]
::r/4t/0b/0 [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
::l17/25r17/4t17/0b17/0@7-2 [s0; [^topic`:`/`/Core`/src`/Stream`$en`-us`#`:`:MemReadStream`:`:class MemReadStream^1 M
emReadStream]]
::l0/25r0/25t0/15b0/15@2-1 [s0;%- ]
:: [s0;%- ]
::r/4t/0b/0 [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
::l17/25r17/4t17/0b17/0@7-2 [s0; [^topic`:`/`/Core`/src`/Stream`$en`-us`#`:`:BufferStream`:`:class BufferStream^1 B
ufferStream]]
::l0/25r0/25t0/15b0/15@2-1 [s0;%- ]
:: [s0;%- ]
::r/4t/0b/0 [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
::l17/25r17/4t17/0b17/0@7-2 [s0; [^topic`:`/`/Core`/src`/Stream`$en`-us`#`:`:BlockStream`:`:class BlockStream^1 Blo
ckStream]]
::l0/25r0/25t0/15b0/15@2-1 [s0;%- ]
:: [s0;%- ]
::r/4t/0b/0 [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
::l17/25r17/4t17/0b17/0@7-2 [s0; [^topic`:`/`/Core`/src`/Stream`$en`-us`#`:`:FileStream`:`:class FileStream^1 FileS
tream]]
::l0/25r0/25t0/15b0/15@2-1 [s0;%- ]
:: [s0;%- ]
::r/4t/0b/0 [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
::l17/25r17/4t17/0b17/0@7-2 [s0; [^topic`:`/`/Core`/src`/Stream`$en`-us`#`:`:FileIn`:`:class FileIn^1 FileIn]]
::l0/25r0/25t0/15b0/15@2-1 [s0;%- ]
:: [s0;%- ]
::r/4t/0b/0 [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
::l17/25r17/4t17/0b17/0@7-2 [s0; [^topic`:`/`/Core`/src`/Stream`$en`-us`#`:`:FileOut`:`:class FileOut^1 FileOut]]
::l0/25r0/25t0/15b0/15@2-1 [s0;%- ]
:: [s0;%- ]
::r/4t/0b/0 [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
::l17/25r17/4t17/0b17/0@7-2 [s0; [^topic`:`/`/Core`/src`/Stream`$en`-us`#`:`:FileAppend`:`:class FileAppend^1 FileA
ppend]]
::l0/25r0/25t0/15b0/15@2-1 [s0;%- ]
:: [s0;%- ]
::r/4t/0b/0 [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
::l17/25r17/4t17/0b17/0@7-2 [s0; [^topic`:`/`/Core`/src`/Stream`$en`-us`#`:`:SizeStream`:`:class SizeStream^1 SizeS
tream]]
::l0/25r0/25t0/15b0/15@2-1 [s0;%- ]
:: [s0;%- ]
::r/4t/0b/0 [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
::l17/25r17/4t17/0b17/0@7-2 [s0; [^topic`:`/`/Core`/src`/Stream`$en`-us`#`:`:CompareStream`:`:class CompareStream^1 C
ompareStream]]
::l0/25r0/25t0/15b0/15@2-1 [s0;%- ]
:: [s0;%- ]
::r/4t/0b/0 [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]
:: [s0; ]}}&]
[s0; &]
[s0; &]
[s5;K%- [@(0.0.255) class][@(64) _]Stream&]
[s2; &]
[s2; Stream is the base class of all U`+`+ streams.&]
[s2; U`+`+ streams generally serve in two different roles:&]
[s2;i150;O0; As basic raw binary streams, which includes text input
and output.&]
[s2;i150;O0; As binary serialization target/source. This mainly needs
to store flag indicating serialization direction.&]
[s2; In order to achieve optimal performance of buffered stream operations,
the most frequent operations have a little bit more complicated
implementation that demands proper definition of virtual methods,
as they must correctly adjust some protected data members of
Stream. Therefore the implementation of some method can be considered
a part of interface definition:&]
[s0; &]
[s0; [*C@5 void Stream`::Put(int c)]&]
[s0; [*C@5 `{]&]
[s0; [*C@5 -|if(ptr < wrlim)]&]
[s0; [*C@5 -|-|`*ptr`+`+ `= c;]&]
[s0; [*C@5 -|else]&]
[s0; [*C@5 -|-|`_Put(c);]&]
[s0; [*C@5 `}]&]
[s0;*C@5 &]
[s0; [*C@5 int Stream`::Term()]&]
[s0; [*C@5 `{]&]
[s0; [*C@5 -|return ptr < rdlim ? `*ptr : `_Term();]&]
[s0; [*C@5 `}]&]
[s0;*C@5 &]
[s0; [*C@5 int Stream`::Get()]&]
[s0; [*C@5 `{]&]
[s0; [*C@5 -|return ptr < rdlim ? `*ptr`+`+ : `_Get();]&]
[s0; [*C@5 `}]&]
[s0;*C@5 &]
[s0; [*C@5 int64 Stream`::GetPos() const]&]
[s0; [*C@5 `{]&]
[s0; [*C@5 -|return dword(ptr `- buffer) `+ pos;]&]
[s0; [*C@5 `}]&]
[s0; &]
[s0; &]
[s0;%- Protected members for Stream implementation&]
[s0; &]
[s5;K%- [^`:`:int64^ int64]_pos&]
[s0;%- Protected.&]
[s2; Position of buffer in the stream.&]
[s0; &]
[s5;K%- [^`:`:byte^ byte]_`*buffer&]
[s0; Protected.&]
[s2; Pointer to beginning of buffer.&]
[s0; &]
[s5;K%- [^`:`:byte^ byte]_`*ptr&]
[s0; Protected.&]
[s2; Pointer to current input/output byte.&]
[s0; &]
[s5;K%- [^`:`:byte^ byte]_`*rdlim&]
[s0; Protected.&]
[s2; Read limit. [* Get] method returns values from buffer as long
as [* ptr < rdlim].&]
[s0; &]
[s5;K%- [^`:`:byte^ byte]_`*wrlim&]
[s0; Protected.&]
[s2; Write limit. [* Put] method returns values from buffer as long
as [* ptr < wrlim].&]
[s0; &]
[s5;K%- virtual [@(0.0.255) void][@(64) _]`_Put[@(64) (][@(0.0.255) int][@(64) _][@3 w][@(64) )]&]
[s2; Called by [* Put] method in case that output byte cannot be stored
into buffer ([* ptr >`= wrlim]). If Stream wants to use buffering,
this method should adjust [* buffer], [* ptr] and [* wrlim].&]
[s7; [%-*C@3 w]-|Byte to store.&]
[s0; &]
[s5;K%- virtual [@(0.0.255) int][@(64) _]`_Term[@(64) ()]&]
[s2; Called by [* Term] method in case that input byte is not in buffer
([* ptr >`= rdlim]). If Stream wants to use buffering, this method
should adjust [* buffer], [* ptr] and [* rdlim].&]
[s7; [*/ Return value]-|Value at current position in the stream. Current
position is not advanced.&]
[s0; &]
[s5;K%- virtual [@(0.0.255) int][@(64) _]`_Get[@(64) ()]&]
[s2; Called by [* Get] method in case that input byte is not in buffer
([* ptr >`= rdlim]). If Stream wants to use buffering, this method
should adjust [* buffer], [* ptr] and [* rdlim].&]
[s7; [*/ Return value]-|Value read from the stream.&]
[s0; &]
[s5;K%- virtual [@(0.0.255) void][@(64) _]`_Put[@(64) (][@(0.0.255) const][@(64) _][@(0.0.255) vo
id][@(64) _`*][@3 data][@(64) , ][^`:`:dword^@(64) dword][@(64) _][@3 size][@(64) )]&]
[s2; Directly called by [* Put] method. Writes a block of binary data.&]
[s7; [%-*C@3 data]-|Pointer to data.&]
[s7; [%-*C@3 size]-|Size.&]
[s0; &]
[s5;K%- virtual [^`:`:dword^ dword]_`_Get[@(64) (][@(0.0.255) void][@(64) _`*][@3 data][@(64) ,
][^`:`:dword^@(64) dword][@(64) _][@3 size][@(64) )]&]
[s2; Directly called by [* Get] method. &]
[s7; [%-*C@3 data]-|&]
[s7; [%-*C@3 size]-|&]
[s7; [*/ Return value]-|&]
[s2; &]
[s0; Raw stream&]
[s0; &]
[s5;K%- virtual [@(0.0.255) void][@(64) _]Seek[@(64) (][^`:`:int64^@(64) int64][@(64) _][@3 pos][@(64) )
]&]
[s2; Seeks to given position.&]
[s7; [%-*C@3 pos]-|Position.&]
[s0; &]
[s5;K%- virtual [^`:`:int64^ int64]_GetSize[@(64) ()_][@(0.0.255) const]&]
[s7; [*/ Return value]-|Size of stream.&]
[s0; &]
[s5;K%- virtual [@(0.0.255) void][@(64) _]SetSize[@(64) (][^`:`:int64^@(64) int64][@(64) _][@3 si
ze][@(64) )]&]
[s2; Alters the size of the stream.&]
[s7; [%-*C@3 size]-|New size.&]
[s0; &]
[s5;K%- virtual [@(0.0.255) void][@(64) _]Flush[@(64) ()]&]
[s2; If stream has any internal buffers (like FileStream), writes
these bufers to OS.&]
[s0; &]
[s5;K%- virtual [@(0.0.255) void][@(64) _]Close[@(64) ()]&]
[s2; Closes stream.&]
[s0; &]
[s5;K%- virtual [@(0.0.255) bool][@(64) _]IsOpen[@(64) ()_][@(0.0.255) const][@(64) _`=_][@3 0]&]
[s7; [*/ Return value]-|true if stream is open.&]
[s0; &]
[s5;K%- [@(0.0.255) bool][@(64) _]IsError[@(64) ()_][@(0.0.255) const]&]
[s7; [*/ Return value]-|true if error was encountered during stream
operations since opening it or last ClearError call `- error
code is non`-zero.&]
[s0; &]
[s5;K%- [@(0.0.255) bool][@(64) _]IsOK[@(64) ()_][@(0.0.255) const]&]
[s7; [*/ Return value]-|!IsError().&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]SetError[@(64) (][@(0.0.255) int][@(64) _][@3 c][@(64) _`=_][@3 0][@(64) )
]&]
[s2; Sets stream error code.&]
[s7; [%-*C@3 c]-|Error code.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]SetLastError[@(64) ()]&]
[s2; Sets stream error to last OS`-specific error (obtained e.g.
by GetLastError call in Win32 or in errno in Posix). This error
can be interpreted by GetErrorMessage function.&]
[s0; &]
[s5;K%- [@(0.0.255) int][@(64) _]GetError[@(64) ()_][@(0.0.255) const]&]
[s7; [*/ Return value]-|Current error`-code. Zero indicates no error.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]ClearError[@(64) ()]&]
[s2; Clears error code.&]
[s0; &]
[s5;K%- [^`:`:int64^ int64]_GetPos[@(64) ()_][@(0.0.255) const]&]
[s7; [*/ Return value]-|Current position in the stream.&]
[s0; &]
[s5;K%- [@(0.0.255) bool][@(64) _]IsEof[@(64) ()_][@(0.0.255) const]&]
[s7; [*/ Return value]-|There are no more byte to be read from the stream.
Is also true in case of error.&]
[s0; &]
[s5;K%- [^`:`:int64^ int64]_GetLeft[@(64) ()_][@(0.0.255) const]&]
[s7; [*/ Return value]-|Bytes between current position and the end of
stream `- equivalent to GetSize() `- GetPos().&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]SeekEnd[@(64) (][^`:`:int64^@(64) int64][@(64) _][@3 rel][@(64) _
`=_][@3 0][@(64) )]&]
[s2; Sets current position in the stream relative to the end of stream.
Same as Seek(GetSize() `+ rel).&]
[s7; [%-*C@3 rel]-|Position `- should be less or equal to zero.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]SeekCur[@(64) (][^`:`:int64^@(64) int64][@(64) _][@3 rel][@(64) )
]&]
[s2; Sets current position in the stream relative to the current
position. Same as Seek(GetPos() `+ rel).&]
[s7; [%-*C@3 rel]-|Relative offset.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Put[@(64) (][@(0.0.255) int][@(64) _][@3 c][@(64) )]&]
[s2; Puts single byte into the output stream.&]
[s7; [%-*C@3 c]-|Byte.&]
[s0; &]
[s5;K%- [@(0.0.255) int][@(64) _]Term[@(64) ()]&]
[s2; Peeks byte from input stream not advancing current position.
If there are no more bytes in input stream or error occurred,
negative value is returned.&]
[s7; [*/ Return value]-|Byte at current position in the stream.&]
[s0; &]
[s5;K%- [@(0.0.255) int][@(64) _]Get[@(64) ()]&]
[s2; Reads single byte from input stream, advancing current position.
If there are no more bytes in input stream or error occurred,
negative value is returned.&]
[s7; [*/ Return value]-|Byte read from input stream.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Put[@(64) (][@(0.0.255) const][@(64) _][@(0.0.255) void][@(64) _`*
][@3 data][@(64) , ][^`:`:dword^@(64) dword][@(64) _][@3 size][@(64) )]&]
[s2; Writes a block of raw binary data to the output stream.&]
[s7; [%-*C@3 data]-|Pointer to data.&]
[s7; [%-*C@3 size]-|Number of bytes to write.&]
[s0; &]
[s5;K%- [^`:`:dword^ dword]_Get[@(64) (][@(0.0.255) void][@(64) _`*][@3 data][@(64) ,
][^`:`:dword^@(64) dword][@(64) _][@3 size][@(64) )]&]
[s2; Reads a block of raw binary data from the input stream.&]
[s7; [%-*C@3 data]-|Pointer to buffer to receive the data.&]
[s7; [%-*C@3 size]-|Number of bytes to read.&]
[s7; [*/ Return value]-|Number of bytes actually read (lower or equal
to the requested [*@3 size]).&]
[s0; &]
[s5;K:`:`:Stream`:`:Get`(`:`:dword`):%- [^`:`:String^ String]_Get[@(64) (][^`:`:dword^@(64) d
word][@(64) _][@3 size][@(64) )]&]
[s2; Reads a block of raw binary data from the input stream. The
number of bytes read is the length of String.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]LoadThrowing[@(64) ()]&]
[s2; Sets stream into the mode that throws LoadingError exception
when LoadError is invoked. This mode is typical for serialization
usage of stream.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]LoadError[@(64) ()]&]
[s2; Performs SetError(ERROR`_LOADING`_FAILED). If Stream set to
the LoadThrowing mode (by LoadThrowing() method), LoadingError
exception is thrown.&]
[s0; &]
[s5;K%- [@(0.0.255) bool][@(64) _]GetAll[@(64) (][@(0.0.255) void][@(64) _`*][@3 data][@(64) ,
][^`:`:dword^@(64) dword][@(64) _][@3 size][@(64) )]&]
[s2; Reads a block of raw binary data from the stream. If there is
not enough data in the stream, LoadError is invoked (that in
turn might throw an exception).&]
[s7; [%-*C@3 data]-|Pointer to buffer to receive the data.&]
[s7; [%-*C@3 size]-|Number of bytes to read.&]
[s7; [*/ Return value]-|true if required number of bytes was read.&]
[s0; &]
[s5;K%- [@(0.0.255) int][@(64) _]Get8[@(64) ()]&]
[s2; Reads a single byte from the stream. If there is not enough
data in the stream, LoadError is invoked (that in turn might
throw an exception) `- this is the difference from Get() method.&]
[s7; [*/ Return value]-|Byte from stream or `-1.&]
[s0; &]
[s5;K%- [@(0.0.255) int][@(64) _]Get16[@(64) ()]&]
[s2; Reads 16`-bit value from the stream in platform specific format
(either little`-endian or big`-endian). If there is not enough
data in the stream, LoadError is invoked (that in turn might
throw an exception).&]
[s7; [*/ Return value]-|16`-bit value.&]
[s0; &]
[s5;K%- [@(0.0.255) int][@(64) _]Get32[@(64) ()]&]
[s2; Reads 32`-bit value from the stream in platform specific format
(either little`-endian or big`-endian). If there is not enough
data in the stream, LoadError is invoked (that in turn might
throw an exception).&]
[s7; [*/ Return value]-|32`-bit value.&]
[s0; &]
[s5;K%- [^`:`:int64^ int64]_Get64[@(64) ()]&]
[s2; Reads 64`-bit value from the stream in platform specific format
(either little`-endian or big`-endian). If there is not enough
data in the stream, LoadError is invoked (that in turn might
throw an exception).&]
[s7; [*/ Return value]-|64`-bit value.&]
[s0; &]
[s5;K%- [@(0.0.255) int][@(64) _]Get16le[@(64) ()]&]
[s2; Reads 16`-bit value from the stream in the little`-endian mode.
If there is not enough data in the stream, LoadError is invoked
(that in turn might throw an exception).&]
[s7; [*/ Return value]-|16`-bit value.&]
[s0; &]
[s5;K%- [@(0.0.255) int][@(64) _]Get32le[@(64) ()]&]
[s2; Reads 32`-bit value from the stream in the little`-endian mode.
If there is not enough data in the stream, LoadError is invoked
(that in turn might throw an exception).&]
[s7; [*/ Return value]-|32`-bit value.&]
[s0; &]
[s5;K%- [^`:`:int64^ int64]_Get64le[@(64) ()]&]
[s2; Reads 64`-bit value from the stream in the little`-endian mode.
If there is not enough data in the stream, LoadError is invoked
(that in turn might throw an exception).&]
[s7; [*/ Return value]-|64`-bit value.&]
[s0; &]
[s5;K%- [@(0.0.255) int][@(64) _]Get16be[@(64) ()]&]
[s2; Reads 16`-bit value from the stream in the big`-endian mode.
If there is not enough data in the stream, LoadError is invoked
(that in turn might throw an exception).&]
[s7; [*/ Return value]-|16`-bit value.&]
[s0; &]
[s5;K%- [@(0.0.255) int][@(64) _]Get32be[@(64) ()]&]
[s2; Reads 32`-bit value from the stream in the big`-endian mode.
If there is not enough data in the stream, LoadError is invoked
(that in turn might throw an exception).&]
[s7; [*/ Return value]-|32`-bit value.&]
[s0; &]
[s5;K%- [^`:`:int64^ int64]_Get64be[@(64) ()]&]
[s2; Reads 32`-bit value from the stream in the big`-endian mode.
If there is not enough data in the stream, LoadError is invoked
(that in turn might throw an exception).&]
[s7; [*/ Return value]-|64`-bit value.&]
[s0; &]
[s5;K%- [^`:`:String^ String]_GetLine[@(64) ()]&]
[s2; Reads single line from the stream. Line is delimited by `'`\n`'
character or the end of file (or error). `'`\r`' characters are
ignored.&]
[s7; [*/ Return value]-|Line from the stream.&]
[s0; &]
[s5;K%- [@(0.0.255) int][@(64) _]GetUtf8[@(64) ()]&]
[s2; Reads single utf`-8 encoded value from the stream.&]
[s7; [*/ Return value]-|Utf`-8 value.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Put16[@(64) (][^word^@(64) word][@(64) _][@3 q][@(64) )]&]
[s2; Writes 16`-bit value in platform specific format (either little`-endian
or big`-endian).&]
[s7; [%-*C@3 q]-|Value to write.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Put32[@(64) (][@(0.0.255) int][@(64) _][@3 q][@(64) )]&]
[s2; Writes 32`-bit value in platform specific format (either little`-endian
or big`-endian).&]
[s7; [%-*C@3 q]-|Value to write.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Put64[@(64) (][^`:`:int64^@(64) int64][@(64) _][@3 q][@(64) )]&]
[s2; Writes 64`-bit value in platform specific format (either little`-endian
or big`-endian).&]
[s7; [%-*C@3 q]-|Value to write.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Put16le[@(64) (][^word^@(64) word][@(64) _][@3 q][@(64) )]&]
[s2; Writes 16`-bit value in little`-endian mode.&]
[s7; [%-*C@3 q]-|Value to write.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Put32le[@(64) (][@(0.0.255) int][@(64) _][@3 q][@(64) )]&]
[s2; Writes 32`-bit value in little`-endian mode.&]
[s7; [%-*C@3 q]-|Value to write.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Put64le[@(64) (][^`:`:int64^@(64) int64][@(64) _][@3 q][@(64) )]&]
[s2; Writes 64`-bit value in little`-endian mode.&]
[s7; [%-*C@3 q]-|Value to write.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Put16be[@(64) (][^word^@(64) word][@(64) _][@3 q][@(64) )]&]
[s2; Writes 16`-bit value in big`-endian mode.&]
[s7; [%-*C@3 q]-|Value to write.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Put32be[@(64) (][@(0.0.255) int][@(64) _][@3 q][@(64) )]&]
[s2; Writes 32`-bit value in big`-endian mode.&]
[s7; [%-*C@3 q]-|Value to write.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Put64be[@(64) (][^`:`:int64^@(64) int64][@(64) _][@3 q][@(64) )]&]
[s2; Writes 64`-bit value in big`-endian mode.&]
[s7; [%-*C@3 q]-|Value to write.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]PutUtf8[@(64) (][@(0.0.255) int][@(64) _][@3 c][@(64) )]&]
[s2; Puts a single utf`-8 value to the stream.&]
[s7; [%-*C@3 c]-|Value.&]
[s0; &]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Put[@(64) (][@(0.0.255) const][@(64) _][@(0.0.255) char][@(64) _`*
][@3 s][@(64) )]&]
[s2; Writes zero terminated string to the stream (zero is not written).&]
[s7; [%-*C@3 s]-|String to write.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Put[@(64) (][@(0.0.255) const][@(64) _][^`:`:String^@(64) Strin
g][@(64) `&_][@3 s][@(64) )]&]
[s2; Writes String to the the stream. String can contain zero characters.&]
[s7; [%-*C@3 s]-|String to write.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Put[@(64) (][@(0.0.255) int][@(64) _][@3 c][@(64) ,
][@(0.0.255) int][@(64) _][@3 count][@(64) )]&]
[s2; Writes single byte to the stream requested number of times.&]
[s7; [%-*C@3 c]-|Byte to write.&]
[s7; [%-*C@3 count]-|Repeat count.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Put0[@(64) (][@(0.0.255) int][@(64) _][@3 count][@(64) )]&]
[s2; Writes zero byte to the stream requested number of times. This
variation is mainly provided because Put(0, count) causes ambiguity
as 0 is considered as NULL pointer too...&]
[s7; [%-*C@3 count]-|Repeat count.&]
[s0; &]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]PutW[@(64) (][@(0.0.255) const][@(64) _][^`:`:wchar^@(64) wchar
][@(64) _`*][@3 s][@(64) , ][@(0.0.255) int][@(64) _][@3 count][@(64) )]&]
[s2; Writes a specified number of wchars (16`-bit character values)
to the stream in platform specific format (little`-endian or
big`-endian).&]
[s7; [%-*C@3 s]-|String to write.&]
[s7; [%-*C@3 count]-|Length of string.&]
[s0; &]
[s5;K%- [^`:`:dword^ dword]_GetW[@(64) (][^`:`:wchar^@(64) wchar][@(64) _`*][@3 s][@(64) ,
][@(0.0.255) int][@(64) _][@3 count][@(64) )]&]
[s2; Reads a specified number of wchars (16`-bit character values)
from the stream in platform specific format.&]
[s7; [%-*C@3 s]-|Pointer to buffer to receive wchars.&]
[s7; [%-*C@3 count]-|Number of wchars.&]
[s7; [*/ Return value]-|Number of wchars actually read.&]
[s0; &]
[s5;K%- [@(0.0.255) bool][@(64) _]GetAllW[@(64) (][^`:`:wchar^@(64) wchar][@(64) _`*][@3 s][@(64) ,
][@(0.0.255) int][@(64) _][@3 count][@(64) )]&]
[s2; Reads a specified number of wchars (16`-bit character values)
from the stream in platform specific format. If there is not
enough data in the stream, LoadError is invoked (that in turn
might throw an exception).&]
[s7; [%-*C@3 s]-|&]
[s7; [%-*C@3 count]-|&]
[s7; [*/ Return value]-|&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]PutCrLf[@(64) ()]&]
[s2; Writes CR`-LF pair to the stream. &]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]PutEol[@(64) ()]&]
[s2; Writes platform specific `"end of line`" to the stream. It is
CR`-LF pair on Win32 platform or single LF on Posix platform.&]
[s0; &]
[s5;K:`:`:Stream`:`:operator`<`<`(EOLenum`):%- [^`:`:Stream^ Stream]`&_operator<<[@(64) (
][^EOLenum^@(64) EOLenum][@(64) )]&]
[s2; This is the same as PutEol. EOLenum contains single value, EOL.
This is operator allows more convenient way to express PutEol
in the chain of << operators.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]PutLine[@(64) (][@(0.0.255) const][@(64) _][@(0.0.255) char][@(64) _
`*][@3 s][@(64) )]&]
[s2; Writes a line to stream `- equivalent of Put(s); PutEol();&]
[s7; [%-*C@3 s]-|Zero`-terminated string.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]PutLine[@(64) (][@(0.0.255) const][@(64) _][^`:`:String^@(64) S
tring][@(64) `&_][@3 s][@(64) )]&]
[s2; Writes a line to stream `- equivalent of Put(s); PutEol();&]
[s7; [%-*C@3 s]-|String.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Put[@(64) (][^`:`:Stream^@(64) Stream][@(64) `&_][@3 s][@(64) ,
][^`:`:int64^@(64) int64][@(64) _][@3 size][@(64) _`=_INT64`_MAX, ][^`:`:dword^@(64) dword][@(64) _
][@3 click][@(64) _`=_][@3 4096][@(64) )]&]
[s2; Writes a content of specified stream to the stream.&]
[s7; [%-*C@3 s]-|Input stream.&]
[s7; [%-*C@3 size]-|Maximum number of bytes to write. Default value
INT64`_MAX means whole input stream from current position to
the end is written.&]
[s7; [%-*C@3 click]-|Size of buffer used for copying.&]
[s0; Formated output&]
[s0; &]
[s0; Serialization support:&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]SetLoading[@(64) ()]&]
[s2; Sets the stream into the loading mode.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]SetStoring[@(64) ()]&]
[s2; Sets the stream into the storing mode.&]
[s0; &]
[s5;K%- [@(0.0.255) bool][@(64) _]IsLoading[@(64) ()]&]
[s7; [*/ Return value]-|true if stream is in loading mode.&]
[s0; &]
[s5;K%- [@(0.0.255) bool][@(64) _]IsStoring[@(64) ()]&]
[s7; [*/ Return value]-|true if stream is in storing mode.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]SerializeRaw[@(64) (][^`:`:byte^@(64) byte][@(64) _`*][@3 data][@(64) ,
][^`:`:dword^@(64) dword][@(64) _][@3 count][@(64) )]&]
[s2; Serializes raw 8`-bit data. Might invoke LoadError if there
is not enough data to load.&]
[s7; [%-*C@3 data]-|Pointer to data to store or buffer to receive loaded
data.&]
[s7; [%-*C@3 count]-|Number of bytes to load/store.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]SerializeRaw[@(64) (][^word^@(64) word][@(64) _`*][@3 data][@(64) ,
][^`:`:dword^@(64) dword][@(64) _][@3 count][@(64) )]&]
[s2; Serializes raw 16`-bit data. Might invoke LoadError if there
is not enough data to load.&]
[s7; [%-*C@3 data]-|Pointer to data to store or buffer to receive loaded
data.&]
[s7; [%-*C@3 count]-|Number of values to load/store.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]SerializeRaw[@(64) (][^`:`:dword^@(64) dword][@(64) _`*][@3 dat
a][@(64) , ][^`:`:dword^@(64) dword][@(64) _][@3 count][@(64) )]&]
[s2; Serializes raw 32`-bit data. Might invoke LoadError if there
is not enough data to load.&]
[s7; [%-*C@3 data]-|Pointer to data to store or buffer to receive loaded
data.&]
[s7; [%-*C@3 count]-|Number of values to load/store.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]SerializeRaw[@(64) (][^`:`:uint64^@(64) uint64][@(64) _`*][@3 d
ata][@(64) , ][^`:`:dword^@(64) dword][@(64) _][@3 count][@(64) )]&]
[s2; Serializes raw 64`-bit data. Might invoke LoadError if there
is not enough data to load.&]
[s7; [%-*C@3 data]-|Pointer to data to store or buffer to receive loaded
data.&]
[s7; [%-*C@3 count]-|Number of values to load/store.&]
[s0; &]
[s5;K%- [^`:`:Stream^ Stream]`&_operator%[@(64) (][@(0.0.255) bool][@(64) `&_][@3 d][@(64) )]&]
[s2; Serializes bool variable. Might invoke LoadError if there is
not enough data to load.&]
[s7; [%-*C@3 d]-|Variable to serialize.&]
[s7; [*/ Return value]-|`*this for chaining.&]
[s0; &]
[s5;K%- [^`:`:Stream^ Stream]`&_operator%[@(64) (][@(0.0.255) char][@(64) `&_][@3 d][@(64) )]&]
[s2; Serializes char variable. Might invoke LoadError if there is
not enough data to load.&]
[s7; [%-*C@3 d]-|Variable to serialize.&]
[s7; [*/ Return value]-|`*this for chaining.&]
[s0; &]
[s5;K%- [^`:`:Stream^ Stream]`&_operator%[@(64) (][@(0.0.255) signed][@(64) _][@(0.0.255) char][@(64) `&
_][@3 d][@(64) )]&]
[s2; Serializes signed char variable. Might invoke LoadError if there
is not enough data to load.&]
[s7; [%-*C@3 d]-|Variable to serialize.&]
[s7; [*/ Return value]-|`*this for chaining.&]
[s0; &]
[s5;K%- [^`:`:Stream^ Stream]`&_operator%[@(64) (][@(0.0.255) unsigned][@(64) _][@(0.0.255) cha
r][@(64) `&_][@3 d][@(64) )]&]
[s2; Serializes unsigned char variable. Might invoke LoadError if
there is not enough data to load.&]
[s7; [%-*C@3 d]-|Variable to serialize.&]
[s7; [*/ Return value]-|`*this for chaining.&]
[s0; &]
[s5;K%- [^`:`:Stream^ Stream]`&_operator%[@(64) (][@(0.0.255) short][@(64) `&_][@3 d][@(64) )]&]
[s2; Serializes short variable. Might invoke LoadError if there is
not enough data to load.&]
[s7; [%-*C@3 d]-|Variable to serialize.&]
[s7; [*/ Return value]-|`*this for chaining.&]
[s0; &]
[s5;K%- [^`:`:Stream^ Stream]`&_operator%[@(64) (][@(0.0.255) unsigned][@(64) _][@(0.0.255) sho
rt][@(64) `&_][@3 d][@(64) )]&]
[s2; Serializes unsigned short variable. Might invoke LoadError if
there is not enough data to load.&]
[s7; [%-*C@3 d]-|Variable to serialize.&]
[s7; [*/ Return value]-|`*this for chaining.&]
[s0; &]
[s5;K%- [^`:`:Stream^ Stream]`&_operator%[@(64) (][@(0.0.255) int][@(64) `&_][@3 d][@(64) )]&]
[s2; Serializes int variable. Might invoke LoadError if there is
not enough data to load.&]
[s7; [%-*C@3 d]-|Variable to serialize.&]
[s7; [*/ Return value]-|`*this for chaining.&]
[s0; &]
[s5;K%- [^`:`:Stream^ Stream]`&_operator%[@(64) (][@(0.0.255) unsigned][@(64) _][@(0.0.255) int
][@(64) `&_][@3 d][@(64) )]&]
[s2; Serializes unsigned int variable. Might invoke LoadError if
there is not enough data to load.&]
[s7; [%-*C@3 d]-|Variable to serialize.&]
[s7; [*/ Return value]-|`*this for chaining.&]
[s0; &]
[s5;K%- [^`:`:Stream^ Stream]`&_operator%[@(64) (][@(0.0.255) long][@(64) `&_][@3 d][@(64) )]&]
[s2; Serializes long variable. Might invoke LoadError if there is
not enough data to load.&]
[s7; [%-*C@3 d]-|Variable to serialize.&]
[s7; [*/ Return value]-|`*this for chaining.&]
[s0; &]
[s5;K%- [^`:`:Stream^ Stream]`&_operator%[@(64) (][@(0.0.255) unsigned][@(64) _][@(0.0.255) lon
g][@(64) `&_][@3 d][@(64) )]&]
[s2; Serializes unsigned long variable. Might invoke LoadError if
there is not enough data to load.&]
[s7; [%-*C@3 d]-|Variable to serialize.&]
[s7; [*/ Return value]-|`*this for chaining.&]
[s0; &]
[s5;K%- [^`:`:Stream^ Stream]`&_operator%[@(64) (][@(0.0.255) float][@(64) `&_][@3 d][@(64) )]&]
[s2; Serializes float variable. Might invoke LoadError if there is
not enough data to load.&]
[s7; [%-*C@3 d]-|Variable to serialize.&]
[s7; [*/ Return value]-|`*this for chaining.&]
[s0; &]
[s5;K%- [^`:`:Stream^ Stream]`&_operator%[@(64) (][@(0.0.255) double][@(64) `&_][@3 d][@(64) )]&]
[s2; Serializes double variable. Might invoke LoadError if there
is not enough data to load.&]
[s7; [%-*C@3 d]-|Variable to serialize.&]
[s7; [*/ Return value]-|`*this for chaining.&]
[s0; &]
[s5;K%- [^`:`:Stream^ Stream]`&_operator%[@(64) (][^`:`:int64^@(64) int64][@(64) `&_][@3 d][@(64) )
]&]
[s2; Serializes int64 variable. Might invoke LoadError if there is
not enough data to load.&]
[s7; [%-*C@3 d]-|Variable to serialize.&]
[s7; [*/ Return value]-|`*this for chaining.&]
[s0; &]
[s5;K%- [^`:`:Stream^ Stream]`&_operator%[@(64) (][^`:`:uint64^@(64) uint64][@(64) `&_][@3 d][@(64) )
]&]
[s2; Serializes uint64 variable. Might invoke LoadError if there
is not enough data to load.&]
[s7; [%-*C@3 d]-|Variable to serialize.&]
[s7; [*/ Return value]-|`*this for chaining.&]
[s0; &]
[s5;K%- [^`:`:Stream^ Stream]`&_operator%[@(64) (][^`:`:String^@(64) String][@(64) `&_][@3 s][@(64) )
]&]
[s2; Serializes String variable. Might invoke LoadError if there
is not enough data to load or input data are invalid.&]
[s7; [%-*C@3 d]-|Variable to serialize.&]
[s7; [*/ Return value]-|`*this for chaining.&]
[s0; &]
[s5;K%- [^`:`:Stream^ Stream]`&_operator/[@(64) (][^`:`:String^@(64) String][@(64) `&_][@3 s][@(64) )
]&]
[s2; Serializes String variable using RLE compression and packed
format for length. Might invoke LoadError if there is not enough
data to load or input data are invalid.&]
[s7; [%-*C@3 s]-|Variable to serialize.&]
[s7; [*/ Return value]-|`*this for chaining.&]
[s0; &]
[s5;K%- [^`:`:Stream^ Stream]`&_operator%[@(64) (][^`:`:WString^@(64) WString][@(64) `&_][@3 s][@(64) )
]&]
[s2; Serializes WString variable. Might invoke LoadError if there
is not enough data to load or input data are invalid.&]
[s7; [%-*C@3 d]-|Variable to serialize.&]
[s7; [*/ Return value]-|`*this for chaining.&]
[s0; &]
[s5;K%- [^`:`:Stream^ Stream]`&_operator/[@(64) (][^`:`:WString^@(64) WString][@(64) `&_][@3 s][@(64) )
]&]
[s2; Serializes String variable using RLE compression and packed
format for length. Might invoke LoadError if there is not enough
data to load or input data are invalid.&]
[s7; [%-*C@3 s]-|Variable to serialize.&]
[s7; [*/ Return value]-|`*this for chaining.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Pack[@(64) (][^`:`:dword^@(64) dword][@(64) `&_][@3 i][@(64) )]&]
[s2; Serializes dword value using format optimized for storing small
values. Values 0..254 are stored as serializes as single byte,
other values result in 5 bytes. Might invoke LoadError if there
is not enough data to load or input data are invalid.&]
[s7; [%-*C@3 i]-|Variable to serialize.&]
[s0; &]
[s5;K%- [^`:`:Stream^ Stream]`&_operator/[@(64) (][@(0.0.255) int][@(64) `&_][@3 i][@(64) )]&]
[s2; Serializes int value using format optimized for storing small
values. Might invoke LoadError if there is not enough data to
load or input data are invalid.&]
[s7; [%-*C@3 i]-|Variable to serialize.&]
[s7; [*/ Return value]-|`*this for chaining.&]
[s0; &]
[s5;K%- [^`:`:Stream^ Stream]`&_operator/[@(64) (][@(0.0.255) unsigned][@(64) _][@(0.0.255) int
][@(64) `&_][@3 i][@(64) )]&]
[s2; Serializes unsigned int value using format optimized for storing
small values. Might invoke LoadError if there is not enough data
to load or input data are invalid.&]
[s7; [%-*C@3 i]-|Variable to serialize.&]
[s7; [*/ Return value]-|`*this for chaining.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Magic[@(64) (][^`:`:dword^@(64) dword][@(64) _][@3 magic][@(64) _
`=_][@3 0][@(64) x7d674d7b)]&]
[s2; Serializes `"magic value`" to ensure stream integrity. When
loading, this value is loaded and checked `- mismatch results
in invoking LoadError.&]
[s7; [%-*C@3 magic]-|Magic value.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Pack[@(64) (][@(0.0.255) bool][@(64) `&_][@3 a][@(64) ,
][@(0.0.255) bool][@(64) `&_][@3 b][@(64) , ][@(0.0.255) bool][@(64) `&_][@3 c][@(64) ,
][@(0.0.255) bool][@(64) `&_][@3 d][@(64) , ][@(0.0.255) bool][@(64) `&_][@3 e][@(64) ,
][@(0.0.255) bool][@(64) `&_][@3 f][@(64) , ][@(0.0.255) bool][@(64) `&_][@3 g][@(64) ,
][@(0.0.255) bool][@(64) `&_][@3 h][@(64) )]&]
[s2; Serializes a set of boolean values compressed into single byte.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Pack[@(64) (][@(0.0.255) bool][@(64) `&_][@3 a][@(64) ,
][@(0.0.255) bool][@(64) `&_][@3 b][@(64) , ][@(0.0.255) bool][@(64) `&_][@3 c][@(64) ,
][@(0.0.255) bool][@(64) `&_][@3 d][@(64) , ][@(0.0.255) bool][@(64) `&_][@3 e][@(64) ,
][@(0.0.255) bool][@(64) `&_][@3 f][@(64) , ][@(0.0.255) bool][@(64) `&_][@3 g][@(64) )]&]
[s2; Serializes a set of boolean values compressed into single byte.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Pack[@(64) (][@(0.0.255) bool][@(64) `&_][@3 a][@(64) ,
][@(0.0.255) bool][@(64) `&_][@3 b][@(64) , ][@(0.0.255) bool][@(64) `&_][@3 c][@(64) ,
][@(0.0.255) bool][@(64) `&_][@3 d][@(64) , ][@(0.0.255) bool][@(64) `&_][@3 e][@(64) ,
][@(0.0.255) bool][@(64) `&_][@3 f][@(64) )]&]
[s2; Serializes a set of boolean values compressed into single byte.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Pack[@(64) (][@(0.0.255) bool][@(64) `&_][@3 a][@(64) ,
][@(0.0.255) bool][@(64) `&_][@3 b][@(64) , ][@(0.0.255) bool][@(64) `&_][@3 c][@(64) ,
][@(0.0.255) bool][@(64) `&_][@3 d][@(64) , ][@(0.0.255) bool][@(64) `&_][@3 e][@(64) )]&]
[s2; Serializes a set of boolean values compressed into single byte.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Pack[@(64) (][@(0.0.255) bool][@(64) `&_][@3 a][@(64) ,
][@(0.0.255) bool][@(64) `&_][@3 b][@(64) , ][@(0.0.255) bool][@(64) `&_][@3 c][@(64) ,
][@(0.0.255) bool][@(64) `&_][@3 d][@(64) )]&]
[s2; Serializes a set of boolean values compressed into single byte.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Pack[@(64) (][@(0.0.255) bool][@(64) `&_][@3 a][@(64) ,
][@(0.0.255) bool][@(64) `&_][@3 b][@(64) , ][@(0.0.255) bool][@(64) `&_][@3 c][@(64) )]&]
[s2; Serializes a set of boolean values compressed into single byte.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Pack[@(64) (][@(0.0.255) bool][@(64) `&_][@3 a][@(64) ,
][@(0.0.255) bool][@(64) `&_][@3 b][@(64) )]&]
[s2; Serializes a set of boolean values compressed into single byte.&]
[s0; &]
[s0;:`:`:Stream`:`:Stream`(`): [* Stream]()&]
[s2; Constructor. Sets stream into Loading serialization mode and
zero level indentation. All protected variables are set to 0
/ NULL.&]
[s0; &]
[s0;:`:`:Stream`:`:`~Stream`(`): `~[* Stream]()&]
[s2; Destructor.&]
[s0; &]
[s0; &]
[s0; &]
[s0; &]
[s5;K%- [@(0.0.255) class][@(64) _]StringStream[@(64) _:_][@(0.0.255) public][@(64) _][^`:`:Stream^@(64) S
tream]&]
[s0;* &]
[s2; StringStream is stream that uses String as storage medium.&]
[s2; &]
[s0;%- [%%/ Derived from][%% ][^topic`:`/`/Core`/src`/Stream`$en`-us`#`:`:Stream`:`:class Stream^ S
tream]&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Open[@(64) (][@(0.0.255) const][@(64) _][^`:`:String^@(64) Stri
ng][@(64) `&_][@3 data][@(64) )]&]
[s2;%- Sets the content of stream to specified String and sets it
into the Loading serialization mode.&]
[s7; [%-*C@3 data]-|Content of stream.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Create[@(64) ()]&]
[s2; Creates empty StringStream and sets it into Storing serialization
mode.&]
[s0; &]
[s5;K%- [^`:`:String^ String]_GetResult[@(64) ()]&]
[s2; Returns resulting String.&]
[s7; [*/ Return value]-|Result.&]
[s0; &]
[s5;K%- operator_String()&]
[s7; [*/ Return value]-|GetResult().&]
[s0; &]
[s0;:`:`:StringStream`:`:StringStream`(`):%- [* StringStream]()&]
[s2; Consructs empty stream and sets it into Storing serialization
mode (like [* Create]).&]
[s0; &]
[s0;:`:`:StringStream`:`:StringStream`(const`:`:String`&`):%- [* StringStream](const_St
ring`&_[*@3 data])&]
[s2; Constructs stream with specified content and sets it into Loading
serialization mode (like [* Open]).&]
[s7; [%-*C@3 data]-|Content of stream.&]
[s0; &]
[s0; &]
[s0; &]
[s0; &]
[s5;K%- [@(0.0.255) class][@(64) _]MemStream[@(64) _:_][@(0.0.255) public][@(64) _][^`:`:Stream^@(64) S
tream]&]
[s2; &]
[s2; Stream that is using raw memory as its content.&]
[s2; &]
[s0;%- [%%/ Derived from][%% ][^topic`:`/`/Core`/src`/Stream`$en`-us`#`:`:Stream`:`:class Stream^ S
tream]&]
[s0; &]
[s0;:`:`:MemStream`:`:MemStream`(void`*`,int`):%- [* MemStream](void_`*[*@3 data],
int_[*@3 size])&]
[s2; Constructs [* MemStream] at specified memory buffer.&]
[s7; [%-*C@3 data]-|Pointer to the stream content.&]
[s7; [%-*C@3 size]-|Size.&]
[s0; &]
[s0; &]
[s0; &]
[s0; &]
[s5;K%- [@(0.0.255) class][@(64) _]MemReadStream[@(64) _:_][@(0.0.255) public][@(64) _][^`:`:MemStream^@(64) M
emStream]&]
[s2; &]
[s2; Read`-only stream using raw memory as content.&]
[s2; &]
[s0;%- [%%/ Derived from][%% ][^topic`:`/`/Core`/src`/Stream`$en`-us`#`:`:MemStream`:`:class MemStream^ M
emStream]&]
[s0; &]
[s0;:`:`:MemReadStream`:`:MemReadStream`(const void`*`,int`):%- [* MemReadStream](const
_void_`*[*@3 data], int_[*@3 size])&]
[s2; Constructs [* MemStream] at specified memory buffer.&]
[s7; [%-*C@3 data]-|Pointer to the stream content.&]
[s7; [%-*C@3 size]-|Size.&]
[s0; &]
[s0; &]
[s0; &]
[s0; &]
[s5;K%- [@(0.0.255) class][@(64) _]BlockStream[@(64) _:_][@(0.0.255) public][@(64) _][^`:`:Stream^@(64) S
tream]&]
[s2; &]
[s2; BlockStream implements operations needed to manage streams that
are able to read or write a block of data at random positon.
BlockStream provides buffered implementation of such stream.
It implements all virtual methods of Stream, with exception of
[* IsOpen] and [* Close], using new virtual methods [* Read], [* Write]
and [* SetStreamSize].&]
[s2; &]
[s0;%- [%%/ Derived from][%% ][^topic`:`/`/Core`/src`/Stream`$en`-us`#`:`:BufferStream`:`:class BufferStream^ B
ufferStream]&]
[s0; &]
[s0;%- enum_`{_[*@3 READ], [*@3 CREATE], [*@3 APPEND], [*@3 READWRITE], [*@3 NOWRITESHARE],
[*@3 DELETESHARE], [*@3 NOREADSHARE], [*@3 SHAREMASK]_`}&]
[s2; This enum defines basic operation modes of BlockStream (used
combined with binary or).&]
[s7;:`:`:BlockStream`:`:READ: [%-*C@3 READ]-|Read mode.&]
[s7;:`:`:BlockStream`:`:CREATE: [%-*C@3 CREATE]-|Write mode.&]
[s7;:`:`:BlockStream`:`:APPEND: [%-*C@3 APPEND]-|Append mode `- means
that initial position in the stream is at the end of it.&]
[s7;:`:`:BlockStream`:`:READWRITE: [%-*C@3 READWRITE]-|Enables subsequent
streams full access to stream.&]
[s7;:`:`:BlockStream`:`:NOWRITESHARE: [%-*C@3 NOWRITESHARE]-|Disables
subsequent streams to write to the stream.&]
[s7;:`:`:BlockStream`:`:DELETESHARE: [%-*C@3 DELETESHARE]-|Enables subsequent
streams to delete the stream.&]
[s7;:`:`:BlockStream`:`:NOREADSHARE: [%-*C@3 NOREADSHARE]-|Disables
subsequent streams to read the stream.&]
[s0; &]
[s5;K%- virtual [^`:`:dword^ dword]_Read[@(64) (][^`:`:int64^@(64) int64][@(64) _][@3 at][@(64) ,
][@(0.0.255) void][@(64) _`*][@3 ptr][@(64) , ][^`:`:dword^@(64) dword][@(64) _][@3 size][@(64) )
]&]
[s0;%- Protected.&]
[s2; Implementation of this virtual method in derived class should
read a block of data at specified position in media.&]
[s7; [%-*C@3 at]-|Position in media.&]
[s7; [%-*C@3 ptr]-|Pointer to buffer to receive data.&]
[s7; [%-*C@3 size]-|Requested size of data.&]
[s7; [*/ Return value]-|Size of data read.&]
[s0; &]
[s5;K%- virtual [@(0.0.255) void][@(64) _]Write[@(64) (][^`:`:int64^@(64) int64][@(64) _][@3 at][@(64) ,
][@(0.0.255) const][@(64) _][@(0.0.255) void][@(64) _`*][@3 data][@(64) ,
][^`:`:dword^@(64) dword][@(64) _][@3 size][@(64) )]&]
[s0; Protected.&]
[s2; Implementation of this virtual method in derived method should
write a block of data at specified position in media.&]
[s7; [%-*C@3 at]-|Position in media.&]
[s7; [%-*C@3 data]-|Pointer to data.&]
[s7; [%-*C@3 size]-|Size of data.&]
[s0; &]
[s5;K%- virtual [@(0.0.255) void][@(64) _]SetStreamSize[@(64) (][^`:`:int64^@(64) int64][@(64) _
][@3 size][@(64) )]&]
[s0; Protected.&]
[s2; Implementation of this virtual method in derived class should
adjust the size of media.&]
[s7; [%-*C@3 size]-|Requested new size of media.&]
[s0; &]
[s5;K%- [^`:`:int64^ int64]_GetStreamSize[@(64) ()_][@(0.0.255) const]&]
[s0; Protected.&]
[s2; Returns current media size. Note that this might be different
from current GetSize() `- media size adjustment can be deffered
to flushing the buffer.&]
[s7; [*/ Return value]-|Current media size.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]OpenInit[@(64) (][^`:`:dword^@(64) dword][@(64) _][@3 mode][@(64) ,
][^`:`:int64^@(64) int64][@(64) _][@3 file`_size][@(64) )]&]
[s0; Protected.&]
[s2; Initializes the BlockStream to specified mode and actual media
size.&]
[s7; [%-*C@3 mode]-|Mode.&]
[s7; [%-*C@3 file`_size]-|Actual media size.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]SetBufferSize[@(64) (][^`:`:dword^@(64) dword][@(64) _][@3 news
ize][@(64) )]&]
[s2; Sets a new size of internal buffer.&]
[s7; [%-*C@3 newsize]-|The new size of buffer.&]
[s0; &]
[s5;K%- [^`:`:dword^ dword]_GetBufferSize[@(64) ()_][@(0.0.255) const]&]
[s7; [*/ Return value]-|Size of buffer.&]
[s0; &]
[s0; &]
[s0; &]
[s0; &]
[s5;K%- [@(0.0.255) class][@(64) _]FileStream[@(64) _:_][@(0.0.255) public][@(64) _][^`:`:BlockStream^@(64) B
lockStream]&]
[s2; &]
[s2; Classical file stream.&]
[s2; &]
[s0;%- [%%/ Derived from][%% ][^topic`:`/`/Core`/src`/Stream`$en`-us`#`:`:BlockStream`:`:class BlockStream^ B
lockStream]&]
[s0; &]
[s0;:`:`:FileStream`:`:FileStream`(const char`*`,`:`:dword`):%- [* FileStream](const_ch
ar_`*[*@3 filename], dword_[*@3 mode])&]
[s2; Opens file stream in specified mode (as defined in BlockStream).&]
[s7; [%-*C@3 filename]-|The name of the file.&]
[s7; [%-*C@3 mode]-|Open mode.&]
[s0; &]
[s0;:`:`:FileStream`:`:FileStream`(const char`*`,`:`:dword`,mode`_t`):%- [* FileStream](
const_char_`*[*@3 filename], dword_[*@3 mode], mode`_t_[*@3 acm]_`=_[@3 0644])&]
[s0;%- Posix specific.&]
[s2; Opens file stream in specified mode (as defined in BlockStream)
and specific POSIX access rights.&]
[s7; [%-*C@3 filename]-|The name of the file.&]
[s7; [%-*C@3 mode]-|Open mode.&]
[s7; [%-*C@3 acm]-|Access rights.&]
[s0; &]
[s0;:`:`:FileStream`:`:FileStream`(int`):%- [* FileStream](int_[*@3 std`_handle])&]
[s0; Posix specific.&]
[s2; Assigns existing file handle to FileStream.&]
[s7; [%-*C@3 std`_handle]-|File handle of open file. FileStream takes
ownership of this handle.&]
[s0; &]
[s0;:`:`:FileStream`:`:FileStream`(`):%- [* FileStream]()&]
[s2; Creates empty unopened FileStream.&]
[s0; &]
[s5;K%- operator_[@(0.0.255) bool][@(64) ()_][@(0.0.255) const]&]
[s7; [*/ Return value]-|True if stream is open.&]
[s0; &]
[s5;K%- [^`:`:FileTime^ FileTime]_GetTime[@(64) ()_][@(0.0.255) const]&]
[s2; Returns last`-write time of stream.&]
[s7; [*/ Return value]-|Time.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]SetTime[@(64) (][@(0.0.255) const][@(64) _][^`:`:FileTime^@(64) F
ileTime][@(64) `&_][@3 tm][@(64) )]&]
[s2; Opens file stream in specified mode (as defined in BlockStream).&]
[s7; [%-*C@3 filename]-|The name of the file.&]
[s2; [%-*C@3 mode]-|Open mode.&]
[s0; &]
[s5;K%- [@(0.0.255) bool][@(64) _]Open[@(64) (][@(0.0.255) const][@(64) _][@(0.0.255) char][@(64) _
`*][@3 filename][@(64) , ][^`:`:dword^@(64) dword][@(64) _][@3 mode][@(64) ,
][^mode`_t^@(64) mode`_t][@(64) _][@3 acm][@(64) _`=_][@3 0644][@(64) )]&]
[s0;%- Posix specific.&]
[s2; Opens file stream in specified mode (as defined in BlockStream)
and specific POSIX access rights.&]
[s7; [%-*C@3 filename]-|The name of the file.&]
[s7; [%-*C@3 mode]-|Open mode.&]
[s2; [%-*C@3 acm]-|Access rights.&]
[s0; &]
[s5;K%- [^HANDLE^ HANDLE]_GetHandle[@(64) ()_][@(0.0.255) const]&]
[s0; Win32 specific.&]
[s7; [*/ Return value]-|File handle.&]
[s0; &]
[s5;K%- [^HANDLE^ HANDLE]_GetHandle[@(64) ()_][@(0.0.255) const]&]
[s0; Posix specific.&]
[s7; [*/ Return value]-|File handle.&]
[s0; &]
[s0; &]
[s0; &]
[s0; &]
[s5;K%- [@(0.0.255) class][@(64) _]FileIn[@(64) _:_][@(0.0.255) public][@(64) _][^`:`:FileStream^@(64) F
ileStream]&]
[s2; &]
[s2; Simple helper class that represents FileStream in read mode.&]
[s2; &]
[s0;%- [%%/ Derived from][%% ][^topic`:`/`/Core`/src`/Stream`$en`-us`#`:`:FileStream`:`:class FileStream^ F
ileStream]&]
[s0; &]
[s0;:`:`:FileIn`:`:FileIn`(const char`*`):%- [* FileIn](const_char_`*[*@3 fn])&]
[s2; Opens file for reading.&]
[s7; [%-*C@3 fn]-|File name.&]
[s0; &]
[s0;:`:`:FileIn`:`:FileIn`(`):%- [* FileIn]()&]
[s2; Constructs empty FileStream.&]
[s0; &]
[s5;K%- [@(0.0.255) bool][@(64) _]Open[@(64) (][@(0.0.255) const][@(64) _][@(0.0.255) char][@(64) _
`*][@3 fn][@(64) )]&]
[s2; Opens file for reading.&]
[s7; [%-*C@3 fn]-|File name.&]
[s7; [*/ Return value]-|True if open was successful.&]
[s0; &]
[s0; &]
[s0; &]
[s0; &]
[s5;K%- [@(0.0.255) class][@(64) _]FileOut[@(64) _:_][@(0.0.255) public][@(64) _][^`:`:FileStream^@(64) F
ileStream]&]
[s2; &]
[s2; Simple helper class that represents FileStream in write mode.&]
[s2; &]
[s0;%- [%%/ Derived from][%% ][^topic`:`/`/Core`/src`/Stream`$en`-us`#`:`:FileStream`:`:class FileStream^ F
ileStream]&]
[s0; &]
[s0;:`:`:FileOut`:`:FileOut`(const char`*`):%- [* FileOut](const_char_`*[*@3 fn])&]
[s2; Opens file for writing.&]
[s7; [%-*C@3 fn]-|File name.&]
[s0; &]
[s0;:`:`:FileOut`:`:FileOut`(`):%- [* FileOut]()&]
[s2;%- Constructs non`-opened FileStream.&]
[s0; &]
[s5;K%- [@(0.0.255) bool][@(64) _]Open[@(64) (][@(0.0.255) const][@(64) _][@(0.0.255) char][@(64) _
`*][@3 fn][@(64) , ][^mode`_t^@(64) mode`_t][@(64) _][@3 acm][@(64) _`=_][@3 0644][@(64) )]&]
[s2; Opens file for writing.&]
[s7; [%-*C@3 fn]-|File name.&]
[s7; [*/ Return value]-|True if open was successful.&]
[s0; &]
[s0; &]
[s0; &]
[s0; &]
[s5;K%- [@(0.0.255) class][@(64) _]FileAppend[@(64) _:_][@(0.0.255) public][@(64) _][^`:`:FileStream^@(64) F
ileStream]&]
[s2; &]
[s2; Simple helper class that represents FileStream in append mode
`- that in fact means in write mode with current position at
the end of the file.&]
[s2; &]
[s0;%- [%%/ Derived from][%% ]FileStream&]
[s0; &]
[s0;:`:`:FileAppend`:`:FileAppend`(const char`*`):%- [* FileAppend](const_char_`*[*@3 fn])
&]
[s2; Opens file in append mode.&]
[s7; [%-*C@3 fn]-|File name.&]
[s0; &]
[s0;:`:`:FileAppend`:`:FileAppend`(`):%- [* FileAppend]()&]
[s2; Constructs empty FileStream.&]
[s0; &]
[s5;K%- [@(0.0.255) bool][@(64) _]Open[@(64) (][@(0.0.255) const][@(64) _][@(0.0.255) char][@(64) _
`*][@3 fn][@(64) )]&]
[s2; Opens file in append mode.&]
[s7; [%-*C@3 fn]-|File name.&]
[s7; [*/ Return value]-|true when Open was successful.&]
[s0; &]
[s0; &]
[s0; &]
[s0; &]
[s5;K%- [@(0.0.255) class][@(64) _]SizeStream[@(64) _:_][@(0.0.255) public][@(64) _][^`:`:Stream^@(64) S
tream]&]
[s2; &]
[s2; Special output stream that in fact does not store output data,
only counts the total number of bytes written.&]
[s2; &]
[s0;%- [%%/ Derived from][%% ][^topic`:`/`/Core`/src`/Stream`$en`-us`#`:`:BufferStream`:`:class BufferStream^ B
ufferStream]&]
[s0; &]
[s0;:`:`:SizeStream`:`:SizeStream`(`):%- [* SizeStream]()&]
[s2; Constructor `- co&]
[s0; &]
[s5;K%- virtual [@(0.0.255) void][@(64) _]`_Put[@(64) (][@(0.0.255) int][@(64) _][@3 w][@(64) )]&]
[s7; [*/ Return value]-|Current number of bytes written.&]
[s0; &]
[s5;K%- [@(0.0.255) void][@(64) _]Open[@(64) ()]&]
[s2; Reopens data `- resets the counter of output bytes.&]
[s0; &]
[s0; &]
[s0; &]
[s0; &]
[s5;K%- [@(0.0.255) class][@(64) _]CompareStream[@(64) _:_][@(0.0.255) public][@(64) _][^`:`:Stream^@(64) S
tream]&]
[s2; &]
[s2; Special output stream that instead of storing data performs
their comparison to the data of another stream.&]
[s2; &]
[s0;%- [%%/ Derived from][%% ][^topic`:`/`/Core`/src`/Stream`$en`-us`#`:`:BufferStream`:`:class BufferStream^ B
ufferStream]&]
[s0; &]
[s0;:`:`:CompareStream`:`:CompareStream`(`):%- [* CompareStream]()&]
[s2; Constructs closed CompareStream.&]
[s0; &]
[s0;:`:`:CompareStream`:`:CompareStream`(`:`:Stream`&`):%- [* CompareStream](Stream`&_[*@3 a
Stream])&]
[s2; Constructors CompareStream opened for comparison with specified
stream.&]
[s7; [%-*C@3 aStream]-|Stream to compare with.&]
[s0; &]
[s5;K%- virtual [@(0.0.255) void][@(64) _]`_Put[@(64) (][@(0.0.255) int][@(64) _][@3 w][@(64) )]&]
[s2; Opens CompareStream for comparison with the specified stream.&]
[s7; [%-*C@3 aStream]-|Stream to compare with.&]
[s0; &]
[s5;K%- [@(0.0.255) bool][@(64) _]IsEqual[@(64) ()]&]
[s7; [*/ Return value]-|true if all bytes written so far match those
in comparison stream.&]
[s0; &]
[s5;K%- operator_[@(0.0.255) bool][@(64) ()]&]
[s7; [*/ Return value]-|IsEqual().&]
[s0; ]