diff options
Diffstat (limited to 'document')
4 files changed, 21 insertions, 20 deletions
diff --git a/document/src/tests/documenttestcase.cpp b/document/src/tests/documenttestcase.cpp index 99aebe26720..a4d9c778bec 100644 --- a/document/src/tests/documenttestcase.cpp +++ b/document/src/tests/documenttestcase.cpp @@ -36,10 +36,10 @@ TEST(DocumentTest, testSizeOf) EXPECT_EQ(32u, sizeof(vespalib::GrowableByteBuffer)); EXPECT_EQ(88ul, sizeof(IdString)); EXPECT_EQ(104ul, sizeof(DocumentId)); - EXPECT_EQ(248ul, sizeof(Document)); - EXPECT_EQ(112ul, sizeof(StructFieldValue)); + EXPECT_EQ(240ul, sizeof(Document)); + EXPECT_EQ(104ul, sizeof(StructFieldValue)); EXPECT_EQ(24ul, sizeof(StructuredFieldValue)); - EXPECT_EQ(64ul, sizeof(SerializableArray)); + EXPECT_EQ(56ul, sizeof(SerializableArray)); } TEST(DocumentTest, testFieldPath) diff --git a/document/src/vespa/document/fieldvalue/serializablearray.cpp b/document/src/vespa/document/fieldvalue/serializablearray.cpp index cb638b2a0b7..3851d8e2354 100644 --- a/document/src/vespa/document/fieldvalue/serializablearray.cpp +++ b/document/src/vespa/document/fieldvalue/serializablearray.cpp @@ -48,17 +48,24 @@ SerializableArray::SerializableArray(EntryMap entries, ByteBuffer::UP buffer, } } +SerializableArray::SerializableArray(SerializableArray &&) noexcept = default; +SerializableArray& SerializableArray::operator=(SerializableArray &&) noexcept = default; +SerializableArray::~SerializableArray() = default; + +namespace { + serializablearray::BufferMap & -ensure(std::unique_ptr<serializablearray::BufferMap> & owned) { +ensure(std::unique_ptr<serializablearray::BufferMap> &owned) { if (!owned) { owned = std::make_unique<serializablearray::BufferMap>(); } return *owned; } +} + SerializableArray::SerializableArray(const SerializableArray& other) - : Cloneable(), - _entries(other._entries), + : _entries(other._entries), _owned(), _uncompSerData(other._uncompSerData.get() ? new ByteBuffer(*other._uncompSerData) : nullptr), _compSerData(other._compSerData.get() ? new ByteBuffer(*other._compSerData) : nullptr), @@ -97,10 +104,6 @@ void SerializableArray::clear() _uncompressedLength = 0; } -SerializableArray::SerializableArray(SerializableArray &&) noexcept = default; -SerializableArray& SerializableArray::operator=(SerializableArray &&) noexcept = default; -SerializableArray::~SerializableArray() = default; - void SerializableArray::invalidate() { diff --git a/document/src/vespa/document/fieldvalue/serializablearray.h b/document/src/vespa/document/fieldvalue/serializablearray.h index 12f3f28cdf7..11f228b3224 100644 --- a/document/src/vespa/document/fieldvalue/serializablearray.h +++ b/document/src/vespa/document/fieldvalue/serializablearray.h @@ -17,7 +17,6 @@ #pragma once #include <vespa/vespalib/util/compressionconfig.h> -#include <vespa/vespalib/objects/cloneable.h> #include <vespa/vespalib/util/buffer.h> #include <vespa/vespalib/util/memory.h> #include <vector> @@ -32,7 +31,7 @@ namespace serializablearray { class BufferMap; } -class SerializableArray : public vespalib::Cloneable +class SerializableArray { public: /** @@ -85,9 +84,13 @@ public: using CompressionInfo = vespalib::compression::CompressionInfo; SerializableArray(); + SerializableArray(const SerializableArray&); + SerializableArray& operator=(const SerializableArray&); + SerializableArray(SerializableArray &&) noexcept; + SerializableArray& operator=(SerializableArray &&) noexcept; SerializableArray(EntryMap entries, ByteBufferUP buffer, CompressionConfig::Type comp_type, uint32_t uncompressed_length); - ~SerializableArray() override; + ~SerializableArray(); /** * Stores a value in the array. @@ -136,11 +139,6 @@ public: : _uncompSerData.get(); } - SerializableArray* clone() const override { return new SerializableArray(*this); } - SerializableArray(const SerializableArray&); - SerializableArray& operator=(const SerializableArray&); - SerializableArray(SerializableArray &&) noexcept; - SerializableArray& operator=(SerializableArray &&) noexcept; const EntryMap & getEntries() const { return _entries; } private: bool shouldDecompress() const { diff --git a/document/src/vespa/document/fieldvalue/structfieldvalue.h b/document/src/vespa/document/fieldvalue/structfieldvalue.h index 85912fe199a..8c9d2cc6bb2 100644 --- a/document/src/vespa/document/fieldvalue/structfieldvalue.h +++ b/document/src/vespa/document/fieldvalue/structfieldvalue.h @@ -39,8 +39,8 @@ public: StructFieldValue(const DataType &type); StructFieldValue(const StructFieldValue & rhs); StructFieldValue & operator = (const StructFieldValue & rhs); - StructFieldValue(StructFieldValue && rhs) = default; - StructFieldValue & operator = (StructFieldValue && rhs) = default; + StructFieldValue(StructFieldValue && rhs) noexcept = default; + StructFieldValue & operator = (StructFieldValue && rhs) noexcept = default; ~StructFieldValue() override; void setRepo(const DocumentTypeRepo & repo) { _repo = & repo; } |