opynsim
Unofficial C++ Documentation
Loading...
Searching...
No Matches
null_streambuf.h
Go to the documentation of this file.
1#pragma once
2
3#include <array>
4#include <cstddef>
5#include <streambuf>
6
7namespace osc
8{
9 // a `std::streambuf` that performs no actual input-output operations
10 class NullStreambuf final : public std::streambuf {
11 public:
12 size_t num_chars_written() const
13 {
14 return num_chars_written_;
15 }
16
17 bool was_written_to() const
18 {
19 return num_chars_written_ > 0;
20 }
21 protected:
22 int overflow(int c) override
23 {
24 setp(dummy_buffer_.data(), dummy_buffer_.data() + dummy_buffer_.size());
25 ++num_chars_written_;
26 return (c == traits_type::eof() ? char_type{} : c);
27 }
28
29 std::streamsize xsputn(const char_type*, std::streamsize count) override
30 {
31 num_chars_written_ += count;
32 return count;
33 }
34 private:
35 std::array<char_type, 512> dummy_buffer_{};
36 size_t num_chars_written_ = 0;
37 };
38}
Definition null_streambuf.h:10
size_t num_chars_written() const
Definition null_streambuf.h:12
bool was_written_to() const
Definition null_streambuf.h:17
int overflow(int c) override
Definition null_streambuf.h:22
std::streamsize xsputn(const char_type *, std::streamsize count) override
Definition null_streambuf.h:29
Definition custom_decoration_generator.h:5
constexpr U to(T &&value)
Definition conversion.h:56