| 23 | } |
| 24 | |
| 25 | size_t TMultiInput::DoReadTo(TString& st, char ch) { |
| 26 | size_t ret = C_->ReadTo(st, ch); |
| 27 | if (ret == st.size() + 1) { // found a symbol, not eof |
| 28 | return ret; |
| 29 | } |
| 30 | |
| 31 | C_ = N_; |
| 32 | N_ = &Cnull; |
| 33 | |
| 34 | if (ret == 0) { |
| 35 | ret += C_->ReadTo(st, ch); |
| 36 | } else { |
| 37 | TString tmp; |
| 38 | ret += C_->ReadTo(tmp, ch); |
| 39 | st += tmp; |
| 40 | } |
| 41 | |
| 42 | return ret; |
| 43 | } |
| 44 | |
| 45 | size_t TMultiInput::DoSkip(size_t len) { |
| 46 | const size_t ret = C_->Skip(len); |