57 operator bool()
const {
61 virtual void begin(
int speed) {
65 virtual size_t print(
const char* str) {
67 if (auto_flush) flush();
71 virtual size_t println(
const char* str =
"") {
72 std::cout << str <<
"\n";
73 if (auto_flush) flush();
78 size_t result = Stream::print(
val,
radix);
79 if (auto_flush) flush();
84 size_t result = Stream::println(
val,
radix);
85 if (auto_flush) flush();
89 virtual size_t println(
String& str) {
return println(str.c_str()); }
91 virtual size_t print(
String& str) {
return print(str.c_str()); }
94 size_t result =
p.printTo(*
this);
96 if (auto_flush) flush();
101 auto result =
p.printTo(*
this);
102 if (auto_flush) flush();
106 void flush()
override { std::cout.flush(); }
108 virtual size_t write(
const char* str,
size_t len) {
109 std::cout.write(str, len);
110 if (auto_flush) flush();
114 virtual size_t write(
uint8_t* str,
size_t len) {
115 std::cout.write((
const char*)str, len);
116 if (auto_flush) flush();
119 size_t write(
const uint8_t* str,
size_t len)
override {
120 std::cout.write((
const char*)str, len);
121 if (auto_flush) flush();
125 virtual size_t write(
int32_t value) {
126 std::cout.put(value);
127 if (auto_flush) flush();
131 size_t write(
uint8_t value)
override {
132 std::cout.put(value);
133 if (auto_flush) flush();
137 int available()
override {
138#if defined(__unix__) || defined(__APPLE__)
140 return static_cast<int>(inputBuffer_.size());
142 return std::cin.rdbuf()->in_avail();
145 int read()
override {
146#if defined(__unix__) || defined(__APPLE__)
147 if (available() == 0)
return -1;
148 const int value = inputBuffer_.front();
149 inputBuffer_.pop_front();
152 return std::cin.get();
156 int peek()
override {
157#if defined(__unix__) || defined(__APPLE__)
158 return available() > 0 ? inputBuffer_.front() : -1;
160 return std::cin.peek();
165 bool auto_flush =
true;
167#if defined(__unix__) || defined(__APPLE__)
169 void fillInputBuffer() {
181 inputBuffer_.insert(inputBuffer_.end(), buffer, buffer +
bytesRead);
184 std::deque<unsigned char> inputBuffer_;