57 operator bool()
const {
61 virtual void begin(
int speed) {
69 using Stream::println;
71 virtual size_t print(
const char* str) {
73 if (auto_flush) flush();
77 virtual size_t println() {
return println(
""); }
79 virtual size_t println(
const char* str) {
80 std::cout << str <<
"\n";
81 if (auto_flush) flush();
86 size_t result = Stream::print(
val,
radix);
87 if (auto_flush) flush();
92 size_t result = Stream::println(
val,
radix);
93 if (auto_flush) flush();
97 virtual size_t println(
String& str) {
return println(str.c_str()); }
99 virtual size_t print(
String& str) {
return print(str.c_str()); }
102 size_t result =
p.printTo(*
this);
104 if (auto_flush) flush();
109 auto result =
p.printTo(*
this);
110 if (auto_flush) flush();
114 void flush()
override { std::cout.flush(); }
116 virtual size_t write(
const char* str,
size_t len) {
117 std::cout.write(str, len);
118 if (auto_flush) flush();
122 virtual size_t write(
uint8_t* str,
size_t len) {
123 std::cout.write((
const char*)str, len);
124 if (auto_flush) flush();
127 size_t write(
const uint8_t* str,
size_t len)
override {
128 std::cout.write((
const char*)str, len);
129 if (auto_flush) flush();
133 virtual size_t write(
int32_t value) {
134 std::cout.put(value);
135 if (auto_flush) flush();
139 size_t write(
uint8_t value)
override {
140 std::cout.put(value);
141 if (auto_flush) flush();
145 int available()
override {
146#if defined(__unix__) || defined(__APPLE__)
148 return static_cast<int>(inputBuffer_.size());
150 return std::cin.rdbuf()->in_avail();
153 int read()
override {
154#if defined(__unix__) || defined(__APPLE__)
155 if (available() == 0)
return -1;
156 const int value = inputBuffer_.front();
157 inputBuffer_.pop_front();
160 return std::cin.get();
164 int peek()
override {
165#if defined(__unix__) || defined(__APPLE__)
166 return available() > 0 ? inputBuffer_.front() : -1;
168 return std::cin.peek();
173 bool auto_flush =
true;
175#if defined(__unix__) || defined(__APPLE__)
177 void fillInputBuffer() {
189 inputBuffer_.insert(inputBuffer_.end(), buffer, buffer +
bytesRead);
192 std::deque<unsigned char> inputBuffer_;