/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
util/stream/multi.cpp
56 строк
936 B
qkrorlqr
Initial NBS OpenSource export
28 апр 2023, 21:54
28 апр 2023, 21:54
783a858
Код
Авторство
О чём код?
#include "null.h" #include "multi.h" TMultiInput::TMultiInput(IInputStream* f, IInputStream* s) noexcept : C_(f) , N_(s) { } TMultiInput::~TMultiInput() = default; size_t TMultiInput::DoRead(void* buf, size_t len) { const size_t ret = C_->Read(buf, len); if (ret) { return ret; } C_ = N_; N_ = &Cnull; return C_->Read(buf, len); } size_t TMultiInput::DoReadTo(TString& st, char ch) { size_t ret = C_->ReadTo(st, ch); if (ret == st.size() + 1) { // found a symbol, not eof return ret; } C_ = N_; N_ = &Cnull; if (ret == 0) { ret += C_->ReadTo(st, ch); } else { TString tmp; ret += C_->ReadTo(tmp, ch); st += tmp; } return ret; } size_t TMultiInput::DoSkip(size_t len) { const size_t ret = C_->Skip(len); if (ret) { return ret; } C_ = N_; N_ = &Cnull; return C_->Skip(len); }