topic "Stream utilities"; [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;a4;*@5;1 $$6,6#70004532496200323422659154056402:requirement] [l288;i1121;b17;O9;~~~.1408;2 $$7,0#10431211400427159095818037425705:param] [i448;b42;O9;2 $$8,8#61672508125594000341940100500538:tparam] [b42;2 $$9,9#13035079074754324216151401829390:normal] [2 $$0,0#00000000000000000000000000000000:Default] [{_} [ {{10000@(113.42.0) [s0;%% [*@2;4 Stream helpers]]}}&] [s0;%% &] [ {{10000t/25b/25@1 [s0; [* Function List]]}}&] [s3; &] [s5;:LoadStream`(Stream`&`): [_^String^ String]_[* LoadStream]([_^Stream^ Stream][@(0.0.255) `& ]_[*@3 in])&] [s2;%% Reads the stream starting with the current position till the end is reached and returns data in String.&] [s7;%% [%-*C@3 in]-|Stream.&] [s7;%% [*/ Return value]-|Content of stream.&] [s3; &] [s4; &] [s5;:SaveStream`(Stream`&`,const String`&`): [@(0.0.255) bool]_[* SaveStream]([_^Stream^ St ream][@(0.0.255) `&]_[*@3 out], [@(0.0.255) const]_[_^String^ String][@(0.0.255) `&]_[*@3 dat a])&] [s2;%% Writes data to stream.&] [s7;%% [%-*C@3 out]-|Output stream.&] [s7;%% [%-*C@3 data]-|Data to write.&] [s7;%% [*/ Return value]-|True if all data were successfully written to the stream.&] [s3; &] [s4; &] [s5;:CopyStream`(Stream`&`,Stream`&`,int64`): [_^int64^ int64]_[* CopyStream]([_^Stream^ St ream][@(0.0.255) `&]_[*@3 dest], [_^Stream^ Stream][@(0.0.255) `&]_[*@3 src], [_^int64^ int64]_[*@3 count] `= INT64`_MAX)&] [s2;%% Copies at most [%-*@3 count] bytes from source to destination stream. Returns the actual number of bytes copied. With default [%-*@3 count] value it copies all data from [%-*@3 src] until EOF.&] [s3; &] [s4; &] [s5;:Cout`(`): [_^Stream^ Stream][@(0.0.255) `&]_[* Cout]()&] [s2;%% Returns special output stream representing console output. Data written to this stream are displayed as characters in console.&] [s3; &] [s4; &] [s5;:Cerr`(`): [_^Stream^ Stream][@(0.0.255) `&]_[* Cerr]()&] [s2;%% Returns special output stream representing console error output. Data written to this stream are displayed as characters in console.&] [s3; &] [s4; &] [s5;:ReadStdIn`(`): [_^String^ String]_[* ReadStdIn]()&] [s2;%% Reads one line of input data from the console.&] [s7;%% [*/ Return value]-|Console input.&] [s3; &] [s4; &] [s5;:Upp`:`:ReadSecret`(`): [_^Upp`:`:String^ String]_[* ReadSecret]()&] [s2;%% Reads one line of input data from the console without echoing. This function is useful for reading passwords, secret phrases, etc. from the console.&] [s7;%% [*/ Return value]-|Console input.&] [s3; &] [s4; &] [s5;:NilStream`(`): [_^Stream^ Stream][@(0.0.255) `&]_[* NilStream]()&] [s2;%% Returns special stream that is always in IsEof state and simply discards all data written to it.&] [s7;%% [*/ Return value]-|`"Black hole`" stream.&] [s3; &] [s4; &] [s5;:LoadFile`(const char`*`): [_^String^ String]_[* LoadFile]([@(0.0.255) const]_[@(0.0.255) c har]_`*[*@3 filename])&] [s2;%% Loads the content of specified file.&] [s7;%% [%-*C@3 filename]-|File name.&] [s7;%% [*/ Return value]-|Content of file.&] [s3; &] [s4; &] [s5;:SaveFile`(const char`*`,const String`&`): [@(0.0.255) bool]_[* SaveFile]([@(0.0.255) c onst]_[@(0.0.255) char]_`*[*@3 filename], [@(0.0.255) const]_[_^String^ String][@(0.0.255) `& ]_[*@3 data])&] [s2;%% Saves data as the file (overwrites existing).&] [s7;%% [%-*C@3 filename]-|File name.&] [s7;%% [%-*C@3 data]-|Data to write.&] [s7;%% [*/ Return value]-|true if file was successfully written.&] [s3; &] [s4; &] [s5;:operator`%`(Stream`&`,T`&`): [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T][@(0.0.255) > ]_[_^Stream^ Stream][@(0.0.255) `&]_[* operator%]([_^Stream^ Stream][@(0.0.255) `&]_[*@3 s], [*@4 T][@(0.0.255) `&]_[*@3 x])&] [s2;%% Serialization operator. Simply invokes x.Serialize(s);&] [s7;%% [*C@4 T]-|Type of variable to be serialized.&] [s7;%% [%-*C@3 s]-|Stream.&] [s7;%% [%-*C@3 x]-|Variable to be serialized.&] [s7;%% [*/ Return value]-|s for chaining.&] [s3; &] [s4; &] [s5;:operator`<`<`(Stream`&`,const char`*`): [_^Stream^ Stream][@(0.0.255) `&]_[* operator< <]([_^Stream^ Stream][@(0.0.255) `&]_[*@3 s], [@(0.0.255) const]_[@(0.0.255) char]_`*[*@3 x]) &] [s2;%% Overload of stream insertion operator to get simple case work. Insertion operator uses formatted stream output (Putf).&] [s7;%% [%-*C@3 s]-|Output stream.&] [s7;%% [%-*C@3 x]-|Data to write `- all characters are written to the stream.&] [s7;%% [*/ Return value]-|s for chaining.&] [s3; &] [s4; &] [s5;:operator`<`<`(Stream`&`,char`*`): [_^Stream^ Stream][@(0.0.255) `&]_[* operator<<]([_^Stream^ S tream][@(0.0.255) `&]_[*@3 s], [@(0.0.255) char]_`*[*@3 x])&] [s2;%% Overload of stream insertion operator to get simple case work. Insertion operator uses formatted stream output (Putf).&] [s7;%% [%-*C@3 s]-|Output stream.&] [s7;%% [%-*C@3 x]-|Data to write `- all characters are written to the stream.&] [s7;%% [*/ Return value]-|s for chaining.&] [s3; &] [s4; &] [s5;:operator`<`<`(Stream`&`,const String`&`): [_^Stream^ Stream][@(0.0.255) `&]_[* operato r<<]([_^Stream^ Stream][@(0.0.255) `&]_[*@3 s], [@(0.0.255) const]_[_^String^ String]_`&[*@3 x ])&] [s2;%% Overload of stream insertion operator to get simple case work. Insertion operator uses formatted stream output (Putf).&] [s7;%% [%-*C@3 s]-|Output stream.&] [s7;%% [%-*C@3 x]-|Data to write `- all characters are written to the stream.&] [s7;%% [*/ Return value]-|s for chaining.&] [s3; &] [s4; &] [s5;:operator`<`<`(Stream`&`,char`): [_^Stream^ Stream][@(0.0.255) `&]_[* operator<<]([_^Stream^ S tream][@(0.0.255) `&]_[*@3 s], [@(0.0.255) char]_[*@3 x])&] [s2;%% Overload of stream insertion operator to get simple case work. Insertion operator uses formatted stream output (Putf).&] [s7;%% [%-*C@3 s]-|Output stream.&] [s7;%% [%-*C@3 x]-|Data to write `- it is written as single character.&] [s7;%% [*/ Return value]-|s for chaining.&] [s3; &] [s4; &] [s5;:operator`<`<`(Stream`&`,const void`*`): [_^Stream^ Stream][@(0.0.255) `&]_[* operator< <]([_^Stream^ Stream][@(0.0.255) `&]_[*@3 s], [@(0.0.255) const]_[@(0.0.255) void]_`*[*@3 x]) &] [s2;%% Overload of stream insertion operator to get simple case work. Insertion operator uses formatted stream output (Putf).&] [s7;%% [%-*C@3 s]-|Output stream.&] [s7;%% [%-*C@3 x]-|Data to write `- pointer is formatted as hexadecimal value.&] [s7;%% [*/ Return value]-|s for chaining.&] [s3; &] [s4; &] [s5;:operator`<`<`(Stream`&`,void`*`): [_^Stream^ Stream][@(0.0.255) `&]_[* operator<<]([_^Stream^ S tream][@(0.0.255) `&]_[*@3 s], [@(0.0.255) void]_`*[*@3 x])&] [s2;%% Overload of stream insertion operator to get simple case work. Insertion operator uses formatted stream output (Putf).&] [s7;%% [%-*C@3 s]-|Output stream.&] [s7;%% [%-*C@3 x]-|Data to write `- pointer is formatted as hexadecimal value.&] [s7;%% [*/ Return value]-|s for chaining.&] [s3; &] [s4; &] [s5;:operator`<`<`(Stream`&`,const T`&`): [@(0.0.255) template]_<[@(0.0.255) class]_[*@4 T][@(0.0.255) > ]_[_^Stream^ Stream][@(0.0.255) `&]_[* operator<<]([_^Stream^ Stream][@(0.0.255) `&]_[*@3 s], [@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 x])&] [s2;%% Global stream insertion operator. Calls AsString for x and stores the result to the stream. Global AsString version in turn calls ToString method of x.&] [s7;%% [*C@4 T]-|Type of data to write to the stream.&] [s7;%% [%-*C@3 s]-|Output stream.&] [s7;%% [%-*C@3 x]-|Data to write.&] [s7;%% [*/ Return value]-|s for chaining.&] [s3;%% &] [s0;%% ]]