17                : original_buffer(sbuf), max_width(max_width), current_width(0) {}
 
   20        virtual int overflow(
int ch)
 override {
 
   21            if (ch == 
'\n' || ch == EOF) {
 
   23                return original_buffer->sputc(ch);
 
   25                if (current_width >= max_width) {
 
   26                    if (original_buffer->sputc(
'\n') == EOF) {
 
   32                return original_buffer->sputc(ch);
 
   36        virtual std::streamsize xsputn(
const char* s, std::streamsize n)
 override {
 
   37            std::streamsize written = 0;
 
   39                if (current_width >= max_width) {
 
   40                    if (original_buffer->sputc(
'\n') == EOF) {
 
   45                std::streamsize remaining = n - written;
 
   46                std::streamsize space_left = max_width - current_width;
 
   47                std::streamsize to_write = std::min(remaining, space_left);
 
   48                std::streamsize just_written = original_buffer->sputn(s + written, to_write);
 
   49                if (just_written == 0) {
 
   52                written += just_written;
 
   53                current_width += just_written;
 
   59        std::streambuf* original_buffer;
 
   60        std::size_t max_width;
 
   61        std::size_t current_width;