20 TeeStream(std::ostream &stream1, std::ostream &stream2)
21 : std::ostream(&tee_buffer)
22 , tee_buffer(stream1, stream2)
26 class TeeBuffer :
public std::streambuf
29 TeeBuffer(std::ostream &stream1, std::ostream &stream2)
30 : stream1(stream1.rdbuf())
31 , stream2(stream2.rdbuf())
36 overflow(
int character)
override
40 return static_cast<int>(!EOF);
43 const int result1 = stream1->sputc(
static_cast<char_type
>(character));
44 const int result2 = stream2->sputc(
static_cast<char_type
>(character));
45 return result1 == EOF || result2 == EOF ? EOF : character;
51 const int result1 = stream1->pubsync();
52 const int result2 = stream2->pubsync();
53 return result1 == 0 && result2 == 0 ? 0 : -1;
57 std::streambuf *stream1;
58 std::streambuf *stream2;