blob: c178791aae48a4defa5021f6a6e407bd6932dfb5 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
// capture.start() sends everything the program writes into a string instead of
// the terminal, and buf.end() stops it and terminates the string. nothing may
// be printed during a capture, or it lands in the buffer too.
include "src/lib/std.zc";
fn main() {
let buf = capture.start();
put_s("hello world!");
put_n(42);
put_c(10);
buf.end(); // stops the capture and terminates the string
// the capture is off again, so these go to the terminal
put_n(outmode); put_c(10); // 0
put_n(outbuf == 0); put_c(10); // 1, the buffer is handed over
put_n(len_w(buf)); put_c(10); // 15
put_s(buf); // hello world!42
// a second capture does not disturb the first, and both read back
let two = capture.start();
put_s("second");
two.end();
put_n(eq_w(buf, "hello world!42\n")); put_c(10); // 1
put_n(eq_w(two, "second")); put_c(10); // 1
// capture_stdin returns an empty string, so an unused capture is empty
let three = capture.start();
three.end();
put_n(len_w(three)); put_c(10); // 0
return 0;
}
|