summaryrefslogtreecommitdiff
path: root/src/mongo/base/data_view.h
diff options
context:
space:
mode:
authorAndrew Morrow <acm@mongodb.com>2014-08-22 12:41:06 -0400
committerAndrew Morrow <acm@mongodb.com>2014-09-08 17:44:20 -0400
commit09878cb3cb2ec6224824b5ebcf8747413e3802e8 (patch)
tree17096931afd825787d1cd47b3f2eaffff325bedf /src/mongo/base/data_view.h
parentde8ad641914eeb56367d06fd465c17ad5e6a3e26 (diff)
downloadmongo-09878cb3cb2ec6224824b5ebcf8747413e3802e8.tar.gz
SERVER-15174 Provide some improved semantics for data_cursor and data_view
Diffstat (limited to 'src/mongo/base/data_view.h')
-rw-r--r--src/mongo/base/data_view.h23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/mongo/base/data_view.h b/src/mongo/base/data_view.h
index f0430d6a504..9b4d43762e8 100644
--- a/src/mongo/base/data_view.h
+++ b/src/mongo/base/data_view.h
@@ -47,20 +47,26 @@ namespace mongo {
}
template<typename T>
+ const ConstDataView& readNative(T* t, size_t offset = 0) const {
+ std::memcpy(t, view(offset), sizeof(*t));
+ return *this;
+ }
+
+ template<typename T>
T readNative(std::size_t offset = 0) const {
T t;
- std::memcpy(&t, view(offset), sizeof(t));
+ readNative(&t, offset);
return t;
}
template<typename T>
T readLE(std::size_t offset = 0) const {
- return littleToNative(readNative<T>(offset));
+ return endian::littleToNative(readNative<T>(offset));
}
template<typename T>
T readBE(std::size_t offset = 0) const {
- return bigToNative(readNative<T>(offset));
+ return endian::bigToNative(readNative<T>(offset));
}
private:
@@ -83,18 +89,19 @@ namespace mongo {
}
template<typename T>
- void writeNative(const T& value, std::size_t offset = 0) {
+ DataView& writeNative(const T& value, std::size_t offset = 0) {
std::memcpy(view(offset), &value, sizeof(value));
+ return *this;
}
template<typename T>
- void writeLE(const T& value, std::size_t offset = 0) {
- return writeNative(nativeToLittle(value), offset);
+ DataView& writeLE(const T& value, std::size_t offset = 0) {
+ return writeNative(endian::nativeToLittle(value), offset);
}
template<typename T>
- void writeBE(const T& value, std::size_t offset = 0) {
- return writeNative(nativeToBig(value), offset);
+ DataView& writeBE(const T& value, std::size_t offset = 0) {
+ return writeNative(endian::nativeToBig(value), offset);
}
};