diff options
author | Devtools Arcadia <arcadia-devtools@yandex-team.ru> | 2022-02-07 18:08:42 +0300 |
---|---|---|
committer | Devtools Arcadia <arcadia-devtools@mous.vla.yp-c.yandex.net> | 2022-02-07 18:08:42 +0300 |
commit | 1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch) | |
tree | e26c9fed0de5d9873cce7e00bc214573dc2195b7 /library/cpp/deprecated/split/delim_string_iter.cpp | |
download | ydb-1110808a9d39d4b808aef724c861a2e1a38d2a69.tar.gz |
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'library/cpp/deprecated/split/delim_string_iter.cpp')
-rw-r--r-- | library/cpp/deprecated/split/delim_string_iter.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/library/cpp/deprecated/split/delim_string_iter.cpp b/library/cpp/deprecated/split/delim_string_iter.cpp new file mode 100644 index 0000000000..af418c5bfb --- /dev/null +++ b/library/cpp/deprecated/split/delim_string_iter.cpp @@ -0,0 +1,45 @@ +#include "delim_string_iter.h" + +// +// TKeyValueDelimStringIter +// + +void TKeyValueDelimStringIter::ReadKeyAndValue() { + TStringBuf currentToken(*DelimIter); + + size_t pos = currentToken.find('='); + if (pos == TString::npos) { + ChunkValue.Clear(); + ChunkKey = currentToken; + } else { + ChunkKey = currentToken.SubStr(0, pos); + ChunkValue = currentToken.SubStr(pos + 1); + } +} + +TKeyValueDelimStringIter::TKeyValueDelimStringIter(const TStringBuf str, const TStringBuf delim) + : DelimIter(str, delim) +{ + if (DelimIter.Valid()) + ReadKeyAndValue(); +} + +bool TKeyValueDelimStringIter::Valid() const { + return DelimIter.Valid(); +} + +TKeyValueDelimStringIter& TKeyValueDelimStringIter::operator++() { + ++DelimIter; + if (DelimIter.Valid()) + ReadKeyAndValue(); + + return *this; +} + +const TStringBuf& TKeyValueDelimStringIter::Key() const { + return ChunkKey; +} + +const TStringBuf& TKeyValueDelimStringIter::Value() const { + return ChunkValue; +} |