summaryrefslogtreecommitdiff
path: root/src/mongo/base/data_range_cursor.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/base/data_range_cursor.h')
-rw-r--r--src/mongo/base/data_range_cursor.h210
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