From 01cce7fcf6a68f268c8a61e93ea4a0d76a775954 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Sat, 7 Nov 2020 20:38:52 +0000 Subject: Removed unused IFieldBase of Serializer/Deserializer interface. Many years ago there were a big plan. But it went nowehere. So let us GC it instead of lying around polluting and bloating the code. --- document/src/tests/documentupdatetestcase.cpp | 22 +++---- document/src/tests/fieldsettest.cpp | 2 +- document/src/vespa/document/base/field.cpp | 6 +- document/src/vespa/document/base/field.h | 10 +-- document/src/vespa/document/base/fieldpath.cpp | 3 +- document/src/vespa/document/base/fieldpath.h | 4 -- .../src/vespa/document/fieldvalue/fieldvalue.cpp | 1 - document/src/vespa/document/update/fieldupdate.cpp | 1 - document/src/vespa/document/update/fieldupdate.h | 4 +- .../vespa/searchlib/aggregation/aggregation.cpp | 16 ++--- .../src/vespa/searchlib/aggregation/fs4hit.cpp | 31 ++++----- .../src/vespa/searchlib/aggregation/group.cpp | 1 - .../src/vespa/searchlib/aggregation/grouping.cpp | 1 - .../vespa/searchlib/aggregation/groupinglevel.cpp | 3 +- searchlib/src/vespa/searchlib/aggregation/hit.cpp | 11 ++-- .../src/vespa/searchlib/aggregation/hitlist.cpp | 1 - .../aggregation/hitsaggregationresult.cpp | 1 - .../src/vespa/searchlib/aggregation/vdshit.cpp | 18 ++--- .../searchlib/expression/bucketresultnode.cpp | 8 +-- .../vespa/searchlib/expression/bucketresultnode.h | 8 +-- .../vespa/searchlib/expression/catserializer.cpp | 37 ++++------- .../src/vespa/searchlib/expression/catserializer.h | 30 ++++----- .../searchlib/expression/debugwaitfunctionnode.cpp | 1 - .../searchlib/expression/documentfieldnode.cpp | 16 +++-- .../searchlib/expression/floatbucketresultnode.cpp | 8 +-- .../expression/integerbucketresultnode.cpp | 8 +-- .../searchlib/expression/rawbucketresultnode.cpp | 10 ++- .../src/vespa/searchlib/expression/resultnodes.cpp | 8 +-- .../vespa/searchlib/expression/resultvector.cpp | 6 +- .../src/vespa/searchlib/expression/serializer.h | 19 ++---- .../searchlib/expression/strcatserializer.cpp | 14 ++-- .../vespa/searchlib/expression/strcatserializer.h | 11 ++-- .../expression/stringbucketresultnode.cpp | 4 +- .../src/vespa/searchlib/expression/timestamp.cpp | 3 +- .../src/vespa/searchlib/expression/zcurve.cpp | 13 ++-- .../src/vespa/searchlib/uca/ucafunctionnode.cpp | 22 ++----- .../src/vespa/searchlib/uca/ucafunctionnode.h | 9 +-- .../src/vespa/vespalib/objects/CMakeLists.txt | 1 - .../src/vespa/vespalib/objects/asciiserializer.cpp | 18 ++--- .../src/vespa/vespalib/objects/asciiserializer.h | 16 ++--- .../src/vespa/vespalib/objects/deserializer.cpp | 23 ++++--- .../src/vespa/vespalib/objects/deserializer.h | 76 +++++++++------------- .../src/vespa/vespalib/objects/deserializer.hpp | 4 +- .../src/vespa/vespalib/objects/fieldbase.cpp | 9 --- .../src/vespa/vespalib/objects/fieldbase.h | 33 ---------- .../src/vespa/vespalib/objects/identifiable.cpp | 14 ++-- .../src/vespa/vespalib/objects/identifiable.h | 7 +- .../src/vespa/vespalib/objects/identifiable.hpp | 20 +++--- .../src/vespa/vespalib/objects/namedobject.cpp | 5 +- .../src/vespa/vespalib/objects/nboserializer.cpp | 32 ++++----- .../src/vespa/vespalib/objects/nboserializer.h | 34 +++++----- .../src/vespa/vespalib/objects/serializer.cpp | 11 ++-- .../src/vespa/vespalib/objects/serializer.h | 60 ++++++++--------- .../src/vespa/vespalib/objects/serializer.hpp | 7 +- 54 files changed, 306 insertions(+), 435 deletions(-) delete mode 100644 staging_vespalib/src/vespa/vespalib/objects/fieldbase.cpp delete mode 100644 staging_vespalib/src/vespa/vespalib/objects/fieldbase.h diff --git a/document/src/tests/documentupdatetestcase.cpp b/document/src/tests/documentupdatetestcase.cpp index 1863194ab73..5fd62957f65 100644 --- a/document/src/tests/documentupdatetestcase.cpp +++ b/document/src/tests/documentupdatetestcase.cpp @@ -467,28 +467,28 @@ TEST(DocumentUpdateTest, testReadSerializedFile) EXPECT_EQ(*type, upd.getType()); // Verify assign value update. - FieldUpdate serField = upd.getUpdates()[1]; - EXPECT_EQ(serField.getField().getId(), type->getField("intfield").getId()); + const FieldUpdate & serField1 = upd.getUpdates()[1]; + EXPECT_EQ(serField1.getField().getId(), type->getField("intfield").getId()); - const ValueUpdate* serValue = &serField[0]; + const ValueUpdate* serValue = &serField1[0]; ASSERT_EQ(serValue->getType(), ValueUpdate::Assign); const AssignValueUpdate* assign(static_cast(serValue)); EXPECT_EQ(IntFieldValue(4), static_cast(assign->getValue())); // Verify clear field update. - serField = upd.getUpdates()[2]; - EXPECT_EQ(serField.getField().getId(), type->getField("floatfield").getId()); + const FieldUpdate & serField2 = upd.getUpdates()[2]; + EXPECT_EQ(serField2.getField().getId(), type->getField("floatfield").getId()); - serValue = &serField[0]; + serValue = &serField2[0]; EXPECT_EQ(serValue->getType(), ValueUpdate::Clear); EXPECT_TRUE(serValue->inherits(ClearValueUpdate::classId)); // Verify add value update. - serField = upd.getUpdates()[0]; - EXPECT_EQ(serField.getField().getId(), type->getField("arrayoffloatfield").getId()); + const FieldUpdate & serField3 = upd.getUpdates()[0]; + EXPECT_EQ(serField3.getField().getId(), type->getField("arrayoffloatfield").getId()); - serValue = &serField[0]; + serValue = &serField3[0]; ASSERT_EQ(serValue->getType(), ValueUpdate::Add); const AddValueUpdate* add = static_cast(serValue); @@ -496,7 +496,7 @@ TEST(DocumentUpdateTest, testReadSerializedFile) EXPECT_TRUE(value->inherits(FloatFieldValue::classId)); EXPECT_FLOAT_EQ(value->getAsFloat(), 5.00f); - serValue = &serField[1]; + serValue = &serField3[1]; ASSERT_EQ(serValue->getType(), ValueUpdate::Add); add = static_cast(serValue); @@ -504,7 +504,7 @@ TEST(DocumentUpdateTest, testReadSerializedFile) EXPECT_TRUE(value->inherits(FloatFieldValue::classId)); EXPECT_FLOAT_EQ(value->getAsFloat(), 4.23f); - serValue = &serField[2]; + serValue = &serField3[2]; ASSERT_EQ(serValue->getType(), ValueUpdate::Add); add = static_cast(serValue); diff --git a/document/src/tests/fieldsettest.cpp b/document/src/tests/fieldsettest.cpp index 8f77bfd2c0d..a3b78e6081f 100644 --- a/document/src/tests/fieldsettest.cpp +++ b/document/src/tests/fieldsettest.cpp @@ -281,7 +281,7 @@ TEST(FieldCollectionTest, testHash ) { } TEST(FieldTest, testSizeOf) { - EXPECT_EQ(sizeof(Field), 96); + EXPECT_EQ(sizeof(Field), 88); } } // document diff --git a/document/src/vespa/document/base/field.cpp b/document/src/vespa/document/base/field.cpp index fb814fc5f17..806f1543cc7 100644 --- a/document/src/vespa/document/base/field.cpp +++ b/document/src/vespa/document/base/field.cpp @@ -35,13 +35,15 @@ Field::Field() { } Field::Field(vespalib::stringref name, int fieldId, const DataType& dataType) - : FieldBase(name), + : FieldSet(), + _name(name), _dataType(&dataType), _fieldId(fieldId) { } Field::Field(vespalib::stringref name, const DataType& dataType) - : FieldBase(name), + : FieldSet(), + _name(name), _dataType(&dataType), _fieldId(calculateIdV7()) { } diff --git a/document/src/vespa/document/base/field.h b/document/src/vespa/document/base/field.h index eb772131392..ace5123a106 100644 --- a/document/src/vespa/document/base/field.h +++ b/document/src/vespa/document/base/field.h @@ -11,9 +11,8 @@ */ #pragma once +#include #include -#include -#include #include namespace document { @@ -21,9 +20,9 @@ namespace document { class FieldValue; class DataType; -class Field final : public vespalib::FieldBase, - public FieldSet +class Field final : public FieldSet { + vespalib::string _name; const DataType *_dataType; int _fieldId; public: @@ -92,11 +91,12 @@ public: // Note that only id is checked for equality. bool operator==(const Field & other) const noexcept { return (_fieldId == other._fieldId); } bool operator!=(const Field & other) const noexcept { return (_fieldId != other._fieldId); } - bool operator<(const Field & other) const noexcept { return (getName() < other.getName()); } + bool operator<(const Field & other) const noexcept { return (_name < other._name); } const DataType &getDataType() const { return *_dataType; } int getId() const noexcept { return _fieldId; } + const vespalib::string & getName() const { return _name; } vespalib::string toString(bool verbose=false) const; bool contains(const FieldSet& fields) const override; diff --git a/document/src/vespa/document/base/fieldpath.cpp b/document/src/vespa/document/base/fieldpath.cpp index 9b286255518..f8ba5f89727 100644 --- a/document/src/vespa/document/base/fieldpath.cpp +++ b/document/src/vespa/document/base/fieldpath.cpp @@ -15,8 +15,7 @@ using vespalib::make_string; namespace document { FieldPathEntry::FieldPathEntry(const FieldPathEntry &) = default; -FieldPathEntry & FieldPathEntry::operator=(const FieldPathEntry & ) = default; -FieldPathEntry::~FieldPathEntry() { } +FieldPathEntry::~FieldPathEntry() = default; FieldPathEntry::FieldPathEntry() : _type(NONE), diff --git a/document/src/vespa/document/base/fieldpath.h b/document/src/vespa/document/base/fieldpath.h index cd246ed78b1..d8b04cb0fbb 100644 --- a/document/src/vespa/document/base/fieldpath.h +++ b/document/src/vespa/document/base/fieldpath.h @@ -29,15 +29,11 @@ public: }; using FieldValueCP = vespalib::CloneablePtr; - /** - Creates a empty field path entry. - */ FieldPathEntry(); FieldPathEntry(FieldPathEntry &&) = default; FieldPathEntry & operator=(FieldPathEntry &&) = default; FieldPathEntry(const FieldPathEntry &); - FieldPathEntry & operator=(const FieldPathEntry &); /** Creates a field path entry for a struct field lookup. diff --git a/document/src/vespa/document/fieldvalue/fieldvalue.cpp b/document/src/vespa/document/fieldvalue/fieldvalue.cpp index 7737d03b45a..ad93d1f30f3 100644 --- a/document/src/vespa/document/fieldvalue/fieldvalue.cpp +++ b/document/src/vespa/document/fieldvalue/fieldvalue.cpp @@ -19,7 +19,6 @@ #include #include -using vespalib::FieldBase; using vespalib::nbostream; using vespalib::IllegalArgumentException; using namespace vespalib::xml; diff --git a/document/src/vespa/document/update/fieldupdate.cpp b/document/src/vespa/document/update/fieldupdate.cpp index 3498d14d96e..d82896e6a60 100644 --- a/document/src/vespa/document/update/fieldupdate.cpp +++ b/document/src/vespa/document/update/fieldupdate.cpp @@ -42,7 +42,6 @@ FieldUpdate::FieldUpdate(const DocumentTypeRepo& repo, const DataType & type, nb } FieldUpdate::FieldUpdate(const FieldUpdate &) = default; -FieldUpdate & FieldUpdate::operator = (const FieldUpdate &) = default; FieldUpdate::~FieldUpdate() = default; bool diff --git a/document/src/vespa/document/update/fieldupdate.h b/document/src/vespa/document/update/fieldupdate.h index 6bd46c3a172..77c142b3070 100644 --- a/document/src/vespa/document/update/fieldupdate.h +++ b/document/src/vespa/document/update/fieldupdate.h @@ -33,10 +33,10 @@ public: FieldUpdate(const Field& field); FieldUpdate(const FieldUpdate &); - FieldUpdate & operator = (const FieldUpdate &); + FieldUpdate & operator = (const FieldUpdate &) = delete; FieldUpdate(FieldUpdate &&) = default; FieldUpdate & operator = (FieldUpdate &&) = default; - ~FieldUpdate(); + ~FieldUpdate() override; /** * This is a convenience function to construct a field update directly from diff --git a/searchlib/src/vespa/searchlib/aggregation/aggregation.cpp b/searchlib/src/vespa/searchlib/aggregation/aggregation.cpp index d6eb3a033a2..62b598d730b 100644 --- a/searchlib/src/vespa/searchlib/aggregation/aggregation.cpp +++ b/searchlib/src/vespa/searchlib/aggregation/aggregation.cpp @@ -30,8 +30,6 @@ createAndEnsureWanted(const ResultNode & result) { } // namespace search::aggregation:: - -using vespalib::FieldBase; using vespalib::Serializer; using vespalib::Deserializer; @@ -334,19 +332,17 @@ XorAggregationResult::onReset() _xor = 0; } -static FieldBase _G_tagField("tag"); - Serializer & AggregationResult::onSerialize(Serializer & os) const { - return (os << *_expressionTree).put(_G_tagField, _tag); + return (os << *_expressionTree).put(_tag); } Deserializer & AggregationResult::onDeserialize(Deserializer & is) { _expressionTree = std::make_shared(); - return (is >> *_expressionTree).get(_G_tagField, _tag); + return (is >> *_expressionTree).get(_tag); } void @@ -453,22 +449,18 @@ MaxAggregationResult::visitMembers(vespalib::ObjectVisitor &visitor) const visit(visitor, "max", _max); } -namespace { - FieldBase _G_countField("count"); -} - Serializer & AverageAggregationResult::onSerialize(Serializer & os) const { AggregationResult::onSerialize(os); - return os.put(_G_countField, _count) << _sum; + return os.put(_count) << _sum; } Deserializer & AverageAggregationResult::onDeserialize(Deserializer & is) { AggregationResult::onDeserialize(is); - return is.get(_G_countField, _count) >> _sum; + return is.get(_count) >> _sum; } void diff --git a/searchlib/src/vespa/searchlib/aggregation/fs4hit.cpp b/searchlib/src/vespa/searchlib/aggregation/fs4hit.cpp index 19125edface..a0f938974a7 100644 --- a/searchlib/src/vespa/searchlib/aggregation/fs4hit.cpp +++ b/searchlib/src/vespa/searchlib/aggregation/fs4hit.cpp @@ -4,14 +4,15 @@ namespace search::aggregation { -using vespalib::FieldBase; using vespalib::Serializer; using vespalib::Deserializer; -static FieldBase _G_pathField("path"); -static FieldBase _G_docIdField("docId"); -static FieldBase _G_globalIdField("globalId"); -static FieldBase _G_distributionKeyField("distributionKey"); +namespace { +vespalib::string _G_pathField("path"); +vespalib::string _G_docIdField("docId"); +vespalib::string _G_globalIdField("globalId"); +vespalib::string _G_distributionKeyField("distributionKey"); +} IMPLEMENT_IDENTIFIABLE_NS2(search, aggregation, FS4Hit, Hit); @@ -19,12 +20,12 @@ Serializer & FS4Hit::onSerialize(Serializer &os) const { Hit::onSerialize(os); - os.put(_G_pathField, _path); + os.put(_path); const unsigned char * rawGid = _globalId.get(); for (size_t i = 0; i < document::GlobalId::LENGTH; ++i) { - os.put(_G_globalIdField, rawGid[i]); + os.put(rawGid[i]); } - os.put(_G_distributionKeyField, _distributionKey); + os.put(_distributionKey); return os; } @@ -32,13 +33,13 @@ Deserializer & FS4Hit::onDeserialize(Deserializer &is) { Hit::onDeserialize(is); - is.get(_G_pathField, _path); + is.get(_path); unsigned char rawGid[document::GlobalId::LENGTH]; for (size_t i = 0; i < document::GlobalId::LENGTH; ++i) { - is.get(_G_globalIdField, rawGid[i]); + is.get(rawGid[i]); } _globalId.set(rawGid); - is.get(_G_distributionKeyField, _distributionKey); + is.get(_distributionKey); return is; } @@ -46,10 +47,10 @@ void FS4Hit::visitMembers(vespalib::ObjectVisitor &visitor) const { Hit::visitMembers(visitor); - visit(visitor, _G_pathField.getName(), _path); - visit(visitor, _G_docIdField.getName(), _docId); - visit(visitor, _G_globalIdField.getName(), _globalId.toString()); - visit(visitor, _G_distributionKeyField.getName(), _distributionKey); + visit(visitor, _G_pathField, _path); + visit(visitor, _G_docIdField, _docId); + visit(visitor, _G_globalIdField, _globalId.toString()); + visit(visitor, _G_distributionKeyField, _distributionKey); } } diff --git a/searchlib/src/vespa/searchlib/aggregation/group.cpp b/searchlib/src/vespa/searchlib/aggregation/group.cpp index d6d3a8f1deb..d1d68f2593c 100644 --- a/searchlib/src/vespa/searchlib/aggregation/group.cpp +++ b/searchlib/src/vespa/searchlib/aggregation/group.cpp @@ -16,7 +16,6 @@ namespace search::aggregation { using search::expression::AggregationRefNode; using search::expression::ExpressionTree; -using vespalib::FieldBase; using vespalib::Serializer; using vespalib::Deserializer; diff --git a/searchlib/src/vespa/searchlib/aggregation/grouping.cpp b/searchlib/src/vespa/searchlib/aggregation/grouping.cpp index 4ad8e0089d9..1a2117f642a 100644 --- a/searchlib/src/vespa/searchlib/aggregation/grouping.cpp +++ b/searchlib/src/vespa/searchlib/aggregation/grouping.cpp @@ -17,7 +17,6 @@ LOG_SETUP(".searchlib.aggregation.grouping"); using namespace search::expression; -using vespalib::FieldBase; using vespalib::Serializer; using vespalib::Deserializer; diff --git a/searchlib/src/vespa/searchlib/aggregation/groupinglevel.cpp b/searchlib/src/vespa/searchlib/aggregation/groupinglevel.cpp index 2ae1855ab77..460add423fd 100644 --- a/searchlib/src/vespa/searchlib/aggregation/groupinglevel.cpp +++ b/searchlib/src/vespa/searchlib/aggregation/groupinglevel.cpp @@ -7,7 +7,6 @@ namespace search::aggregation { using expression::ResultNodeVector; -using vespalib::FieldBase; using vespalib::Serializer; using vespalib::Deserializer; @@ -23,7 +22,7 @@ GroupingLevel::GroupingLevel() : _grouper(NULL) { } -GroupingLevel::~GroupingLevel() { } +GroupingLevel::~GroupingLevel() = default; GroupingLevel::GroupingLevel(const GroupingLevel &) = default; GroupingLevel & GroupingLevel::operator =(const GroupingLevel &) = default; diff --git a/searchlib/src/vespa/searchlib/aggregation/hit.cpp b/searchlib/src/vespa/searchlib/aggregation/hit.cpp index 3f4f46b4a51..e0d63504218 100644 --- a/searchlib/src/vespa/searchlib/aggregation/hit.cpp +++ b/searchlib/src/vespa/searchlib/aggregation/hit.cpp @@ -4,24 +4,25 @@ namespace search::aggregation { -using vespalib::FieldBase; using vespalib::Serializer; using vespalib::Deserializer; IMPLEMENT_IDENTIFIABLE_ABSTRACT_NS2(search, aggregation, Hit, vespalib::Identifiable); -static FieldBase _G_rankField("rank"); +namespace { + const vespalib::string _G_rankField("rank"); +} Serializer & Hit::onSerialize(Serializer &os) const { - return os.put(_G_rankField, _rank); + return os.put(_rank); } Deserializer & Hit::onDeserialize(Deserializer &is) { - return is.get(_G_rankField, _rank); + return is.get(_rank); } int @@ -34,7 +35,7 @@ Hit::onCmp(const Identifiable &b) const void Hit::visitMembers(vespalib::ObjectVisitor &visitor) const { - visit(visitor, _G_rankField.getName(), _rank); + visit(visitor, _G_rankField, _rank); } } diff --git a/searchlib/src/vespa/searchlib/aggregation/hitlist.cpp b/searchlib/src/vespa/searchlib/aggregation/hitlist.cpp index 2cc82d59fff..8d6f5ef42b2 100644 --- a/searchlib/src/vespa/searchlib/aggregation/hitlist.cpp +++ b/searchlib/src/vespa/searchlib/aggregation/hitlist.cpp @@ -7,7 +7,6 @@ namespace search::aggregation { -using vespalib::FieldBase; using vespalib::Serializer; using vespalib::Deserializer; using HitCP = vespalib::IdentifiablePtr; diff --git a/searchlib/src/vespa/searchlib/aggregation/hitsaggregationresult.cpp b/searchlib/src/vespa/searchlib/aggregation/hitsaggregationresult.cpp index afaf270b795..636609790ff 100644 --- a/searchlib/src/vespa/searchlib/aggregation/hitsaggregationresult.cpp +++ b/searchlib/src/vespa/searchlib/aggregation/hitsaggregationresult.cpp @@ -9,7 +9,6 @@ LOG_SETUP(".searchlib.aggregation.hitsaggregationresult"); namespace search::aggregation { -using vespalib::FieldBase; using vespalib::Serializer; using vespalib::Deserializer; diff --git a/searchlib/src/vespa/searchlib/aggregation/vdshit.cpp b/searchlib/src/vespa/searchlib/aggregation/vdshit.cpp index 67c01b58331..d67a000eb4d 100644 --- a/searchlib/src/vespa/searchlib/aggregation/vdshit.cpp +++ b/searchlib/src/vespa/searchlib/aggregation/vdshit.cpp @@ -7,38 +7,38 @@ namespace search::aggregation { -using vespalib::FieldBase; using vespalib::Serializer; using vespalib::Deserializer; -static FieldBase _G_docIdField("docId"); -static FieldBase _G_summaryField("summary"); +namespace { + vespalib::string _G_docIdField("docId"); + vespalib::string _G_summaryField("summary"); +} IMPLEMENT_IDENTIFIABLE_NS2(search, aggregation, VdsHit, Hit); -VdsHit::~VdsHit() { -} +VdsHit::~VdsHit() = default; Serializer & VdsHit::onSerialize(Serializer &os) const { Hit::onSerialize(os); - return os.put(_G_docIdField, _docId) << _summary; + return os.put(_docId) << _summary; } Deserializer & VdsHit::onDeserialize(Deserializer &is) { Hit::onDeserialize(is); - return is.get(_G_docIdField, _docId) >> _summary; + return is.get(_docId) >> _summary; } void VdsHit::visitMembers(vespalib::ObjectVisitor &visitor) const { Hit::visitMembers(visitor); - visit(visitor, _G_docIdField.getName(), _docId); - visit(visitor, _G_summaryField.getName(), _summary); + visit(visitor, _G_docIdField, _docId); + visit(visitor, _G_summaryField, _summary); } } diff --git a/searchlib/src/vespa/searchlib/expression/bucketresultnode.cpp b/searchlib/src/vespa/searchlib/expression/bucketresultnode.cpp index 340d0489d5a..fa89be71680 100644 --- a/searchlib/src/vespa/searchlib/expression/bucketresultnode.cpp +++ b/searchlib/src/vespa/searchlib/expression/bucketresultnode.cpp @@ -1,15 +1,13 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "bucketresultnode.h" -namespace search { -namespace expression { +namespace search::expression { IMPLEMENT_IDENTIFIABLE_ABSTRACT_NS2(search, expression, BucketResultNode, vespalib::Identifiable); -vespalib::FieldBase BucketResultNode::_toField("to"); -vespalib::FieldBase BucketResultNode::_fromField("from"); +const vespalib::string BucketResultNode::_toField("to"); +const vespalib::string BucketResultNode::_fromField("from"); -} } // this function was added by ../../forcelink.sh diff --git a/searchlib/src/vespa/searchlib/expression/bucketresultnode.h b/searchlib/src/vespa/searchlib/expression/bucketresultnode.h index 1b0ec235297..dd815c228ff 100644 --- a/searchlib/src/vespa/searchlib/expression/bucketresultnode.h +++ b/searchlib/src/vespa/searchlib/expression/bucketresultnode.h @@ -3,8 +3,7 @@ #include "resultnode.h" -namespace search { -namespace expression { +namespace search::expression { class BucketResultNode : public ResultNode { @@ -12,8 +11,8 @@ public: DECLARE_ABSTRACT_EXPRESSIONNODE(BucketResultNode); void set(const ResultNode & rhs) override { (void) rhs; } protected: - static vespalib::FieldBase _fromField; - static vespalib::FieldBase _toField; + static const vespalib::string _fromField; + static const vespalib::string _toField; private: int64_t onGetInteger(size_t index) const override { (void) index; return 0; } double onGetFloat(size_t index) const override { (void) index; return 0; } @@ -23,4 +22,3 @@ private: }; } -} diff --git a/searchlib/src/vespa/searchlib/expression/catserializer.cpp b/searchlib/src/vespa/searchlib/expression/catserializer.cpp index 2d64f3db9f9..bf98dba877f 100644 --- a/searchlib/src/vespa/searchlib/expression/catserializer.cpp +++ b/searchlib/src/vespa/searchlib/expression/catserializer.cpp @@ -5,42 +5,36 @@ #include #include -namespace search { -namespace expression { +namespace search::expression { -using vespalib::IFieldBase; using vespalib::Serializer; using vespalib::Deserializer; using vespalib::string; using vespalib::stringref; -CatSerializer & CatSerializer::put(const IFieldBase & field, stringref value) +CatSerializer & CatSerializer::put(stringref value) { - (void) field; getStream().write(value.data(), value.size()); return *this; } -CatSerializer & CatSerializer::nop(const IFieldBase & field, const void * value) +CatSerializer & CatSerializer::nop(const void *) { - (void) field; - (void) value; throw vespalib::Exception("search::expression::CatSerializer can not deserialize anything as it looses information on serialize"); return *this; } -CatSerializer & CatSerializer::get(const IFieldBase & field, bool & value) { return nop(field, &value); } -CatSerializer & CatSerializer::get(const IFieldBase & field, uint8_t & value) { return nop(field, &value); } -CatSerializer & CatSerializer::get(const IFieldBase & field, uint16_t & value) { return nop(field, &value); } -CatSerializer & CatSerializer::get(const IFieldBase & field, uint32_t & value) { return nop(field, &value); } -CatSerializer & CatSerializer::get(const IFieldBase & field, uint64_t & value) { return nop(field, &value); } -CatSerializer & CatSerializer::get(const IFieldBase & field, double & value) { return nop(field, &value); } -CatSerializer & CatSerializer::get(const IFieldBase & field, float & value) { return nop(field, &value); } -CatSerializer & CatSerializer::get(const IFieldBase & field, string & value) { return nop(field, &value); } +CatSerializer & CatSerializer::get(bool & value) { return nop(&value); } +CatSerializer & CatSerializer::get(uint8_t & value) { return nop(&value); } +CatSerializer & CatSerializer::get(uint16_t & value) { return nop(&value); } +CatSerializer & CatSerializer::get(uint32_t & value) { return nop(&value); } +CatSerializer & CatSerializer::get(uint64_t & value) { return nop(&value); } +CatSerializer & CatSerializer::get(double & value) { return nop(&value); } +CatSerializer & CatSerializer::get(float & value) { return nop(&value); } +CatSerializer & CatSerializer::get(string & value) { return nop(&value); } -CatSerializer & CatSerializer::put(const vespalib::IFieldBase & field, const vespalib::Identifiable & value) +CatSerializer & CatSerializer::put(const vespalib::Identifiable & value) { - (void) field; if (value.inherits(ResultNode::classId)) { static_cast(value).onSerializeResult(*this); } else { @@ -49,17 +43,15 @@ CatSerializer & CatSerializer::put(const vespalib::IFieldBase & field, const ve return *this; } -ResultSerializer & CatSerializer::putResult(const vespalib::IFieldBase & field, const RawResultNode & value) +ResultSerializer & CatSerializer::putResult(const RawResultNode & value) { - (void) field; vespalib::ConstBufferRef raw(value.get()); getStream().write(raw.c_str(), raw.size()); return *this; } -ResultSerializer & CatSerializer::putResult(const vespalib::IFieldBase & field, const ResultNodeVector & value) +ResultSerializer & CatSerializer::putResult(const ResultNodeVector & value) { - (void) field; size_t sz(value.size()); for (size_t i(0); i < sz; i++) { value.get(i).serialize(*this); @@ -72,7 +64,6 @@ void CatSerializer::proxyPut(const ResultNode & value) value.serializeDirect(*this); } -} } // this function was added by ../../forcelink.sh diff --git a/searchlib/src/vespa/searchlib/expression/catserializer.h b/searchlib/src/vespa/searchlib/expression/catserializer.h index cce4af3880b..d0e74a24b1c 100644 --- a/searchlib/src/vespa/searchlib/expression/catserializer.h +++ b/searchlib/src/vespa/searchlib/expression/catserializer.h @@ -4,8 +4,7 @@ #include "serializer.h" #include -namespace search { -namespace expression { +namespace search::expression { class RawResultNode; @@ -13,24 +12,23 @@ class CatSerializer : public vespalib::NBOSerializer, public ResultSerializer { public: CatSerializer(vespalib::nbostream & stream) : vespalib::NBOSerializer(stream) { } - CatSerializer & put(const vespalib::IFieldBase & field, const vespalib::Identifiable & value) override; - CatSerializer & put(const vespalib::IFieldBase & field, vespalib::stringref value) override; - ResultSerializer & putResult(const vespalib::IFieldBase & field, const RawResultNode & value) override; - ResultSerializer & putResult(const vespalib::IFieldBase & field, const ResultNodeVector & value) override; + CatSerializer & put(const vespalib::Identifiable & value) override; + CatSerializer & put(vespalib::stringref value) override; + ResultSerializer & putResult(const RawResultNode & value) override; + ResultSerializer & putResult(const ResultNodeVector & value) override; void proxyPut(const ResultNode & value) override; - CatSerializer & get(const vespalib::IFieldBase & field, bool & value) override; - CatSerializer & get(const vespalib::IFieldBase & field, uint8_t & value) override; - CatSerializer & get(const vespalib::IFieldBase & field, uint16_t & value) override; - CatSerializer & get(const vespalib::IFieldBase & field, uint32_t & value) override; - CatSerializer & get(const vespalib::IFieldBase & field, uint64_t & value) override; - CatSerializer & get(const vespalib::IFieldBase & field, double & value) override; - CatSerializer & get(const vespalib::IFieldBase & field, float & value) override; - CatSerializer & get(const vespalib::IFieldBase & field, vespalib::string & value) override; + CatSerializer & get(bool & value) override; + CatSerializer & get(uint8_t & value) override; + CatSerializer & get(uint16_t & value) override; + CatSerializer & get(uint32_t & value) override; + CatSerializer & get(uint64_t & value) override; + CatSerializer & get(double & value) override; + CatSerializer & get(float & value) override; + CatSerializer & get(vespalib::string & value) override; private: - CatSerializer & nop(const vespalib::IFieldBase & field, const void * value) __attribute__((noinline)); + CatSerializer & nop(const void * value) __attribute__((noinline)); }; } -} diff --git a/searchlib/src/vespa/searchlib/expression/debugwaitfunctionnode.cpp b/searchlib/src/vespa/searchlib/expression/debugwaitfunctionnode.cpp index aa1fdd249a7..912e8d3514f 100644 --- a/searchlib/src/vespa/searchlib/expression/debugwaitfunctionnode.cpp +++ b/searchlib/src/vespa/searchlib/expression/debugwaitfunctionnode.cpp @@ -4,7 +4,6 @@ namespace search::expression { -using vespalib::FieldBase; using vespalib::Serializer; using vespalib::Deserializer; using namespace std::chrono; diff --git a/searchlib/src/vespa/searchlib/expression/documentfieldnode.cpp b/searchlib/src/vespa/searchlib/expression/documentfieldnode.cpp index fd722d0676f..07377943e24 100644 --- a/searchlib/src/vespa/searchlib/expression/documentfieldnode.cpp +++ b/searchlib/src/vespa/searchlib/expression/documentfieldnode.cpp @@ -40,7 +40,7 @@ DocumentFieldNode & DocumentFieldNode::operator = (const DocumentFieldNode & rhs _fieldPath = rhs._fieldPath; _value = rhs._value; _fieldName = rhs._fieldName; - _doc = NULL; + _doc = nullptr; } return *this; } @@ -123,7 +123,7 @@ void DocumentFieldNode::onPrepare(bool preserveAccurateTypes) } } const document::FieldPathEntry & endOfPath(_fieldPath.back()); - if (endOfPath.getFieldValueToSetPtr() != NULL) { + if (endOfPath.getFieldValueToSetPtr() != nullptr) { const FieldValue& fv = endOfPath.getFieldValueToSet(); _value.reset(deduceResultNode(_fieldName, fv, preserveAccurateTypes, nestedMultiValue).release()); if (_value->inherits(ResultNodeVector::classId)) { @@ -155,7 +155,7 @@ class FieldValue2ResultNode : public ResultNode { public: DECLARE_EXPRESSIONNODE(FieldValue2ResultNode); - FieldValue2ResultNode(const FieldValue * fv=NULL) : _fv(fv) { } + FieldValue2ResultNode(const FieldValue * fv=nullptr) : _fv(fv) { } int64_t onGetInteger(size_t index) const override { (void) index; return _fv ? _fv->getAsLong() : 0; } double onGetFloat(size_t index) const override { (void) index; return _fv ? _fv->getAsDouble() : 0; } ConstBufferRef onGetString(size_t index, BufferRef buf) const override { @@ -262,8 +262,8 @@ class String2ResultNode : public ResultNode { public: String2ResultNode(vespalib::stringref s) : _s(s) { } - int64_t onGetInteger(size_t index) const override { (void) index; return strtoul(_s.c_str(), NULL, 0); } - double onGetFloat(size_t index) const override { (void) index; return vespalib::locale::c::strtod(_s.c_str(), NULL); } + int64_t onGetInteger(size_t index) const override { (void) index; return strtoul(_s.c_str(), nullptr, 0); } + double onGetFloat(size_t index) const override { (void) index; return vespalib::locale::c::strtod(_s.c_str(), nullptr); } ConstBufferRef onGetString(size_t index, BufferRef buf) const override { (void) index; (void) buf; return ConstBufferRef(_s.c_str(), _s.size()); } private: String2ResultNode * clone() const override { return new String2ResultNode(_s); } @@ -283,7 +283,9 @@ void GetDocIdNamespaceSpecificFunctionNode::onDoc(const Document & doc) _value->set(converter); } -static const FieldBase _G_valueField("value"); +namespace { +const vespalib::string _G_valueField("value"); +} Serializer & GetDocIdNamespaceSpecificFunctionNode::onSerialize(Serializer & os) const { @@ -297,7 +299,7 @@ Deserializer & GetDocIdNamespaceSpecificFunctionNode::onDeserialize(Deserializer void GetDocIdNamespaceSpecificFunctionNode::visitMembers(vespalib::ObjectVisitor &visitor) const { - visit(visitor, _G_valueField.getName(), _value); + visit(visitor, _G_valueField, _value); } void GetYMUMChecksumFunctionNode::onDoc(const Document & doc) diff --git a/searchlib/src/vespa/searchlib/expression/floatbucketresultnode.cpp b/searchlib/src/vespa/searchlib/expression/floatbucketresultnode.cpp index 29c7d81eed4..ca7a503da6b 100644 --- a/searchlib/src/vespa/searchlib/expression/floatbucketresultnode.cpp +++ b/searchlib/src/vespa/searchlib/expression/floatbucketresultnode.cpp @@ -60,20 +60,20 @@ int FloatBucketResultNode::contains(const FloatBucketResultNode & b) const void FloatBucketResultNode::visitMembers(vespalib::ObjectVisitor &visitor) const { - visit(visitor, _fromField.getName(), _from); - visit(visitor, _toField.getName(), _to); + visit(visitor, _fromField, _from); + visit(visitor, _toField, _to); } vespalib::Serializer & FloatBucketResultNode::onSerialize(vespalib::Serializer & os) const { - return os.put(_fromField, _from).put(_toField, _to); + return os.put(_from).put(_to); } vespalib::Deserializer & FloatBucketResultNode::onDeserialize(vespalib::Deserializer & is) { - return is.get(_fromField, _from).get(_toField, _to); + return is.get(_from).get(_to); } } diff --git a/searchlib/src/vespa/searchlib/expression/integerbucketresultnode.cpp b/searchlib/src/vespa/searchlib/expression/integerbucketresultnode.cpp index b19e62ad244..ee1f2e282f7 100644 --- a/searchlib/src/vespa/searchlib/expression/integerbucketresultnode.cpp +++ b/searchlib/src/vespa/searchlib/expression/integerbucketresultnode.cpp @@ -48,20 +48,20 @@ int IntegerBucketResultNode::contains(const IntegerBucketResultNode & b) const void IntegerBucketResultNode::visitMembers(vespalib::ObjectVisitor &visitor) const { - visit(visitor, _fromField.getName(), _from); - visit(visitor, _toField.getName(), _to); + visit(visitor, _fromField, _from); + visit(visitor, _toField, _to); } vespalib::Serializer & IntegerBucketResultNode::onSerialize(vespalib::Serializer & os) const { - return os.put(_fromField, _from).put(_toField, _to); + return os.put(_from).put(_to); } vespalib::Deserializer & IntegerBucketResultNode::onDeserialize(vespalib::Deserializer & is) { - return is.get(_fromField, _from).get(_toField, _to); + return is.get(_from).get(_to); } } diff --git a/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.cpp b/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.cpp index e4715bd9fff..84d108db82f 100644 --- a/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.cpp +++ b/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.cpp @@ -2,8 +2,7 @@ #include "rawbucketresultnode.h" #include -namespace search { -namespace expression { +namespace search::expression { IMPLEMENT_RESULTNODE(RawBucketResultNode, BucketResultNode); @@ -41,7 +40,7 @@ RawBucketResultNode::RawBucketResultNode() _to(new RawResultNode()) {} -RawBucketResultNode::~RawBucketResultNode() {} +RawBucketResultNode::~RawBucketResultNode() = default; int RawBucketResultNode::onCmp(const Identifiable & rhs) const @@ -73,8 +72,8 @@ int RawBucketResultNode::contains(const ConstBufferRef & s) const void RawBucketResultNode::visitMembers(vespalib::ObjectVisitor &visitor) const { - visit(visitor, _fromField.getName(), _from); - visit(visitor, _toField.getName(), _to); + visit(visitor, _fromField, _from); + visit(visitor, _toField, _to); } vespalib::Serializer & @@ -93,7 +92,6 @@ RawBucketResultNode::onDeserialize(vespalib::Deserializer & is) return is; } -} } // this function was added by ../../forcelink.sh diff --git a/searchlib/src/vespa/searchlib/expression/resultnodes.cpp b/searchlib/src/vespa/searchlib/expression/resultnodes.cpp index 69cad65795f..059153e83a8 100644 --- a/searchlib/src/vespa/searchlib/expression/resultnodes.cpp +++ b/searchlib/src/vespa/searchlib/expression/resultnodes.cpp @@ -148,8 +148,8 @@ int PositiveInfinityResultNode::onCmp(const Identifiable & b) const return 1; } -int64_t StringResultNode::onGetInteger(size_t index) const { (void) index; return strtoll(_value.c_str(), NULL, 0); } -double StringResultNode::onGetFloat(size_t index) const { (void) index; return vespalib::locale::c::strtod(_value.c_str(), NULL); } +int64_t StringResultNode::onGetInteger(size_t index) const { (void) index; return strtoll(_value.c_str(), nullptr, 0); } +double StringResultNode::onGetFloat(size_t index) const { (void) index; return vespalib::locale::c::strtod(_value.c_str(), nullptr); } Serializer & StringResultNode::onSerialize(Serializer & os) const { @@ -366,7 +366,7 @@ Serializer & RawResultNode::onSerialize(Serializer & os) const ResultSerializer & RawResultNode::onSerializeResult(ResultSerializer & os) const { - return os.putResult(getClass(), *this); + return os.putResult(*this); } int RawResultNode::onCmp(const Identifiable & b) const @@ -402,7 +402,7 @@ RawResultNode::onDeserialize(Deserializer & is) ResultDeserializer & RawResultNode::onDeserializeResult(ResultDeserializer & is) { - return is.getResult(getClass(), *this); + return is.getResult(*this); } void diff --git a/searchlib/src/vespa/searchlib/expression/resultvector.cpp b/searchlib/src/vespa/searchlib/expression/resultvector.cpp index f1aed219965..bcbc4ae97e6 100644 --- a/searchlib/src/vespa/searchlib/expression/resultvector.cpp +++ b/searchlib/src/vespa/searchlib/expression/resultvector.cpp @@ -29,7 +29,7 @@ GeneralResultNodeVector::find(const ResultNode & key) const return _v[i].get(); } } - return NULL; + return nullptr; } size_t @@ -45,13 +45,13 @@ GeneralResultNodeVector::hash() const ResultSerializer & ResultNodeVector::onSerializeResult(ResultSerializer & os) const { - return os.putResult(getClass(), *this); + return os.putResult(*this); } ResultDeserializer & ResultNodeVector::onDeserializeResult(ResultDeserializer & is) { - return is.getResult(getClass(), *this); + return is.getResult(*this); } } diff --git a/searchlib/src/vespa/searchlib/expression/serializer.h b/searchlib/src/vespa/searchlib/expression/serializer.h index c0c8a716ef9..3498d8beb41 100644 --- a/searchlib/src/vespa/searchlib/expression/serializer.h +++ b/searchlib/src/vespa/searchlib/expression/serializer.h @@ -1,10 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -namespace vespalib { class IFieldBase; } - -namespace search { -namespace expression { +namespace search::expression { class RawResultNode; class ResultNodeVector; @@ -13,21 +10,19 @@ class ResultNode; class ResultSerializer { public: - virtual ~ResultSerializer() { } - virtual ResultSerializer & putResult(const vespalib::IFieldBase & field, const RawResultNode & value) = 0; - virtual ResultSerializer & putResult(const vespalib::IFieldBase & field, const ResultNodeVector & value) = 0; + virtual ~ResultSerializer() = default; + virtual ResultSerializer & putResult(const RawResultNode & value) = 0; + virtual ResultSerializer & putResult(const ResultNodeVector & value) = 0; virtual void proxyPut(const ResultNode & value) = 0; }; class ResultDeserializer { public: - virtual ~ResultDeserializer() { } - virtual ResultDeserializer & getResult(const vespalib::IFieldBase & field, RawResultNode & value) = 0; - virtual ResultDeserializer & getResult(const vespalib::IFieldBase & field, ResultNodeVector & value) = 0; + virtual ~ResultDeserializer() = default; + virtual ResultDeserializer & getResult(RawResultNode & value) = 0; + virtual ResultDeserializer & getResult(ResultNodeVector & value) = 0; virtual void proxyGet(const ResultNode & value) = 0; }; } -} - diff --git a/searchlib/src/vespa/searchlib/expression/strcatserializer.cpp b/searchlib/src/vespa/searchlib/expression/strcatserializer.cpp index 9b0a6b5cf77..3057703b25e 100644 --- a/searchlib/src/vespa/searchlib/expression/strcatserializer.cpp +++ b/searchlib/src/vespa/searchlib/expression/strcatserializer.cpp @@ -4,17 +4,14 @@ #include "resultvector.h" #include -namespace search { -namespace expression { +namespace search::expression { -using vespalib::IFieldBase; using vespalib::Serializer; using vespalib::string; using vespalib::stringref; -StrCatSerializer & StrCatSerializer::put(const vespalib::IFieldBase & field, const vespalib::Identifiable & value) +StrCatSerializer & StrCatSerializer::put(const vespalib::Identifiable & value) { - (void) field; if (value.inherits(ResultNode::classId)) { static_cast(value).onSerializeResult(*this); } else { @@ -23,9 +20,8 @@ StrCatSerializer & StrCatSerializer::put(const vespalib::IFieldBase & field, co return *this; } -ResultSerializer & StrCatSerializer::putResult(const vespalib::IFieldBase & field, const ResultNodeVector & value) +ResultSerializer & StrCatSerializer::putResult(const ResultNodeVector & value) { - (void) field; size_t sz(value.size()); for (size_t i(0); i < sz; i++) { value.get(i).serialize(*this); @@ -33,9 +29,8 @@ ResultSerializer & StrCatSerializer::putResult(const vespalib::IFieldBase & fie return *this; } -ResultSerializer & StrCatSerializer::putResult(const vespalib::IFieldBase & field, const RawResultNode & value) +ResultSerializer & StrCatSerializer::putResult(const RawResultNode & value) { - (void) field; vespalib::ConstBufferRef buf(value.get()); getStream() << stringref(buf.c_str(), buf.size()); return *this; @@ -46,7 +41,6 @@ void StrCatSerializer::proxyPut(const ResultNode & value) value.serializeDirect(*this); } -} } // this function was added by ../../forcelink.sh diff --git a/searchlib/src/vespa/searchlib/expression/strcatserializer.h b/searchlib/src/vespa/searchlib/expression/strcatserializer.h index 21c5afa88b7..01f8adae8b5 100644 --- a/searchlib/src/vespa/searchlib/expression/strcatserializer.h +++ b/searchlib/src/vespa/searchlib/expression/strcatserializer.h @@ -4,8 +4,7 @@ #include "serializer.h" #include -namespace search { -namespace expression { +namespace search::expression { class RawResultNode; @@ -13,12 +12,10 @@ class StrCatSerializer : public vespalib::AsciiSerializer, public ResultSerializ { public: StrCatSerializer(vespalib::asciistream & stream) : vespalib::AsciiSerializer(stream) { } - StrCatSerializer & put(const vespalib::IFieldBase & field, const vespalib::Identifiable & value) override; - ResultSerializer & putResult(const vespalib::IFieldBase & field, const ResultNodeVector & value) override; - ResultSerializer & putResult(const vespalib::IFieldBase & field, const RawResultNode & value) override; + StrCatSerializer & put(const vespalib::Identifiable & value) override; + ResultSerializer & putResult(const ResultNodeVector & value) override; + ResultSerializer & putResult(const RawResultNode & value) override; void proxyPut(const ResultNode & value) override; }; } -} - diff --git a/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.cpp b/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.cpp index 9938d1a3d55..581e8d41378 100644 --- a/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.cpp +++ b/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.cpp @@ -75,8 +75,8 @@ int StringBucketResultNode::contains(const char * s) const void StringBucketResultNode::visitMembers(vespalib::ObjectVisitor &visitor) const { - visit(visitor, _fromField.getName(), _from); - visit(visitor, _toField.getName(), _to); + visit(visitor, _fromField, _from); + visit(visitor, _toField, _to); } vespalib::Serializer & diff --git a/searchlib/src/vespa/searchlib/expression/timestamp.cpp b/searchlib/src/vespa/searchlib/expression/timestamp.cpp index 4ad3add1b6a..1c340923cfd 100644 --- a/searchlib/src/vespa/searchlib/expression/timestamp.cpp +++ b/searchlib/src/vespa/searchlib/expression/timestamp.cpp @@ -4,7 +4,6 @@ namespace search::expression { -using vespalib::FieldBase; using vespalib::Serializer; using vespalib::Deserializer; @@ -19,7 +18,7 @@ TimeStampFunctionNode::TimeStampFunctionNode(ExpressionNode::UP arg, TimePart ti _timePart(timePart), _isGmt(gmt) { } -TimeStampFunctionNode::~TimeStampFunctionNode() {} +TimeStampFunctionNode::~TimeStampFunctionNode() = default; TimeStampFunctionNode::TimeStampFunctionNode(const TimeStampFunctionNode & rhs) : UnaryFunctionNode(rhs), diff --git a/searchlib/src/vespa/searchlib/expression/zcurve.cpp b/searchlib/src/vespa/searchlib/expression/zcurve.cpp index e18c5f8ea1c..94738a83208 100644 --- a/searchlib/src/vespa/searchlib/expression/zcurve.cpp +++ b/searchlib/src/vespa/searchlib/expression/zcurve.cpp @@ -3,12 +3,10 @@ #include "zcurve.h" #include -using vespalib::FieldBase; using vespalib::Serializer; using vespalib::Deserializer; -namespace search { -namespace expression { +namespace search::expression { IMPLEMENT_EXPRESSIONNODE(ZCurveFunctionNode, UnaryFunctionNode); @@ -34,11 +32,11 @@ ZCurveFunctionNode & ZCurveFunctionNode::operator = (const ZCurveFunctionNode & void ZCurveFunctionNode::onPrepareResult() { if (getArg().getResult().inherits(ResultNodeVector::classId)) { - setResultType(std::unique_ptr(new IntegerResultNodeVector)); - _handler.reset(new MultiValueHandler(*this)); + setResultType(std::make_unique()); + _handler = std::make_unique(*this); } else { - setResultType(std::unique_ptr(new Int64ResultNode)); - _handler.reset(new SingleValueHandler(*this)); + setResultType(std::make_unique()); + _handler = std::make_unique(*this); } } @@ -86,7 +84,6 @@ Deserializer & ZCurveFunctionNode::onDeserialize(Deserializer & is) return is; } -} } // this function was added by ../../forcelink.sh diff --git a/searchlib/src/vespa/searchlib/uca/ucafunctionnode.cpp b/searchlib/src/vespa/searchlib/uca/ucafunctionnode.cpp index 34bc63160e6..da8f5c8c462 100644 --- a/searchlib/src/vespa/searchlib/uca/ucafunctionnode.cpp +++ b/searchlib/src/vespa/searchlib/uca/ucafunctionnode.cpp @@ -2,22 +2,15 @@ #include "ucafunctionnode.h" #include "ucaconverter.h" -namespace search { -namespace expression { +namespace search::expression { -using vespalib::FieldBase; using vespalib::Serializer; using vespalib::Deserializer; IMPLEMENT_EXPRESSIONNODE(UcaFunctionNode, UnaryFunctionNode); -UcaFunctionNode::UcaFunctionNode() -{ -} - -UcaFunctionNode::~UcaFunctionNode() -{ -} +UcaFunctionNode::UcaFunctionNode() = default; +UcaFunctionNode::~UcaFunctionNode() = default; UcaFunctionNode::UcaFunctionNode(ExpressionNode::UP arg, const vespalib::string & locale, const vespalib::string & strength) : UnaryFunctionNode(std::move(arg)), @@ -51,11 +44,11 @@ UcaFunctionNode & UcaFunctionNode::operator = (const UcaFunctionNode & rhs) void UcaFunctionNode::onPrepareResult() { if (getArg().getResult().inherits(ResultNodeVector::classId)) { - setResultType(std::unique_ptr(new RawResultNodeVector)); - _handler.reset(new MultiValueHandler(*this)); + setResultType(std::make_unique()); + _handler = std::make_unique(*this); } else { - setResultType(std::unique_ptr(new RawResultNode)); - _handler.reset(new SingleValueHandler(*this)); + setResultType(std::make_unique()); + _handler = std::make_unique(*this); } } @@ -107,7 +100,6 @@ Deserializer & UcaFunctionNode::onDeserialize(Deserializer & is) return is; } -} } // this function was added by ../../forcelink.sh diff --git a/searchlib/src/vespa/searchlib/uca/ucafunctionnode.h b/searchlib/src/vespa/searchlib/uca/ucafunctionnode.h index 7c5e2958f51..10d51a397d5 100644 --- a/searchlib/src/vespa/searchlib/uca/ucafunctionnode.h +++ b/searchlib/src/vespa/searchlib/uca/ucafunctionnode.h @@ -7,8 +7,7 @@ #include -namespace search { -namespace expression { +namespace search::expression { class UcaFunctionNode : public UnaryFunctionNode { @@ -16,7 +15,7 @@ public: DECLARE_EXPRESSIONNODE(UcaFunctionNode); DECLARE_NBO_SERIALIZE; UcaFunctionNode(); - ~UcaFunctionNode(); + ~UcaFunctionNode() override; UcaFunctionNode(ExpressionNode::UP arg, const vespalib::string & locale, const vespalib::string & strength); UcaFunctionNode(const UcaFunctionNode & rhs); UcaFunctionNode & operator = (const UcaFunctionNode & rhs); @@ -26,7 +25,7 @@ private: class Handler { public: Handler(const UcaFunctionNode & uca); - virtual ~Handler() { } + virtual ~Handler() = default; virtual void handle(const ResultNode & arg) = 0; protected: void handleOne(const ResultNode & arg, RawResultNode & result) const; @@ -56,5 +55,3 @@ private: }; } -} - diff --git a/staging_vespalib/src/vespa/vespalib/objects/CMakeLists.txt b/staging_vespalib/src/vespa/vespalib/objects/CMakeLists.txt index f3afda94fe6..5e21426cacd 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/CMakeLists.txt +++ b/staging_vespalib/src/vespa/vespalib/objects/CMakeLists.txt @@ -9,7 +9,6 @@ vespa_add_library(staging_vespalib_vespalib_objects OBJECT visit.cpp objectpredicate.cpp objectoperation.cpp - fieldbase.cpp nboserializer.cpp serializer.cpp deserializer.cpp diff --git a/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.cpp b/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.cpp index 698900a8e80..1ec2e5d0bfd 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.cpp +++ b/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.cpp @@ -1,45 +1,45 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include +#include "asciiserializer.h" #include namespace vespalib { -AsciiSerializer &AsciiSerializer::put(const IFieldBase &, bool value) { +AsciiSerializer &AsciiSerializer::put(bool value) { _stream << value; return *this; } -AsciiSerializer &AsciiSerializer::put(const IFieldBase &, uint8_t value) { +AsciiSerializer &AsciiSerializer::put(uint8_t value) { _stream << value; return *this; } -AsciiSerializer &AsciiSerializer::put(const IFieldBase &, uint16_t value) { +AsciiSerializer &AsciiSerializer::put(uint16_t value) { _stream << value; return *this; } -AsciiSerializer &AsciiSerializer::put(const IFieldBase &, uint32_t value) { +AsciiSerializer &AsciiSerializer::put(uint32_t value) { _stream << value; return *this; } -AsciiSerializer &AsciiSerializer::put(const IFieldBase &, uint64_t value) { +AsciiSerializer &AsciiSerializer::put(uint64_t value) { _stream << value; return *this; } -AsciiSerializer &AsciiSerializer::put(const IFieldBase &, float value) { +AsciiSerializer &AsciiSerializer::put(float value) { _stream << value; return *this; } -AsciiSerializer &AsciiSerializer::put(const IFieldBase &, double value) { +AsciiSerializer &AsciiSerializer::put(double value) { _stream << value; return *this; } -AsciiSerializer &AsciiSerializer::put(const IFieldBase &, stringref value) { +AsciiSerializer &AsciiSerializer::put(stringref value) { _stream << value; return *this; } diff --git a/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.h b/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.h index 0066c96934e..ee601fb5a9d 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.h +++ b/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.h @@ -11,14 +11,14 @@ class asciistream; class AsciiSerializer : public Serializer { public: AsciiSerializer(asciistream &stream) : _stream(stream) { } - AsciiSerializer &put(const IFieldBase &field, bool value) override; - AsciiSerializer &put(const IFieldBase &field, uint8_t value) override; - AsciiSerializer &put(const IFieldBase &field, uint16_t value) override; - AsciiSerializer &put(const IFieldBase &field, uint32_t value) override; - AsciiSerializer &put(const IFieldBase &field, uint64_t value) override; - AsciiSerializer &put(const IFieldBase &field, float value) override; - AsciiSerializer &put(const IFieldBase &field, double value) override; - AsciiSerializer &put(const IFieldBase &field, stringref val) override; + AsciiSerializer &put(bool value) override; + AsciiSerializer &put(uint8_t value) override; + AsciiSerializer &put(uint16_t value) override; + AsciiSerializer &put(uint32_t value) override; + AsciiSerializer &put(uint64_t value) override; + AsciiSerializer &put(float value) override; + AsciiSerializer &put(double value) override; + AsciiSerializer &put(stringref val) override; const asciistream &getStream() const { return _stream; } asciistream &getStream() { return _stream; } diff --git a/staging_vespalib/src/vespa/vespalib/objects/deserializer.cpp b/staging_vespalib/src/vespa/vespalib/objects/deserializer.cpp index afa04346bc1..9446f198c87 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/deserializer.cpp +++ b/staging_vespalib/src/vespa/vespalib/objects/deserializer.cpp @@ -4,43 +4,42 @@ namespace vespalib { -Deserializer & Deserializer::get(const IFieldBase & field, Identifiable & value) +Deserializer & Deserializer::get(Identifiable & value) { - (void) field; return value.deserializeDirect(*this); } -Deserializer & Deserializer::get(const IFieldBase & field, int8_t & value) +Deserializer & Deserializer::get(int8_t & value) { uint8_t v(0); - get(field, v); + get(v); value = v; return *this; } -Deserializer & Deserializer::get(const IFieldBase & field, int16_t & value) +Deserializer & Deserializer::get(int16_t & value) { uint16_t v(0); - get(field, v); + get(v); value = v; return *this; } -Deserializer & Deserializer::get(const IFieldBase & field, int32_t & value) +Deserializer & Deserializer::get(int32_t & value) { uint32_t v(0); - get(field, v); + get(v); value = v; return *this; } -Deserializer & Deserializer::get(const IFieldBase & field, int64_t & value) +Deserializer & Deserializer::get(int64_t & value) { uint64_t v(0); - get(field, v); + get(v); value = v; return *this; } -Deserializer & Deserializer::get(const IFieldBase & field, std::string & value) +Deserializer & Deserializer::get(std::string & value) { string v; - get(field, v); + get(v); value = v; return *this; } diff --git a/staging_vespalib/src/vespa/vespalib/objects/deserializer.h b/staging_vespalib/src/vespa/vespalib/objects/deserializer.h index f381fa5ffc6..9ebedac69d5 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/deserializer.h +++ b/staging_vespalib/src/vespa/vespalib/objects/deserializer.h @@ -1,8 +1,8 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include "fieldbase.h" #include +#include #include #include @@ -10,51 +10,39 @@ namespace vespalib { class Identifiable; -class Deserializer : virtual SerializerCommon +class Deserializer { public: - virtual ~Deserializer() { } - virtual Deserializer & get(const IFieldBase & field, bool & value) = 0; - virtual Deserializer & get(const IFieldBase & field, uint8_t & value) = 0; - virtual Deserializer & get(const IFieldBase & field, uint16_t & value) = 0; - virtual Deserializer & get(const IFieldBase & field, uint32_t & value) = 0; - virtual Deserializer & get(const IFieldBase & field, uint64_t & value) = 0; - virtual Deserializer & get(const IFieldBase & field, double & value) = 0; - virtual Deserializer & get(const IFieldBase & field, float & value) = 0; - virtual Deserializer & get(const IFieldBase & field, string & value) = 0; - - virtual Deserializer & get(const IFieldBase & field, Identifiable & value); - virtual Deserializer & get(const IFieldBase & field, int8_t & value); - virtual Deserializer & get(const IFieldBase & field, int16_t & value); - virtual Deserializer & get(const IFieldBase & field, int32_t & value); - virtual Deserializer & get(const IFieldBase & field, int64_t & value); - - uint8_t getBool(const IFieldBase & field) { bool v; get(field, v); return v; } - uint8_t getUInt8(const IFieldBase & field) { uint8_t v; get(field, v); return v; } - int8_t getInt8(const IFieldBase & field) { int8_t v; get(field, v); return v; } - uint16_t getUInt16(const IFieldBase & field) { uint16_t v; get(field, v); return v; } - int16_t getInt16(const IFieldBase & field) { int16_t v; get(field, v); return v; } - uint32_t getUInt32(const IFieldBase & field) { uint32_t v; get(field, v); return v; } - int32_t getInt32(const IFieldBase & field) { int32_t v; get(field, v); return v; } - uint64_t getUInt64(const IFieldBase & field) { uint64_t v; get(field, v); return v; } - int64_t getInt64(const IFieldBase & field) { int64_t v; get(field, v); return v; } - float getFloat(const IFieldBase & field) { float v; get(field, v); return v; } - double getDouble(const IFieldBase & field) { double v; get(field, v); return v; } - string getString(const IFieldBase & field) { string v; get(field, v); return v; } - - Deserializer & get(const IFieldBase & field, std::string & value); - Deserializer & operator >> (bool & value) { return get(_unspecifiedField, value); } - Deserializer & operator >> (uint8_t & value) { return get(_unspecifiedField, value); } - Deserializer & operator >> (int8_t & value) { return get(_unspecifiedField, value); } - Deserializer & operator >> (uint16_t & value) { return get(_unspecifiedField, value); } - Deserializer & operator >> (int16_t & value) { return get(_unspecifiedField, value); } - Deserializer & operator >> (uint32_t & value) { return get(_unspecifiedField, value); } - Deserializer & operator >> (int32_t & value) { return get(_unspecifiedField, value); } - Deserializer & operator >> (uint64_t & value) { return get(_unspecifiedField, value); } - Deserializer & operator >> (int64_t & value) { return get(_unspecifiedField, value); } - Deserializer & operator >> (float & value) { return get(_unspecifiedField, value); } - Deserializer & operator >> (double & value) { return get(_unspecifiedField, value); } - Deserializer & operator >> (string & value) { return get(_unspecifiedField, value); } + virtual ~Deserializer() = default; + virtual Deserializer & get(bool & value) = 0; + virtual Deserializer & get(uint8_t & value) = 0; + virtual Deserializer & get(uint16_t & value) = 0; + virtual Deserializer & get(uint32_t & value) = 0; + virtual Deserializer & get(uint64_t & value) = 0; + virtual Deserializer & get(double & value) = 0; + virtual Deserializer & get(float & value) = 0; + virtual Deserializer & get(string & value) = 0; + + virtual Deserializer & get(Identifiable & value); + virtual Deserializer & get(int8_t & value); + virtual Deserializer & get(int16_t & value); + virtual Deserializer & get(int32_t & value); + virtual Deserializer & get(int64_t & value); + + + Deserializer & get(std::string & value); + Deserializer & operator >> (bool & value) { return get(value); } + Deserializer & operator >> (uint8_t & value) { return get(value); } + Deserializer & operator >> (int8_t & value) { return get(value); } + Deserializer & operator >> (uint16_t & value) { return get(value); } + Deserializer & operator >> (int16_t & value) { return get(value); } + Deserializer & operator >> (uint32_t & value) { return get(value); } + Deserializer & operator >> (int32_t & value) { return get(value); } + Deserializer & operator >> (uint64_t & value) { return get(value); } + Deserializer & operator >> (int64_t & value) { return get(value); } + Deserializer & operator >> (float & value) { return get(value); } + Deserializer & operator >> (double & value) { return get(value); } + Deserializer & operator >> (string & value) { return get(value); } template Deserializer & operator >> (vespalib::Array & v); template diff --git a/staging_vespalib/src/vespa/vespalib/objects/deserializer.hpp b/staging_vespalib/src/vespa/vespalib/objects/deserializer.hpp index f59bff929a9..e324a083597 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/deserializer.hpp +++ b/staging_vespalib/src/vespa/vespalib/objects/deserializer.hpp @@ -9,7 +9,7 @@ template Deserializer & Deserializer::operator >> (vespalib::Array & v) { uint32_t sz; - get(_sizeField, sz); + get(sz); v.resize(sz); for(size_t i(0); i < sz; i++) { (*this) >> v[i]; @@ -21,7 +21,7 @@ template Deserializer & Deserializer::operator >> (std::vector & v) { uint32_t sz; - get(_sizeField, sz); + get(sz); v.resize(sz); for(size_t i(0); i < sz; i++) { (*this) >> v[i]; diff --git a/staging_vespalib/src/vespa/vespalib/objects/fieldbase.cpp b/staging_vespalib/src/vespa/vespalib/objects/fieldbase.cpp deleted file mode 100644 index a794da8c554..00000000000 --- a/staging_vespalib/src/vespa/vespalib/objects/fieldbase.cpp +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include "fieldbase.h" - -namespace vespalib { - -FieldBase SerializerCommon::_unspecifiedField("unspecified"); -FieldBase SerializerCommon::_sizeField("size"); - -} diff --git a/staging_vespalib/src/vespa/vespalib/objects/fieldbase.h b/staging_vespalib/src/vespa/vespalib/objects/fieldbase.h deleted file mode 100644 index 2de113f8383..00000000000 --- a/staging_vespalib/src/vespa/vespalib/objects/fieldbase.h +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#pragma once - -#include - -namespace vespalib { - -class IFieldBase -{ -public: - virtual ~IFieldBase() = default; - // Overrides must guarantee that returned reference is zero-terminated. - virtual stringref getName() const = 0; -}; - -class FieldBase : public IFieldBase -{ -public: - FieldBase(stringref name) : _name(name) { } - stringref getName() const final override { return _name; } -private: - string _name; -}; - -class SerializerCommon -{ -protected: - static FieldBase _unspecifiedField; - static FieldBase _sizeField; -}; - -} - diff --git a/staging_vespalib/src/vespa/vespalib/objects/identifiable.cpp b/staging_vespalib/src/vespa/vespalib/objects/identifiable.cpp index 2465d5f9d9b..8040b398c31 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/identifiable.cpp +++ b/staging_vespalib/src/vespa/vespalib/objects/identifiable.cpp @@ -94,10 +94,6 @@ Register * _register = nullptr; } Identifiable::ILoader * Identifiable::_classLoader = nullptr; -FieldBase Identifiable::hasObjectField("hasObject"); -FieldBase Identifiable::sizeField("size"); -FieldBase Identifiable::classIdField("classId"); -FieldBase Identifiable::objectField("object"); IMPLEMENT_IDENTIFIABLE(Identifiable, Identifiable); @@ -155,7 +151,7 @@ bool Identifiable::RuntimeClass::inherits(unsigned cid) const Serializer & operator << (Serializer & os, const Identifiable & obj) { - os.put(Identifiable::classIdField, obj.getClass().id()); + os.put(obj.getClass().id()); obj.serialize(os); return os; } @@ -177,7 +173,7 @@ nbostream & operator >> (nbostream & is, Identifiable & obj) Deserializer & operator >> (Deserializer & os, Identifiable & obj) { uint32_t cid(0); - os.get(Identifiable::classIdField, cid); + os.get(cid); if (cid == obj.getClass().id()) { obj.deserialize(os); } else { @@ -193,7 +189,7 @@ Deserializer & operator >> (Deserializer & os, Identifiable & obj) Identifiable::UP Identifiable::create(Deserializer & is) { uint32_t cid(0); - is.get(classIdField, cid); + is.get(cid); UP obj; const Identifiable::RuntimeClass *rtc = Identifiable::classFromId(cid); if (rtc == nullptr) { @@ -277,12 +273,12 @@ Identifiable::selectMembers(const ObjectPredicate &predicate, ObjectOperation &o Serializer & Identifiable::serialize(Serializer & os) const { - return os.put(objectField, *this); + return os.put(*this); } Deserializer & Identifiable::deserialize(Deserializer & is) { - return is.get(objectField, *this); + return is.get(*this); } Serializer & Identifiable::onSerialize(Serializer & os) const diff --git a/staging_vespalib/src/vespa/vespalib/objects/identifiable.h b/staging_vespalib/src/vespa/vespalib/objects/identifiable.h index e452c35cabe..cf8415c9513 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/identifiable.h +++ b/staging_vespalib/src/vespa/vespalib/objects/identifiable.h @@ -158,10 +158,6 @@ class Identifiable { }; public: typedef std::unique_ptr UP; - static FieldBase hasObjectField; - static FieldBase sizeField; - static FieldBase classIdField; - static FieldBase objectField; class ILoader { public: @@ -171,7 +167,7 @@ public: virtual void loadClass(unsigned classId) = 0; virtual void loadClass(const char * className) = 0; }; - struct RuntimeClass final : public IFieldBase { + struct RuntimeClass { public: RuntimeClass(RuntimeInfo * info); ~RuntimeClass(); @@ -186,7 +182,6 @@ public: bool equal(unsigned cid) const { return id() == cid; } int compare(const RuntimeClass& other) const { return (id() - other.id()); } private: - stringref getName() const override { return stringref(_rt->_name); } RuntimeInfo * _rt; }; DECLARE_IDENTIFIABLE_ROOT(Identifiable); diff --git a/staging_vespalib/src/vespa/vespalib/objects/identifiable.hpp b/staging_vespalib/src/vespa/vespalib/objects/identifiable.hpp index b1c4a128feb..97e1c7be564 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/identifiable.hpp +++ b/staging_vespalib/src/vespa/vespalib/objects/identifiable.hpp @@ -23,7 +23,7 @@ namespace vespalib { template Serializer & Identifiable::serialize(const T & v, Serializer & os) { uint32_t sz(v.size()); - os.put(sizeField, sz); + os.put(sz); for(size_t i(0); i < sz; i++) { v[i].serialize(os); } @@ -33,7 +33,7 @@ Serializer & Identifiable::serialize(const T & v, Serializer & os) { template Deserializer & Identifiable::deserialize(T & v, Deserializer & is) { uint32_t sz(0); - is.get(sizeField, sz); + is.get(sz); v.resize(sz); for(size_t i(0); i < sz; i++) { v[i].deserialize(is); @@ -50,7 +50,7 @@ public: IdentifiablePtr & operator = (IdentifiablePtr &&) noexcept = default; IdentifiablePtr(const IdentifiablePtr &) = default; IdentifiablePtr & operator = (const IdentifiablePtr &) = default; - IdentifiablePtr(T * p=NULL) noexcept : CloneablePtr(p) { } + IdentifiablePtr(T * p=nullptr) noexcept : CloneablePtr(p) { } IdentifiablePtr(std::unique_ptr &&rhs) noexcept : CloneablePtr(std::move(rhs)) { @@ -74,15 +74,15 @@ public: bool operator != (const IdentifiablePtr &rhs) const { return (cmp(rhs) != 0); } Serializer & serialize(Serializer & os) const { if (this->get()) { - os.put(Identifiable::hasObjectField, uint8_t(1)) << *this->get(); + os.put(uint8_t(1)) << *this->get(); } else { - os.put(Identifiable::hasObjectField, uint8_t(0)); + os.put(uint8_t(0)); } return os; } Deserializer & deserialize(Deserializer & is) { uint8_t hasObject; - is.get(Identifiable::hasObjectField, hasObject); + is.get(hasObject); if (hasObject) { this->reset(static_cast(Identifiable::create(is).release())); } @@ -97,7 +97,7 @@ class IdentifiableSharedPtr : public std::shared_ptr { public: IdentifiableSharedPtr(const T &t) : std::shared_ptr(t.clone()) {} - IdentifiableSharedPtr(T * p=NULL) : std::shared_ptr(p) { } + IdentifiableSharedPtr(T * p=nullptr) : std::shared_ptr(p) { } int cmp(const IdentifiableSharedPtr &rhs) const { const T *a = this->get(); const T *b = rhs.get(); @@ -111,15 +111,15 @@ public: } Serializer & serialize(Serializer & os) const { if (this->get()) { - os.put(Identifiable::hasObjectField, uint8_t(1)) << *this->get(); + os.put(uint8_t(1)) << *this->get(); } else { - os.put(Identifiable::hasObjectField, uint8_t(0)); + os.put(uint8_t(0)); } return os; } Deserializer & deserialize(Deserializer & is) { uint8_t hasObject; - is.get(Identifiable::hasObjectField, hasObject); + is.get(hasObject); if (hasObject) { reset(static_cast(Identifiable::create(is).release())); } diff --git a/staging_vespalib/src/vespa/vespalib/objects/namedobject.cpp b/staging_vespalib/src/vespa/vespalib/objects/namedobject.cpp index e2506a5993a..590e9cbfce0 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/namedobject.cpp +++ b/staging_vespalib/src/vespa/vespalib/objects/namedobject.cpp @@ -5,16 +5,15 @@ namespace vespalib { IMPLEMENT_IDENTIFIABLE_NS(vespalib, NamedObject, Identifiable); -static FieldBase _G_nameField("name"); Serializer & NamedObject::onSerialize(Serializer & os) const { - return os.put(_G_nameField, _name); + return os.put(_name); } Deserializer & NamedObject::onDeserialize(Deserializer & is) { - return is.get(_G_nameField, _name); + return is.get(_name); } } diff --git a/staging_vespalib/src/vespa/vespalib/objects/nboserializer.cpp b/staging_vespalib/src/vespa/vespalib/objects/nboserializer.cpp index e56ca6ca026..2d065038d1d 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/nboserializer.cpp +++ b/staging_vespalib/src/vespa/vespalib/objects/nboserializer.cpp @@ -8,83 +8,83 @@ const char * NBOSerializer::peek() const { return _stream.peek(); } -NBOSerializer &NBOSerializer::put(const IFieldBase &, bool value) { +NBOSerializer &NBOSerializer::put(bool value) { _stream << value; return *this; } -NBOSerializer &NBOSerializer::put(const IFieldBase &, uint8_t value) { +NBOSerializer &NBOSerializer::put(uint8_t value) { _stream << value; return *this; } -NBOSerializer &NBOSerializer::put(const IFieldBase &, uint16_t value) { +NBOSerializer &NBOSerializer::put(uint16_t value) { _stream << value; return *this; } -NBOSerializer &NBOSerializer::put(const IFieldBase &, uint32_t value) { +NBOSerializer &NBOSerializer::put(uint32_t value) { _stream << value; return *this; } -NBOSerializer &NBOSerializer::put(const IFieldBase &, uint64_t value) { +NBOSerializer &NBOSerializer::put(uint64_t value) { _stream << value; return *this; } -NBOSerializer &NBOSerializer::put(const IFieldBase &, float value) { +NBOSerializer &NBOSerializer::put(float value) { _stream << value; return *this; } -NBOSerializer &NBOSerializer::put(const IFieldBase &, double value) { +NBOSerializer &NBOSerializer::put(double value) { _stream << value; return *this; } -NBOSerializer &NBOSerializer::put(const IFieldBase &, stringref value) { +NBOSerializer &NBOSerializer::put(stringref value) { _stream << value; return *this; } -NBOSerializer &NBOSerializer::get(const IFieldBase &, bool & value) { +NBOSerializer &NBOSerializer::get(bool & value) { _stream >> value; return *this; } -NBOSerializer &NBOSerializer::get(const IFieldBase &, uint8_t & value) { +NBOSerializer &NBOSerializer::get(uint8_t & value) { _stream >> value; return *this; } -NBOSerializer &NBOSerializer::get(const IFieldBase &, uint16_t & value) { +NBOSerializer &NBOSerializer::get(uint16_t & value) { _stream >> value; return *this; } -NBOSerializer &NBOSerializer::get(const IFieldBase &, uint32_t & value) { +NBOSerializer &NBOSerializer::get(uint32_t & value) { _stream >> value; return *this; } -NBOSerializer &NBOSerializer::get(const IFieldBase &, uint64_t & value) { +NBOSerializer &NBOSerializer::get(uint64_t & value) { _stream >> value; return *this; } -NBOSerializer &NBOSerializer::get(const IFieldBase &, double & value) { +NBOSerializer &NBOSerializer::get(double & value) { _stream >> value; return *this; } -NBOSerializer &NBOSerializer::get(const IFieldBase &, float & value) { +NBOSerializer &NBOSerializer::get(float & value) { _stream >> value; return *this; } -NBOSerializer &NBOSerializer::get(const IFieldBase &, string & value) { +NBOSerializer &NBOSerializer::get(string & value) { _stream >> value; return *this; } diff --git a/staging_vespalib/src/vespa/vespalib/objects/nboserializer.h b/staging_vespalib/src/vespa/vespalib/objects/nboserializer.h index ee75710dbfb..a6c19c3e02d 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/nboserializer.h +++ b/staging_vespalib/src/vespa/vespalib/objects/nboserializer.h @@ -11,23 +11,23 @@ class nbostream; class NBOSerializer : public Serializer, public Deserializer { public: NBOSerializer(nbostream &stream) : _stream(stream) { } - NBOSerializer &put(const IFieldBase &field, bool value) override; - NBOSerializer &put(const IFieldBase &field, uint8_t value) override; - NBOSerializer &put(const IFieldBase &field, uint16_t value) override; - NBOSerializer &put(const IFieldBase &field, uint32_t value) override; - NBOSerializer &put(const IFieldBase &field, uint64_t value) override; - NBOSerializer &put(const IFieldBase &field, float value) override; - NBOSerializer &put(const IFieldBase &field, double value) override; - NBOSerializer &put(const IFieldBase &field, stringref val) override; - - NBOSerializer &get(const IFieldBase &field, bool &value) override; - NBOSerializer &get(const IFieldBase &field, uint8_t &value) override; - NBOSerializer &get(const IFieldBase &field, uint16_t &value) override; - NBOSerializer &get(const IFieldBase &field, uint32_t &value) override; - NBOSerializer &get(const IFieldBase &field, uint64_t &value) override; - NBOSerializer &get(const IFieldBase &field, double &value) override; - NBOSerializer &get(const IFieldBase &field, float &value) override; - NBOSerializer &get(const IFieldBase &field, string &value) override; + NBOSerializer &put(bool value) override; + NBOSerializer &put(uint8_t value) override; + NBOSerializer &put(uint16_t value) override; + NBOSerializer &put(uint32_t value) override; + NBOSerializer &put(uint64_t value) override; + NBOSerializer &put(float value) override; + NBOSerializer &put(double value) override; + NBOSerializer &put(stringref val) override; + + NBOSerializer &get(bool &value) override; + NBOSerializer &get(uint8_t &value) override; + NBOSerializer &get(uint16_t &value) override; + NBOSerializer &get(uint32_t &value) override; + NBOSerializer &get(uint64_t &value) override; + NBOSerializer &get(double &value) override; + NBOSerializer &get(float &value) override; + NBOSerializer &get(string &value) override; const char *peek() const; diff --git a/staging_vespalib/src/vespa/vespalib/objects/serializer.cpp b/staging_vespalib/src/vespa/vespalib/objects/serializer.cpp index 746ecd4557d..13543ba60ad 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/serializer.cpp +++ b/staging_vespalib/src/vespa/vespalib/objects/serializer.cpp @@ -4,15 +4,14 @@ namespace vespalib { -Serializer & Serializer::put(const IFieldBase & field, const Identifiable & value) +Serializer & Serializer::put(const Identifiable & value) { - (void) field; return value.serializeDirect(*this); } -Serializer & Serializer::put(const IFieldBase & field, int8_t value) { return put(field, static_cast< uint8_t>(value)); } -Serializer & Serializer::put(const IFieldBase & field, int16_t value) { return put(field, static_cast(value)); } -Serializer & Serializer::put(const IFieldBase & field, int32_t value) { return put(field, static_cast(value)); } -Serializer & Serializer::put(const IFieldBase & field, int64_t value) { return put(field, static_cast(value)); } +Serializer & Serializer::put(int8_t value) { return put(static_cast< uint8_t>(value)); } +Serializer & Serializer::put(int16_t value) { return put(static_cast(value)); } +Serializer & Serializer::put(int32_t value) { return put(static_cast(value)); } +Serializer & Serializer::put(int64_t value) { return put(static_cast(value)); } } diff --git a/staging_vespalib/src/vespa/vespalib/objects/serializer.h b/staging_vespalib/src/vespa/vespalib/objects/serializer.h index 0458903e830..6cbedbdcd86 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/serializer.h +++ b/staging_vespalib/src/vespa/vespalib/objects/serializer.h @@ -1,8 +1,8 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include "fieldbase.h" #include +#include #include #include @@ -10,37 +10,37 @@ namespace vespalib { class Identifiable; -class Serializer : virtual SerializerCommon +class Serializer { public: - virtual ~Serializer() { } - virtual Serializer & put(const IFieldBase & field, bool value) = 0; - virtual Serializer & put(const IFieldBase & field, uint8_t value) = 0; - virtual Serializer & put(const IFieldBase & field, uint16_t value) = 0; - virtual Serializer & put(const IFieldBase & field, uint32_t value) = 0; - virtual Serializer & put(const IFieldBase & field, uint64_t value) = 0; - virtual Serializer & put(const IFieldBase & field, float value) = 0; - virtual Serializer & put(const IFieldBase & field, double value) = 0; - virtual Serializer & put(const IFieldBase & field, stringref value) = 0; - - virtual Serializer & put(const IFieldBase & field, const Identifiable & value); - virtual Serializer & put(const IFieldBase & field, int8_t value); - virtual Serializer & put(const IFieldBase & field, int16_t value); - virtual Serializer & put(const IFieldBase & field, int32_t value); - virtual Serializer & put(const IFieldBase & field, int64_t value); - - Serializer & operator << (bool value) { return put(_unspecifiedField, value); } - Serializer & operator << (uint8_t value) { return put(_unspecifiedField, value); } - Serializer & operator << (int8_t value) { return put(_unspecifiedField, value); } - Serializer & operator << (uint16_t value) { return put(_unspecifiedField, value); } - Serializer & operator << (int16_t value) { return put(_unspecifiedField, value); } - Serializer & operator << (uint32_t value) { return put(_unspecifiedField, value); } - Serializer & operator << (int32_t value) { return put(_unspecifiedField, value); } - Serializer & operator << (uint64_t value) { return put(_unspecifiedField, value); } - Serializer & operator << (int64_t value) { return put(_unspecifiedField, value); } - Serializer & operator << (float value) { return put(_unspecifiedField, value); } - Serializer & operator << (double value) { return put(_unspecifiedField, value); } - Serializer & operator << (stringref value) { return put(_unspecifiedField, value); } + virtual ~Serializer() = default; + virtual Serializer & put(bool value) = 0; + virtual Serializer & put(uint8_t value) = 0; + virtual Serializer & put(uint16_t value) = 0; + virtual Serializer & put(uint32_t value) = 0; + virtual Serializer & put(uint64_t value) = 0; + virtual Serializer & put(float value) = 0; + virtual Serializer & put(double value) = 0; + virtual Serializer & put(stringref value) = 0; + + virtual Serializer & put(const Identifiable & value); + virtual Serializer & put(int8_t value); + virtual Serializer & put(int16_t value); + virtual Serializer & put(int32_t value); + virtual Serializer & put(int64_t value); + + Serializer & operator << (bool value) { return put(value); } + Serializer & operator << (uint8_t value) { return put(value); } + Serializer & operator << (int8_t value) { return put(value); } + Serializer & operator << (uint16_t value) { return put(value); } + Serializer & operator << (int16_t value) { return put(value); } + Serializer & operator << (uint32_t value) { return put(value); } + Serializer & operator << (int32_t value) { return put(value); } + Serializer & operator << (uint64_t value) { return put(value); } + Serializer & operator << (int64_t value) { return put(value); } + Serializer & operator << (float value) { return put(value); } + Serializer & operator << (double value) { return put(value); } + Serializer & operator << (stringref value) { return put(value); } template Serializer & operator << (const vespalib::Array & v); template diff --git a/staging_vespalib/src/vespa/vespalib/objects/serializer.hpp b/staging_vespalib/src/vespa/vespalib/objects/serializer.hpp index e428be5a348..cc49f758ae6 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/serializer.hpp +++ b/staging_vespalib/src/vespa/vespalib/objects/serializer.hpp @@ -1,10 +1,9 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include #include #include -#include +#include namespace vespalib { @@ -12,7 +11,7 @@ template Serializer & Serializer::operator << (const vespalib::Array & v) { uint32_t sz(v.size()); - put(_sizeField, sz); + put(sz); for(size_t i(0); i < sz; i++) { (*this) << v[i]; } @@ -22,7 +21,7 @@ template Serializer & Serializer::operator << (const std::vector & v) { uint32_t sz(v.size()); - put(_sizeField, sz); + put(sz); for(size_t i(0); i < sz; i++) { (*this) << v[i]; } -- cgit v1.2.3