diff options
Diffstat (limited to 'src/mongo/base/data_range_cursor.h')
-rw-r--r-- | src/mongo/base/data_range_cursor.h | 210 |
1 files changed, 100 insertions, 110 deletions
diff --git a/src/mongo/base/data_range_cursor.h b/src/mongo/base/data_range_cursor.h index c6ebffb996a..36eb4681eaf 100644 --- a/src/mongo/base/data_range_cursor.h +++ b/src/mongo/base/data_range_cursor.h @@ -38,157 +38,147 @@ namespace mongo { - class ConstDataRangeCursor : public ConstDataRange { - public: +class ConstDataRangeCursor : public ConstDataRange { +public: + ConstDataRangeCursor(const char* begin, const char* end, std::ptrdiff_t debug_offset = 0) + : ConstDataRange(begin, end, debug_offset) {} - ConstDataRangeCursor(const char* begin, const char* end, std::ptrdiff_t debug_offset = 0) - : ConstDataRange(begin, end, debug_offset) { - } + ConstDataRangeCursor(ConstDataRange cdr) : ConstDataRange(cdr) {} - ConstDataRangeCursor(ConstDataRange cdr) - : ConstDataRange(cdr) { + Status advance(size_t advance) { + if (advance > length()) { + return makeAdvanceStatus(advance); } - Status advance(size_t advance) { - if (advance > length()) { - return makeAdvanceStatus(advance); - } - - _begin += advance; - _debug_offset += advance; - - return Status::OK(); - } + _begin += advance; + _debug_offset += advance; - template <typename T> - Status skip() { - size_t advanced = 0; + return Status::OK(); + } - Status x = DataType::load<T>(nullptr, _begin, _end - _begin, &advanced, _debug_offset); + template <typename T> + Status skip() { + size_t advanced = 0; - if (x.isOK()) { - _begin += advanced; - _debug_offset += advanced; - } + Status x = DataType::load<T>(nullptr, _begin, _end - _begin, &advanced, _debug_offset); - return x; + if (x.isOK()) { + _begin += advanced; + _debug_offset += advanced; } - template <typename T> - Status readAndAdvance(T* t) { - size_t advanced = 0; + return x; + } - Status x = DataType::load(t, _begin, _end - _begin, &advanced, _debug_offset); + template <typename T> + Status readAndAdvance(T* t) { + size_t advanced = 0; - if (x.isOK()) { - _begin += advanced; - _debug_offset += advanced; - } + Status x = DataType::load(t, _begin, _end - _begin, &advanced, _debug_offset); - return x; + if (x.isOK()) { + _begin += advanced; + _debug_offset += advanced; } - template <typename T> - StatusWith<T> readAndAdvance() { - T out(DataType::defaultConstruct<T>()); - Status x = readAndAdvance(&out); + return x; + } - if (x.isOK()) { - return StatusWith<T>(std::move(out)); - } else { - return StatusWith<T>(std::move(x)); - } - } - - private: + template <typename T> + StatusWith<T> readAndAdvance() { + T out(DataType::defaultConstruct<T>()); + Status x = readAndAdvance(&out); - Status makeAdvanceStatus(size_t advance) const; + if (x.isOK()) { + return StatusWith<T>(std::move(out)); + } else { + return StatusWith<T>(std::move(x)); + } + } - }; +private: + Status makeAdvanceStatus(size_t advance) const; +}; - class DataRangeCursor : public DataRange { - public: +class DataRangeCursor : public DataRange { +public: + DataRangeCursor(char* begin, char* end, std::ptrdiff_t debug_offset = 0) + : DataRange(begin, end, debug_offset) {} - DataRangeCursor(char *begin, char *end, std::ptrdiff_t debug_offset = 0) - : DataRange(begin, end, debug_offset) {} + DataRangeCursor(DataRange range) : DataRange(range) {} - DataRangeCursor(DataRange range) - : DataRange(range) {} + operator ConstDataRangeCursor() const { + return ConstDataRangeCursor(ConstDataRange(_begin, _end, _debug_offset)); + } - operator ConstDataRangeCursor() const { - return ConstDataRangeCursor(ConstDataRange(_begin, _end, _debug_offset)); + Status advance(size_t advance) { + if (advance > length()) { + return makeAdvanceStatus(advance); } - Status advance(size_t advance) { - if (advance > length()) { - return makeAdvanceStatus(advance); - } + _begin += advance; + _debug_offset += advance; - _begin += advance; - _debug_offset += advance; + return Status::OK(); + } - return Status::OK(); - } - - template <typename T> - Status skip() { - size_t advanced = 0; - - Status x = DataType::load<T>(nullptr, _begin, _end - _begin, &advanced, _debug_offset); + template <typename T> + Status skip() { + size_t advanced = 0; - if (x.isOK()) { - _begin += advanced; - _debug_offset += advanced; - } + Status x = DataType::load<T>(nullptr, _begin, _end - _begin, &advanced, _debug_offset); - return x; + if (x.isOK()) { + _begin += advanced; + _debug_offset += advanced; } - template <typename T> - Status readAndAdvance(T* t) { - size_t advanced = 0; + return x; + } - Status x = DataType::load(t, _begin, _end - _begin, &advanced, _debug_offset); + template <typename T> + Status readAndAdvance(T* t) { + size_t advanced = 0; - if (x.isOK()) { - _begin += advanced; - _debug_offset += advanced; - } + Status x = DataType::load(t, _begin, _end - _begin, &advanced, _debug_offset); - return x; + if (x.isOK()) { + _begin += advanced; + _debug_offset += advanced; } - template <typename T> - StatusWith<T> readAndAdvance() { - T out(DataType::defaultConstruct<T>()); - Status x = readAndAdvance(&out); + return x; + } - if (x.isOK()) { - return StatusWith<T>(std::move(out)); - } else { - return StatusWith<T>(std::move(x)); - } - } + template <typename T> + StatusWith<T> readAndAdvance() { + T out(DataType::defaultConstruct<T>()); + Status x = readAndAdvance(&out); - template <typename T> - Status writeAndAdvance(const T& value) { - size_t advanced = 0; + if (x.isOK()) { + return StatusWith<T>(std::move(out)); + } else { + return StatusWith<T>(std::move(x)); + } + } - Status x = DataType::store(value, const_cast<char*>(_begin), _end - _begin, &advanced, - _debug_offset); + template <typename T> + Status writeAndAdvance(const T& value) { + size_t advanced = 0; - if (x.isOK()) { - _begin += advanced; - _debug_offset += advanced; - } + Status x = DataType::store( + value, const_cast<char*>(_begin), _end - _begin, &advanced, _debug_offset); - return x; + if (x.isOK()) { + _begin += advanced; + _debug_offset += advanced; } - private: - - Status makeAdvanceStatus(size_t advance) const; + return x; + } - }; +private: + Status makeAdvanceStatus(size_t advance) const; +}; -} // namespace mongo +} // namespace mongo |