diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-04-04 16:35:02 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-04-04 16:36:18 +0200 |
commit | 9204052b04f33c47f62acb8d01161726268990d5 (patch) | |
tree | 49e0e9819bd9a73c316694d791b93700a694db92 | |
parent | 31fa22ae90c6481c6e70eb2381d63ecc9b6c6d42 (diff) |
Use override
236 files changed, 1998 insertions, 3610 deletions
diff --git a/config/src/vespa/config/print/asciiconfigreader.h b/config/src/vespa/config/print/asciiconfigreader.h index 135d2d4d51f..352cc8510cb 100644 --- a/config/src/vespa/config/print/asciiconfigreader.h +++ b/config/src/vespa/config/print/asciiconfigreader.h @@ -1,9 +1,9 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/vespalib/stllike/asciistream.h> #include "configreader.h" #include "configformatter.h" +#include <vespa/vespalib/stllike/asciistream.h> namespace config { @@ -16,7 +16,7 @@ class AsciiConfigReader : public ConfigReader<ConfigType> public: AsciiConfigReader(vespalib::asciistream & is); std::unique_ptr<ConfigType> read(); - std::unique_ptr<ConfigType> read(const ConfigFormatter & formatter); + std::unique_ptr<ConfigType> read(const ConfigFormatter & formatter) override; private: vespalib::asciistream & _is; }; diff --git a/document/src/vespa/document/datatype/arraydatatype.h b/document/src/vespa/document/datatype/arraydatatype.h index 706579ae2f6..b7183b42c5c 100644 --- a/document/src/vespa/document/datatype/arraydatatype.h +++ b/document/src/vespa/document/datatype/arraydatatype.h @@ -7,7 +7,7 @@ */ #pragma once -#include <vespa/document/datatype/collectiondatatype.h> +#include "collectiondatatype.h" namespace document { @@ -23,15 +23,11 @@ public: explicit ArrayDataType(const DataType &nestedType); ArrayDataType(const DataType &nestedType, int32_t id); - // CollectionDataType implementation - virtual std::unique_ptr<FieldValue> createFieldValue() const; - virtual void print(std::ostream&, bool verbose, - const std::string& indent) const; - virtual bool operator==(const DataType& other) const; - virtual ArrayDataType* clone() const { return new ArrayDataType(*this); } - - FieldPath::UP onBuildFieldPath( - const vespalib::stringref & remainFieldName) const; + std::unique_ptr<FieldValue> createFieldValue() const override; + void print(std::ostream&, bool verbose, const std::string& indent) const override; + bool operator==(const DataType& other) const override; + ArrayDataType* clone() const override { return new ArrayDataType(*this); } + FieldPath::UP onBuildFieldPath(const vespalib::stringref & remainFieldName) const override; DECLARE_IDENTIFIABLE(ArrayDataType); }; diff --git a/document/src/vespa/document/fieldvalue/shortfieldvalue.h b/document/src/vespa/document/fieldvalue/shortfieldvalue.h index 329e33d0189..6fb848064db 100644 --- a/document/src/vespa/document/fieldvalue/shortfieldvalue.h +++ b/document/src/vespa/document/fieldvalue/shortfieldvalue.h @@ -7,8 +7,8 @@ */ #pragma once +#include "numericfieldvalue.h" #include <vespa/document/datatype/numericdatatype.h> -#include <vespa/document/fieldvalue/numericfieldvalue.h> namespace document { @@ -23,9 +23,8 @@ public: void accept(FieldValueVisitor &visitor) override { visitor.visit(*this); } void accept(ConstFieldValueVisitor &visitor) const override { visitor.visit(*this); } - virtual const DataType *getDataType() const { return DataType::SHORT; } - - virtual ShortFieldValue* clone() const { return new ShortFieldValue(*this); } + const DataType *getDataType() const override { return DataType::SHORT; } + ShortFieldValue* clone() const override { return new ShortFieldValue(*this); } using NumericFieldValue<Number>::operator=; diff --git a/document/src/vespa/document/fieldvalue/structfieldvalue.cpp b/document/src/vespa/document/fieldvalue/structfieldvalue.cpp index bf8eb9e7eb5..079b730c8cc 100644 --- a/document/src/vespa/document/fieldvalue/structfieldvalue.cpp +++ b/document/src/vespa/document/fieldvalue/structfieldvalue.cpp @@ -383,7 +383,7 @@ struct StructFieldValue::FieldIterator : public StructuredIterator { } } - virtual const Field* getNextField() { + const Field* getNextField() override { while (_cur != _ids.end()) { int id = *_cur++; try { diff --git a/document/src/vespa/document/fieldvalue/weightedsetfieldvalue.h b/document/src/vespa/document/fieldvalue/weightedsetfieldvalue.h index 83ceb1f1238..efa1c718d64 100644 --- a/document/src/vespa/document/fieldvalue/weightedsetfieldvalue.h +++ b/document/src/vespa/document/fieldvalue/weightedsetfieldvalue.h @@ -74,10 +74,8 @@ public: void reserve(size_t sz) { _map.reserve(sz); } void resize(size_t sz) { _map.resize(sz); } - // FieldValue implementation - virtual FieldValue& assign(const FieldValue&); - virtual WeightedSetFieldValue* clone() const - { return new WeightedSetFieldValue(*this); } + FieldValue& assign(const FieldValue&) override; + WeightedSetFieldValue* clone() const override { return new WeightedSetFieldValue(*this); } virtual int compare(const FieldValue&) const override; virtual void printXml(XmlOutputStream& out) const override; virtual void print(std::ostream& out, bool verbose, diff --git a/document/src/vespa/document/select/bodyfielddetector.h b/document/src/vespa/document/select/bodyfielddetector.h index a4716d1a175..3758766edd3 100644 --- a/document/src/vespa/document/select/bodyfielddetector.h +++ b/document/src/vespa/document/select/bodyfielddetector.h @@ -24,22 +24,22 @@ public: bool foundBodyField; bool foundHeaderField; - virtual void visitDocumentType(const DocType&) { + void visitDocumentType(const DocType&) override { // Need to deserialize header to know document type foundHeaderField = true; } - void visitFieldValueNode(const FieldValueNode& expr); + void visitFieldValueNode(const FieldValueNode& expr) override; }; class NeedDocumentDetector : public TraversingVisitor { private: bool _needDocument; - virtual void visitDocumentType(const DocType &) { + void visitDocumentType(const DocType &) override { _needDocument = true; } - virtual void visitFieldValueNode(const FieldValueNode &) { + void visitFieldValueNode(const FieldValueNode &) override { _needDocument = true; } public: diff --git a/document/src/vespa/document/select/cloningvisitor.h b/document/src/vespa/document/select/cloningvisitor.h index 45101f39dc8..0cfab62bb98 100644 --- a/document/src/vespa/document/select/cloningvisitor.h +++ b/document/src/vespa/document/select/cloningvisitor.h @@ -47,100 +47,40 @@ protected: static const int SearchColPriority = 1000; public: - CloningVisitor(void); - - virtual - ~CloningVisitor(void); - - virtual void - visitAndBranch(const And &expr); - - virtual void - visitOrBranch(const Or &expr); - - virtual void - visitNotBranch(const Not &expr); - - virtual void - visitComparison(const Compare &expr); - - virtual void - visitArithmeticValueNode(const ArithmeticValueNode &expr); - - virtual void - visitFunctionValueNode(const FunctionValueNode &expr); - - virtual void - visitConstant(const Constant &expr); - - virtual void - visitInvalidConstant(const InvalidConstant &expr); - - virtual void - visitDocumentType(const DocType &expr); - - virtual void - visitIdValueNode(const IdValueNode &expr); - - virtual void - visitSearchColumnValueNode(const SearchColumnValueNode &expr); - - virtual void - visitFieldValueNode(const FieldValueNode &expr); - - virtual void - visitFloatValueNode(const FloatValueNode &expr); - - virtual void - visitVariableValueNode(const VariableValueNode &expr); - - virtual void - visitIntegerValueNode(const IntegerValueNode &expr); - - virtual void - visitCurrentTimeValueNode(const CurrentTimeValueNode &expr); - - virtual void - visitStringValueNode(const StringValueNode &expr); - - virtual void - visitNullValueNode(const NullValueNode &expr); - - virtual void - visitInvalidValueNode(const InvalidValueNode &expr); - - std::unique_ptr<Node> & - getNode(void) - { - return _node; - } - - std::unique_ptr<ValueNode> & - getValueNode(void) - { - return _valueNode; - } - - void - setNodeParentheses(int priority); - - void - setValueNodeParentheses(int priority); - - void - setArithmeticValueNode(const ArithmeticValueNode &expr, - std::unique_ptr<ValueNode> lhs, - int lhsPriority, - bool lhsConstVal, - std::unique_ptr<ValueNode> rhs, - int rhsPriority, - bool rhsConstVal); - - void - swap(CloningVisitor &rhs); - - void - revisit(void); + CloningVisitor(); + ~CloningVisitor(); + + void visitAndBranch(const And &expr) override; + void visitOrBranch(const Or &expr) override; + void visitNotBranch(const Not &expr) override; + void visitComparison(const Compare &expr) override; + void visitArithmeticValueNode(const ArithmeticValueNode &expr) override; + void visitFunctionValueNode(const FunctionValueNode &expr) override; + void visitConstant(const Constant &expr) override; + void visitInvalidConstant(const InvalidConstant &expr) override; + void visitDocumentType(const DocType &expr) override; + void visitIdValueNode(const IdValueNode &expr) override; + void visitSearchColumnValueNode(const SearchColumnValueNode &expr) override; + void visitFieldValueNode(const FieldValueNode &expr) override; + void visitFloatValueNode(const FloatValueNode &expr) override; + void visitVariableValueNode(const VariableValueNode &expr) override; + void visitIntegerValueNode(const IntegerValueNode &expr) override; + void visitCurrentTimeValueNode(const CurrentTimeValueNode &expr) override; + void visitStringValueNode(const StringValueNode &expr) override; + void visitNullValueNode(const NullValueNode &expr) override; + void visitInvalidValueNode(const InvalidValueNode &expr) override; + + std::unique_ptr<Node> &getNode() { return _node; } + std::unique_ptr<ValueNode> &getValueNode() { return _valueNode; } + + void setNodeParentheses(int priority); + void setValueNodeParentheses(int priority); + void setArithmeticValueNode(const ArithmeticValueNode &expr, std::unique_ptr<ValueNode> lhs, + int lhsPriority, bool lhsConstVal, std::unique_ptr<ValueNode> rhs, + int rhsPriority, bool rhsConstVal); + + void swap(CloningVisitor &rhs); + void revisit(void); }; } diff --git a/document/src/vespa/document/select/invalidconstant.h b/document/src/vespa/document/select/invalidconstant.h index 14bd681b97a..1d19d069d12 100644 --- a/document/src/vespa/document/select/invalidconstant.h +++ b/document/src/vespa/document/select/invalidconstant.h @@ -22,14 +22,12 @@ class InvalidConstant : public Node public: explicit InvalidConstant(const vespalib::stringref &value); - virtual ResultList contains(const Context&) const - { return ResultList(Result::Invalid); } - virtual ResultList trace(const Context&, std::ostream& trace) const; - virtual void print(std::ostream& out, bool verbose, - const std::string& indent) const; - virtual void visit(Visitor& v) const; - - Node::UP clone() const { return wrapParens(new InvalidConstant(_name)); } + ResultList contains(const Context&) const override { return ResultList(Result::Invalid); } + ResultList trace(const Context&, std::ostream& trace) const override; + void print(std::ostream& out, bool verbose, const std::string& indent) const override; + void visit(Visitor& v) const override; + + Node::UP clone() const override { return wrapParens(new InvalidConstant(_name)); } }; diff --git a/document/src/vespa/document/select/orderingselector.cpp b/document/src/vespa/document/select/orderingselector.cpp index 8875b09f848..32a1f0a8adf 100644 --- a/document/src/vespa/document/select/orderingselector.cpp +++ b/document/src/vespa/document/select/orderingselector.cpp @@ -45,7 +45,7 @@ namespace { return OrderingSpecification::UP(); } - void visitAndBranch(const document::select::And& node) { + void visitAndBranch(const document::select::And& node) override { OrderingVisitor left(_order); node.getLeft().visit(left); node.getRight().visit(*this); @@ -64,7 +64,7 @@ namespace { _spec = pickOrdering(*_spec, *left._spec, true); } - void visitOrBranch(const document::select::Or& node) { + void visitOrBranch(const document::select::Or& node) override { OrderingVisitor left(_order); node.getLeft().visit(left); node.getRight().visit(*this); @@ -77,8 +77,7 @@ namespace { _spec = pickOrdering(*_spec, *left._spec, false); } - void visitNotBranch(const document::select::Not&) { - } + void visitNotBranch(const document::select::Not&) override {} void compare(const select::IdValueNode& node, const select::ValueNode& valnode, @@ -120,7 +119,7 @@ namespace { } } - void visitComparison(const document::select::Compare& node) { + void visitComparison(const document::select::Compare& node) override { const IdValueNode* lid(dynamic_cast<const IdValueNode*>( &node.getLeft())); if (lid) { @@ -134,76 +133,21 @@ namespace { } } - void visitConstant(const document::select::Constant&) { - } - - virtual void - visitInvalidConstant(const document::select::InvalidConstant &) - { - } - - void visitDocumentType(const document::select::DocType&) { - } - - virtual void - visitArithmeticValueNode(const ArithmeticValueNode &) - { - } - - virtual void - visitFunctionValueNode(const FunctionValueNode &) - { - } - - virtual void - visitIdValueNode(const IdValueNode &) - { - } - - virtual void - visitSearchColumnValueNode(const SearchColumnValueNode &) - { - } - - virtual void - visitFieldValueNode(const FieldValueNode &) - { - } - - virtual void - visitFloatValueNode(const FloatValueNode &) - { - } - - virtual void - visitVariableValueNode(const VariableValueNode &) - { - } - - virtual void - visitIntegerValueNode(const IntegerValueNode &) - { - } - - virtual void - visitCurrentTimeValueNode(const CurrentTimeValueNode &) - { - } - - virtual void - visitStringValueNode(const StringValueNode &) - { - } - - virtual void - visitNullValueNode(const NullValueNode &) - { - } - - virtual void - visitInvalidValueNode(const InvalidValueNode &) - { - } + void visitConstant(const document::select::Constant&) override {} + void visitInvalidConstant(const document::select::InvalidConstant &) override {} + void visitDocumentType(const document::select::DocType&) override {} + void visitArithmeticValueNode(const ArithmeticValueNode &) override {} + void visitFunctionValueNode(const FunctionValueNode &) override {} + void visitIdValueNode(const IdValueNode &) override {} + void visitSearchColumnValueNode(const SearchColumnValueNode &) override {} + void visitFieldValueNode(const FieldValueNode &) override {} + void visitFloatValueNode(const FloatValueNode &) override {} + void visitVariableValueNode(const VariableValueNode &) override {} + void visitIntegerValueNode(const IntegerValueNode &) override {} + void visitCurrentTimeValueNode(const CurrentTimeValueNode &) override {} + void visitStringValueNode(const StringValueNode &) override {} + void visitNullValueNode(const NullValueNode &) override {} + void visitInvalidValueNode(const InvalidValueNode &) override {} }; } diff --git a/document/src/vespa/document/select/simpleparser.h b/document/src/vespa/document/select/simpleparser.h index 742a7638175..e6457c3dec7 100644 --- a/document/src/vespa/document/select/simpleparser.h +++ b/document/src/vespa/document/select/simpleparser.h @@ -50,7 +50,7 @@ public: IdSpecParser(const BucketIdFactory& bucketIdFactory) : _bucketIdFactory(bucketIdFactory) {} - virtual bool parse(const vespalib::stringref & s); + bool parse(const vespalib::stringref & s) override; const IdValueNode & getId() const { return static_cast<const IdValueNode &>(getValue()); } bool isUserSpec() const { return getId().getType() == IdValueNode::USER; } private: @@ -60,7 +60,7 @@ private: class OperatorParser : public Parser { public: - virtual bool parse(const vespalib::stringref & s); + bool parse(const vespalib::stringref & s) override; const Operator * getOperator() const { return _operator; } private: const Operator *_operator; @@ -69,13 +69,13 @@ private: class StringParser : public Parser, public ValueResult { public: - virtual bool parse(const vespalib::stringref & s); + bool parse(const vespalib::stringref & s) override; }; class IntegerParser : public Parser, public ValueResult { public: - virtual bool parse(const vespalib::stringref & s); + bool parse(const vespalib::stringref & s) override; }; class SelectionParser : public Parser, public NodeResult @@ -84,7 +84,7 @@ public: SelectionParser(const BucketIdFactory& bucketIdFactory) : _bucketIdFactory(bucketIdFactory) {} - virtual bool parse(const vespalib::stringref & s); + bool parse(const vespalib::stringref & s) override; private: const BucketIdFactory & _bucketIdFactory; }; diff --git a/document/src/vespa/document/select/traversingvisitor.h b/document/src/vespa/document/select/traversingvisitor.h index 9b3712571a5..12cdef43487 100644 --- a/document/src/vespa/document/select/traversingvisitor.h +++ b/document/src/vespa/document/select/traversingvisitor.h @@ -10,65 +10,28 @@ class TraversingVisitor : public Visitor { public: - virtual void - visitAndBranch(const And &expr); - - virtual void - visitOrBranch(const Or &expr); - - virtual void - visitNotBranch(const Not &expr); - - virtual void - visitComparison(const Compare &expr); - - virtual void - visitArithmeticValueNode(const ArithmeticValueNode &expr); - - virtual void - visitFunctionValueNode(const FunctionValueNode &expr); - - virtual void - visitConstant(const Constant &); - - virtual void - visitInvalidConstant(const InvalidConstant &); - - virtual void - visitDocumentType(const DocType &); - - virtual void - visitIdValueNode(const IdValueNode &); - - virtual void - visitSearchColumnValueNode(const SearchColumnValueNode &); - - virtual void - visitFieldValueNode(const FieldValueNode &); - - virtual void - visitFloatValueNode(const FloatValueNode &); - - virtual void - visitVariableValueNode(const VariableValueNode &); - - virtual void - visitIntegerValueNode(const IntegerValueNode &); - - virtual void - visitCurrentTimeValueNode(const CurrentTimeValueNode &); - - virtual void - visitStringValueNode(const StringValueNode &); - - virtual void - visitNullValueNode(const NullValueNode &); - - virtual void - visitInvalidValueNode(const InvalidValueNode &); + void visitAndBranch(const And &expr) override; + + void visitOrBranch(const Or &expr) override; + void visitNotBranch(const Not &expr) override; + void visitComparison(const Compare &expr) override; + void visitArithmeticValueNode(const ArithmeticValueNode &expr) override; + void visitFunctionValueNode(const FunctionValueNode &expr) override; + void visitConstant(const Constant &) override; + void visitInvalidConstant(const InvalidConstant &) override; + void visitDocumentType(const DocType &) override; + void visitIdValueNode(const IdValueNode &) override; + void visitSearchColumnValueNode(const SearchColumnValueNode &) override; + void visitFieldValueNode(const FieldValueNode &) override; + void visitFloatValueNode(const FloatValueNode &) override; + void visitVariableValueNode(const VariableValueNode &) override; + void visitIntegerValueNode(const IntegerValueNode &) override; + void visitCurrentTimeValueNode(const CurrentTimeValueNode &) override; + void visitStringValueNode(const StringValueNode &) override; + void visitNullValueNode(const NullValueNode &) override; + void visitInvalidValueNode(const InvalidValueNode &) override; }; } } - diff --git a/document/src/vespa/document/update/addvalueupdate.h b/document/src/vespa/document/update/addvalueupdate.h index 4263e48f9e0..1180ba4fcf1 100644 --- a/document/src/vespa/document/update/addvalueupdate.h +++ b/document/src/vespa/document/update/addvalueupdate.h @@ -35,7 +35,7 @@ public: _value(value.clone()), _weight(weight) {} - virtual bool operator==(const ValueUpdate& other) const; + bool operator==(const ValueUpdate& other) const override; /** @return the field value to add during this update. */ const FieldValue& getValue() const { return *_value; } diff --git a/document/src/vespa/document/update/assignvalueupdate.h b/document/src/vespa/document/update/assignvalueupdate.h index 221642df7b4..3811bad42aa 100644 --- a/document/src/vespa/document/update/assignvalueupdate.h +++ b/document/src/vespa/document/update/assignvalueupdate.h @@ -11,8 +11,8 @@ */ #pragma once +#include "valueupdate.h" #include <vespa/document/fieldvalue/fieldvalue.h> -#include <vespa/document/update/valueupdate.h> namespace document { @@ -31,7 +31,7 @@ public: { } - virtual bool operator==(const ValueUpdate& other) const; + bool operator==(const ValueUpdate& other) const override; /** @return The field value to assign during this update. */ bool hasValue() const { return bool(_value); } @@ -48,20 +48,15 @@ public: } // ValueUpdate implementation. - virtual void checkCompatibility(const Field& field) const; - virtual bool applyTo(FieldValue& value) const; - virtual void printXml(XmlOutputStream& xos) const; - virtual void print(std::ostream& out, bool verbose, - const std::string& indent) const; - virtual void deserialize(const DocumentTypeRepo& repo, - const DataType& type, - ByteBuffer& buffer, uint16_t version); - virtual AssignValueUpdate* clone() const - { return new AssignValueUpdate(*this); } + void checkCompatibility(const Field& field) const override; + bool applyTo(FieldValue& value) const override; + void printXml(XmlOutputStream& xos) const override; + void print(std::ostream& out, bool verbose, const std::string& indent) const override; + void deserialize(const DocumentTypeRepo& repo, const DataType& type, + ByteBuffer& buffer, uint16_t version) override; + AssignValueUpdate* clone() const override { return new AssignValueUpdate(*this); } DECLARE_IDENTIFIABLE(AssignValueUpdate); - }; } // document - diff --git a/document/src/vespa/document/update/clearvalueupdate.h b/document/src/vespa/document/update/clearvalueupdate.h index a0cde78b6ac..ebd796e4642 100644 --- a/document/src/vespa/document/update/clearvalueupdate.h +++ b/document/src/vespa/document/update/clearvalueupdate.h @@ -7,7 +7,7 @@ */ #pragma once -#include <vespa/document/update/valueupdate.h> +#include "valueupdate.h" namespace document { @@ -15,24 +15,18 @@ class ClearValueUpdate : public ValueUpdate { ACCEPT_UPDATE_VISITOR; public: typedef std::unique_ptr<ClearValueUpdate> UP; - ClearValueUpdate() : ValueUpdate() {} - ClearValueUpdate(const ClearValueUpdate& update) : ValueUpdate(update) {} - - virtual bool operator==(const ValueUpdate& other) const; + bool operator==(const ValueUpdate& other) const override; // ValueUpdate implementation - virtual void checkCompatibility(const Field& field) const; - virtual bool applyTo(FieldValue& value) const; - virtual void printXml(XmlOutputStream& xos) const; - virtual void print(std::ostream& out, bool verbose, - const std::string& indent) const; - virtual void deserialize(const DocumentTypeRepo& repo, - const DataType& type, - ByteBuffer& buffer, uint16_t version); - virtual ClearValueUpdate* clone() const - { return new ClearValueUpdate(*this); } + void checkCompatibility(const Field& field) const override; + bool applyTo(FieldValue& value) const override; + void printXml(XmlOutputStream& xos) const override; + void print(std::ostream& out, bool verbose, const std::string& indent) const override; + void deserialize(const DocumentTypeRepo& repo, const DataType& type, + ByteBuffer& buffer, uint16_t version) override; + ClearValueUpdate* clone() const override { return new ClearValueUpdate(*this); } DECLARE_IDENTIFIABLE(ClearValueUpdate); }; diff --git a/document/src/vespa/document/update/documentupdate.h b/document/src/vespa/document/update/documentupdate.h index 5d5143a0cd5..5d09bd36816 100644 --- a/document/src/vespa/document/update/documentupdate.h +++ b/document/src/vespa/document/update/documentupdate.h @@ -25,13 +25,13 @@ */ #pragma once +#include "fieldupdate.h" +#include "fieldpathupdate.h" #include <vespa/document/base/documentid.h> #include <vespa/document/base/field.h> #include <vespa/document/datatype/documenttype.h> #include <vespa/document/fieldvalue/fieldvalue.h> #include <vespa/document/util/bytebuffer.h> -#include <vespa/document/update/fieldupdate.h> -#include <vespa/document/update/fieldpathupdate.h> namespace document { @@ -144,8 +144,7 @@ public: const DocumentType& getType() const { return static_cast<const DocumentType &> (*_type); } // Printable implementation - virtual void print(std::ostream& out, bool verbose, - const std::string& indent) const; + void print(std::ostream& out, bool verbose, const std::string& indent) const override; void deserialize42(const DocumentTypeRepo&, ByteBuffer&); void deserializeHEAD(const DocumentTypeRepo&, ByteBuffer&); @@ -157,7 +156,7 @@ public: void serializeHEAD(vespalib::nbostream &stream) const; // XmlSerializable implementation - virtual void printXml(XmlOutputStream&) const; + void printXml(XmlOutputStream&) const override; // Cloneable implementation virtual DocumentUpdate* clone() const { diff --git a/document/src/vespa/document/update/fieldpathupdate.h b/document/src/vespa/document/update/fieldpathupdate.h index d69309cdc39..80a63d62281 100644 --- a/document/src/vespa/document/update/fieldpathupdate.h +++ b/document/src/vespa/document/update/fieldpathupdate.h @@ -49,7 +49,7 @@ public: void applyTo(Document& doc) const; - virtual FieldPathUpdate* clone() const = 0; + FieldPathUpdate* clone() const override = 0; virtual bool operator==(const FieldPathUpdate& other) const; bool operator!=(const FieldPathUpdate& other) const { diff --git a/document/src/vespa/document/update/fieldupdate.h b/document/src/vespa/document/update/fieldupdate.h index d47e5579a31..d0e4fd3235e 100644 --- a/document/src/vespa/document/update/fieldupdate.h +++ b/document/src/vespa/document/update/fieldupdate.h @@ -79,11 +79,10 @@ public: void applyTo(Document& doc) const; // Printable implementation - void print(std::ostream& out, bool verbose, - const std::string& indent) const; + void print(std::ostream& out, bool verbose, const std::string& indent) const override; // XmlSerializable implementation - void printXml(XmlOutputStream&) const; + void printXml(XmlOutputStream&) const override; /** * Deserializes the given byte buffer into an instance of an update object. diff --git a/document/src/vespa/document/update/mapvalueupdate.h b/document/src/vespa/document/update/mapvalueupdate.h index cf0869d271f..14bd0fc9bd3 100644 --- a/document/src/vespa/document/update/mapvalueupdate.h +++ b/document/src/vespa/document/update/mapvalueupdate.h @@ -42,7 +42,7 @@ public: _key(key.clone()), _update(update.clone()) {} - virtual bool operator==(const ValueUpdate& other) const; + bool operator==(const ValueUpdate& other) const override; /** @return The key of the field value to update. */ const FieldValue& getKey() const { return *_key; } @@ -75,16 +75,13 @@ public: } // ValueUpdate implementation - virtual void checkCompatibility(const Field& field) const; - virtual bool applyTo(FieldValue& value) const; - virtual void printXml(XmlOutputStream& xos) const; - virtual void print(std::ostream& out, bool verbose, - const std::string& indent) const; - virtual void deserialize(const DocumentTypeRepo& repo, - const DataType& type, - ByteBuffer& buffer, uint16_t version); - virtual MapValueUpdate* clone() const - { return new MapValueUpdate(*this); } + void checkCompatibility(const Field& field) const override; + bool applyTo(FieldValue& value) const override; + void printXml(XmlOutputStream& xos) const override; + void print(std::ostream& out, bool verbose, const std::string& indent) const override; + void deserialize(const DocumentTypeRepo& repo, const DataType& type, + ByteBuffer& buffer, uint16_t version) override; + MapValueUpdate* clone() const override { return new MapValueUpdate(*this); } DECLARE_IDENTIFIABLE(MapValueUpdate); diff --git a/document/src/vespa/document/update/removefieldpathupdate.h b/document/src/vespa/document/update/removefieldpathupdate.h index db5ebde50a7..6de2a105cbf 100644 --- a/document/src/vespa/document/update/removefieldpathupdate.h +++ b/document/src/vespa/document/update/removefieldpathupdate.h @@ -18,10 +18,8 @@ public: FieldPathUpdate* clone() const override { return new RemoveFieldPathUpdate(*this); } - bool operator==(const FieldPathUpdate& other) const; - - virtual void print(std::ostream& out, bool verbose, - const std::string& indent) const; + bool operator==(const FieldPathUpdate& other) const override; + void print(std::ostream& out, bool verbose, const std::string& indent) const override; DECLARE_IDENTIFIABLE(RemoveFieldPathUpdate); ACCEPT_UPDATE_VISITOR; @@ -41,7 +39,7 @@ private: } }; - std::unique_ptr<FieldValue::IteratorHandler> getIteratorHandler(Document&) const { + std::unique_ptr<FieldValue::IteratorHandler> getIteratorHandler(Document&) const override { return std::make_unique<RemoveIteratorHandler>(); } }; diff --git a/document/src/vespa/document/update/removevalueupdate.h b/document/src/vespa/document/update/removevalueupdate.h index 5552796ceb4..42590104870 100644 --- a/document/src/vespa/document/update/removevalueupdate.h +++ b/document/src/vespa/document/update/removevalueupdate.h @@ -5,8 +5,8 @@ */ #pragma once +#include "valueupdate.h" #include <vespa/document/fieldvalue/fieldvalue.h> -#include <vespa/document/update/valueupdate.h> namespace document { @@ -28,7 +28,7 @@ public: : ValueUpdate(), _key(key.clone()) {} - virtual bool operator==(const ValueUpdate& other) const; + bool operator==(const ValueUpdate& other) const override; /** * @return The key, whose value to remove during this update. This will be @@ -48,16 +48,13 @@ public: } // ValueUpdate implementation - virtual void checkCompatibility(const Field& field) const; - virtual bool applyTo(FieldValue& value) const; - virtual void printXml(XmlOutputStream& xos) const; - virtual void print(std::ostream& out, bool verbose, - const std::string& indent) const; - virtual void deserialize(const DocumentTypeRepo& repo, - const DataType& type, - ByteBuffer& buffer, uint16_t version); - virtual RemoveValueUpdate* clone() const - { return new RemoveValueUpdate(*this); } + void checkCompatibility(const Field& field) const override; + bool applyTo(FieldValue& value) const override; + void printXml(XmlOutputStream& xos) const override; + void print(std::ostream& out, bool verbose, const std::string& indent) const override; + void deserialize(const DocumentTypeRepo& repo, const DataType& type, + ByteBuffer& buffer, uint16_t version) override; + RemoveValueUpdate* clone() const override { return new RemoveValueUpdate(*this); } DECLARE_IDENTIFIABLE(RemoveValueUpdate); diff --git a/document/src/vespa/document/update/valueupdate.h b/document/src/vespa/document/update/valueupdate.h index a11838095ae..e4f32c57cf8 100644 --- a/document/src/vespa/document/update/valueupdate.h +++ b/document/src/vespa/document/update/valueupdate.h @@ -18,13 +18,12 @@ */ #pragma once - -#include <vespa/vespalib/objects/cloneable.h> +#include "updatevisitor.h" #include <vespa/document/datatype/datatype.h> #include <vespa/document/util/serializable.h> #include <vespa/document/util/xmlserializable.h> -#include <vespa/document/update/updatevisitor.h> +#include <vespa/vespalib/objects/cloneable.h> namespace document { @@ -87,7 +86,7 @@ public: */ virtual bool applyTo(FieldValue& value) const = 0; - virtual ValueUpdate* clone() const = 0; + ValueUpdate* clone() const override = 0; /** * Deserializes the given byte buffer into an instance of an update object. diff --git a/document/src/vespa/document/util/compressor.h b/document/src/vespa/document/util/compressor.h index cf3e831faa3..599d9424889 100644 --- a/document/src/vespa/document/util/compressor.h +++ b/document/src/vespa/document/util/compressor.h @@ -21,10 +21,10 @@ public: class LZ4Compressor : public ICompressor { public: - virtual bool process(const CompressionConfig& config, const void * input, size_t inputLen, void * output, size_t & outputLen); - virtual bool unprocess(const void * input, size_t inputLen, void * output, size_t & outputLen); - virtual size_t adjustProcessLen(uint16_t options, size_t len) const; - virtual size_t adjustUnProcessLen(uint16_t options, size_t len) const; + bool process(const CompressionConfig& config, const void * input, size_t inputLen, void * output, size_t & outputLen) override; + bool unprocess(const void * input, size_t inputLen, void * output, size_t & outputLen) override; + size_t adjustProcessLen(uint16_t options, size_t len) const override; + size_t adjustUnProcessLen(uint16_t options, size_t len) const override; }; /** diff --git a/fastlib/src/vespa/fastlib/io/bufferedfile.h b/fastlib/src/vespa/fastlib/io/bufferedfile.h index d0fb0fbf1f6..377965dff0d 100644 --- a/fastlib/src/vespa/fastlib/io/bufferedfile.h +++ b/fastlib/src/vespa/fastlib/io/bufferedfile.h @@ -117,7 +117,7 @@ public: * @param src The source buffer. * @param srclen The length of the source buffer. */ - virtual ssize_t Write2(const void*, size_t); + ssize_t Write2(const void*, size_t) override; /** * Write a string to a buffered file, flushing to file * as necessary. @@ -133,7 +133,7 @@ public: * @param dstlen The length of the destination buffer. * @return The number of bytes read. */ - ssize_t Read(void *dst, size_t dstlen); + ssize_t Read(void *dst, size_t dstlen) override; /** * Write one byte to the buffered file, flushing to * file if necessary. @@ -179,48 +179,46 @@ public: * * @return int64_t The size of the file. */ - int64_t GetSize (void); + int64_t GetSize () override; /** * Truncate or extend the file to a new size. Required write * access. * * @return bool True if successful. */ - bool SetSize (int64_t s); + bool SetSize (int64_t s) override; /** * Test if the file is opened. * * @return bool True if the file is currently opened. */ - bool IsOpened (void) const; + bool IsOpened () const override; /** * Force completion of pending disk writes (flush cache). */ - bool Sync(void); + bool Sync() override; /** * Get the time the file was last modified. * * @return time_t The last modification time. */ - time_t GetModificationTime(void); + time_t GetModificationTime() override; /** * Turn on direct IO. */ - void EnableDirectIO(void); - - virtual void - EnableSyncWrites(void); + void EnableDirectIO() override; + void EnableSyncWrites() override; /** * Flush the buffer. If in write mode, write the buffer to * the file, then reset the buffer. */ - void Flush(void); + void Flush(); /** * Flush the buffer, and close the file instance. * @return The result of the Close operation. */ - bool Close (void); + bool Close () override; /** * Get the buffered file position, in bytes. * This takes into account the data in the buffer, that has @@ -228,7 +226,7 @@ public: * * @return int64_t The file position. */ - int64_t GetPosition (void); + int64_t GetPosition () override; /** * Set the position in the file. The next read or write * will continue from this position. @@ -236,20 +234,20 @@ public: * @param s The position. * @return bool True if successful. */ - bool SetPosition(int64_t s); + bool SetPosition(int64_t s) override; /** * Get name of buffered file. * * @return name of buffered file, or NULL if no file. */ - const char *GetFileName(void) const; + const char *GetFileName() const override; /** * Just forwarded to the real file to support FastOS_FileInterface. */ - virtual bool Open(unsigned int, const char*); - virtual bool Delete(); + bool Open(unsigned int, const char*) override; + bool Delete() override; void alignEndForDirectIO(); }; diff --git a/fastlib/src/vespa/fastlib/text/normwordfolder.h b/fastlib/src/vespa/fastlib/text/normwordfolder.h index c1240dc40bd..d368b6177db 100644 --- a/fastlib/src/vespa/fastlib/text/normwordfolder.h +++ b/fastlib/src/vespa/fastlib/text/normwordfolder.h @@ -2,7 +2,7 @@ #pragma once -#include <vespa/fastlib/text/wordfolder.h> +#include "wordfolder.h" #include <cstdint> /** @@ -167,27 +167,15 @@ public: } public: - Fast_NormalizeWordFolder(void); - virtual ~Fast_NormalizeWordFolder(void); - virtual size_t FoldedSizeAsUTF8(const char *word) const; - virtual char *FoldUTF8WordToUTF8Quick(char *wordbufpos, const char *word) const; - virtual const char *Tokenize(const char *buf, - const char *bufend, - char *dstbuf, - char *dstbufend, - const char*& origstart, - size_t& tokenlen) const; - virtual const char *Tokenize(const char *buf, - const char *bufend, - ucs4_t *dstbuf, - ucs4_t *dstbufend, - const char*& origstart, - size_t& tokenlen) const; - virtual const char* UCS4Tokenize(const char *buf, - const char *bufend, - ucs4_t *dstbuf, - ucs4_t *dstbufend, - const char*& origstart, - size_t& tokenlen) const; + Fast_NormalizeWordFolder(); + virtual ~Fast_NormalizeWordFolder(); + virtual size_t FoldedSizeAsUTF8(const char *word) const; + virtual char *FoldUTF8WordToUTF8Quick(char *wordbufpos, const char *word) const; + virtual const char *Tokenize(const char *buf, const char *bufend, char *dstbuf, + char *dstbufend, const char*& origstart, size_t& tokenlen) const; + virtual const char *Tokenize(const char *buf, const char *bufend, ucs4_t *dstbuf, + ucs4_t *dstbufend, const char*& origstart, size_t& tokenlen) const; + const char* UCS4Tokenize(const char *buf, const char *bufend, ucs4_t *dstbuf, + ucs4_t *dstbufend, const char*& origstart, size_t& tokenlen) const override; }; diff --git a/messagebus/src/vespa/messagebus/network/oosclient.cpp b/messagebus/src/vespa/messagebus/network/oosclient.cpp index 28e46483c50..d0039d3d800 100644 --- a/messagebus/src/vespa/messagebus/network/oosclient.cpp +++ b/messagebus/src/vespa/messagebus/network/oosclient.cpp @@ -1,6 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "oosclient.h" +#include <vespa/fnet/frt/supervisor.h> namespace mbus { diff --git a/messagebus/src/vespa/messagebus/network/oosclient.h b/messagebus/src/vespa/messagebus/network/oosclient.h index 62f799740ec..7fc76930519 100644 --- a/messagebus/src/vespa/messagebus/network/oosclient.h +++ b/messagebus/src/vespa/messagebus/network/oosclient.h @@ -2,7 +2,8 @@ #pragma once -#include <vespa/fnet/frt/frt.h> +#include <vespa/fnet/frt/invoker.h> +#include <vespa/fnet/frt/target.h> #include <vespa/messagebus/common.h> #include <vector> #include <set> @@ -53,14 +54,14 @@ private: /** * From FNET_Task, performs overall server poll logic. **/ - void PerformTask(); + void PerformTask() override; /** * From FRT_IRequestWait, picks up server replies. * * @param req the request that has completed **/ - void RequestDone(FRT_RPCRequest *req); + void RequestDone(FRT_RPCRequest *req) override; public: /** diff --git a/messagebus/src/vespa/messagebus/network/oosmanager.h b/messagebus/src/vespa/messagebus/network/oosmanager.h index e2606a25caa..836b8bf7393 100644 --- a/messagebus/src/vespa/messagebus/network/oosmanager.h +++ b/messagebus/src/vespa/messagebus/network/oosmanager.h @@ -1,12 +1,11 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once +#include "oosclient.h" #include <vespa/fnet/task.h> -#include <set> #include <vespa/slobrok/imirrorapi.h> -#include <string> #include <vespa/vespalib/util/sync.h> -#include "oosclient.h" +#include <set> class FRT_Supervisor; @@ -54,7 +53,7 @@ private: * Method invoked when this object is run as a task. This method will update the oos information held by * this object. */ - void PerformTask(); + void PerformTask() override; public: /** diff --git a/messagebus/src/vespa/messagebus/network/rpcnetwork.cpp b/messagebus/src/vespa/messagebus/network/rpcnetwork.cpp index 21a63cc9060..4919e057df1 100644 --- a/messagebus/src/vespa/messagebus/network/rpcnetwork.cpp +++ b/messagebus/src/vespa/messagebus/network/rpcnetwork.cpp @@ -1,10 +1,10 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "inetworkowner.h" #include "rpcnetwork.h" -#include <vespa/messagebus/emptyreply.h> #include <vespa/messagebus/errorcode.h> #include <vespa/messagebus/iprotocol.h> #include <vespa/messagebus/tracelevel.h> +#include <vespa/messagebus/emptyreply.h> #include <vespa/messagebus/routing/routingnode.h> #include <vespa/slobrok/sbregister.h> #include <vespa/slobrok/sbmirror.h> @@ -12,7 +12,6 @@ LOG_SETUP(".rpcnetwork"); - namespace { /** @@ -37,7 +36,7 @@ public: _gate.await(); } - void PerformTask() { + void PerformTask() override { _gate.countDown(); } }; diff --git a/messagebus/src/vespa/messagebus/network/rpcnetwork.h b/messagebus/src/vespa/messagebus/network/rpcnetwork.h index 674fb579b61..5edd660893f 100644 --- a/messagebus/src/vespa/messagebus/network/rpcnetwork.h +++ b/messagebus/src/vespa/messagebus/network/rpcnetwork.h @@ -1,18 +1,20 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/messagebus/blob.h> -#include <vespa/messagebus/blobref.h> -#include <vespa/messagebus/message.h> -#include <vespa/messagebus/reply.h> -#include <vespa/slobrok/imirrorapi.h> -#include <vespa/vespalib/component/versionspecification.h> #include "inetwork.h" #include "oosmanager.h" #include "rpcnetworkparams.h" #include "rpcsendv1.h" #include "rpcservicepool.h" #include "rpctargetpool.h" +#include <vespa/messagebus/blob.h> +#include <vespa/messagebus/blobref.h> +#include <vespa/messagebus/message.h> +#include <vespa/messagebus/reply.h> +#include <vespa/slobrok/imirrorapi.h> +#include <vespa/vespalib/component/versionspecification.h> +#include <vespa/fnet/transport.h> +#include <vespa/fnet/frt/supervisor.h> namespace slobrok { namespace api { @@ -39,14 +41,14 @@ private: vespalib::Version _version; SendContext(RPCNetwork &net, const Message &msg, const std::vector<RoutingNode*> &recipients); - void handleVersion(const vespalib::Version *version); + void handleVersion(const vespalib::Version *version) override; }; struct TargetPoolTask : public FNET_Task { RPCTargetPool &_pool; TargetPoolTask(FNET_Scheduler &scheduler, RPCTargetPool &pool); - void PerformTask(); + void PerformTask() override; }; typedef std::map<vespalib::VersionSpecification, RPCSendAdapter*> SendAdapterMap; @@ -210,46 +212,20 @@ public: void replyError(const SendContext &ctx, uint32_t errCode, const string &errMsg); - // Implements INetwork. - void attach(INetworkOwner &owner); - - // Implements INetwork. - const string getConnectionSpec() const; - - // Implements INetwork. - bool start(); - - // Implements INetwork. - bool waitUntilReady(double seconds) const; - - // Implements INetwork. - void registerSession(const string &session); - - // Implements INetwork. - void unregisterSession(const string &session); - - // Implements INetwork. - bool allocServiceAddress(RoutingNode &recipient); - - // Implements INetwork. - void freeServiceAddress(RoutingNode &recipient); - - // Implements INetwork. - void send(const Message &msg, const std::vector<RoutingNode*> &recipients); - - // Implements INetwork. - void sync(); - - // Implements INetwork. - void shutdown(); - - // Implements INetwork. - void postShutdownHook(); - - // Implements INetwork. - const slobrok::api::IMirrorAPI &getMirror() const; + void attach(INetworkOwner &owner) override; + const string getConnectionSpec() const override; + bool start() override; + bool waitUntilReady(double seconds) const override; + void registerSession(const string &session) override; + void unregisterSession(const string &session) override; + bool allocServiceAddress(RoutingNode &recipient) override; + void freeServiceAddress(RoutingNode &recipient) override; + void send(const Message &msg, const std::vector<RoutingNode*> &recipients) override; + void sync() override; + void shutdown() override; + void postShutdownHook() override; + const slobrok::api::IMirrorAPI &getMirror() const override; - // Implements FRT_Invokable. void invoke(FRT_RPCRequest *req); }; diff --git a/messagebus/src/vespa/messagebus/network/rpcsendadapter.h b/messagebus/src/vespa/messagebus/network/rpcsendadapter.h index 136f2a0f23c..2a00b9193fe 100644 --- a/messagebus/src/vespa/messagebus/network/rpcsendadapter.h +++ b/messagebus/src/vespa/messagebus/network/rpcsendadapter.h @@ -1,8 +1,8 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <memory> -#include <vespa/vespalib/util/referencecounter.h> +#include <vespa/messagebus/blobref.h> +#include <vespa/vespalib/component/version.h> namespace mbus { diff --git a/messagebus/src/vespa/messagebus/network/rpcsendv1.cpp b/messagebus/src/vespa/messagebus/network/rpcsendv1.cpp index c62b1c3f0b8..795141f42d6 100644 --- a/messagebus/src/vespa/messagebus/network/rpcsendv1.cpp +++ b/messagebus/src/vespa/messagebus/network/rpcsendv1.cpp @@ -1,13 +1,12 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#include "rpcnetwork.h" #include <vespa/messagebus/routing/routingnode.h> #include <vespa/messagebus/emptyreply.h> -#include <vespa/messagebus/error.h> #include <vespa/messagebus/errorcode.h> #include <vespa/messagebus/tracelevel.h> #include <vespa/vespalib/util/stringfmt.h> -#include "rpcnetwork.h" -#include "rpcsendv1.h" -#include "rpctarget.h" +#include <vespa/fnet/channel.h> namespace { diff --git a/messagebus/src/vespa/messagebus/network/rpcsendv1.h b/messagebus/src/vespa/messagebus/network/rpcsendv1.h index 8ea63f39403..4d85dd6aca9 100644 --- a/messagebus/src/vespa/messagebus/network/rpcsendv1.h +++ b/messagebus/src/vespa/messagebus/network/rpcsendv1.h @@ -1,10 +1,11 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/fnet/frt/frt.h> +#include "rpcsendadapter.h" #include <vespa/messagebus/idiscardhandler.h> #include <vespa/messagebus/ireplyhandler.h> -#include "rpcsendadapter.h" +#include <vespa/fnet/frt/invokable.h> + namespace mbus { diff --git a/messagebus/src/vespa/messagebus/network/rpctarget.cpp b/messagebus/src/vespa/messagebus/network/rpctarget.cpp index b50212cd1b4..c9caa9ebe4b 100644 --- a/messagebus/src/vespa/messagebus/network/rpctarget.cpp +++ b/messagebus/src/vespa/messagebus/network/rpctarget.cpp @@ -1,6 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "rpctarget.h" #include <vespa/vespalib/util/exceptions.h> +#include <vespa/fnet/frt/supervisor.h> namespace mbus { diff --git a/messagebus/src/vespa/messagebus/network/rpctarget.h b/messagebus/src/vespa/messagebus/network/rpctarget.h index 89212c783b0..c7108f40a05 100644 --- a/messagebus/src/vespa/messagebus/network/rpctarget.h +++ b/messagebus/src/vespa/messagebus/network/rpctarget.h @@ -1,11 +1,11 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/fnet/frt/frt.h> -#include <vector> +#include <vespa/messagebus/common.h> +#include <vespa/fnet/frt/invoker.h> +#include <vespa/fnet/frt/target.h> #include <vespa/vespalib/component/version.h> #include <vespa/vespalib/util/sync.h> -#include <vespa/messagebus/common.h> namespace mbus { @@ -113,7 +113,7 @@ public: const vespalib::Version &getVersion() const { return *_version; } // Implements FRT_IRequestWait. - void RequestDone(FRT_RPCRequest *req); + void RequestDone(FRT_RPCRequest *req) override; }; } // namespace mbus diff --git a/messagebus/src/vespa/messagebus/routing/errordirective.h b/messagebus/src/vespa/messagebus/routing/errordirective.h index d55596e2871..5c125c65820 100644 --- a/messagebus/src/vespa/messagebus/routing/errordirective.h +++ b/messagebus/src/vespa/messagebus/routing/errordirective.h @@ -31,10 +31,10 @@ public: */ const string &getMessage() const { return _msg; } - virtual Type getType() const { return TYPE_ERROR; } - virtual bool matches(const IHopDirective &) const { return false; } - virtual string toString() const; - virtual string toDebugString() const; + Type getType() const override { return TYPE_ERROR; } + bool matches(const IHopDirective &) const override { return false; } + string toString() const override; + string toDebugString() const override; }; } // mbus diff --git a/messagebus/src/vespa/messagebus/routing/policydirective.h b/messagebus/src/vespa/messagebus/routing/policydirective.h index 3b25bd76197..30102ff276b 100644 --- a/messagebus/src/vespa/messagebus/routing/policydirective.h +++ b/messagebus/src/vespa/messagebus/routing/policydirective.h @@ -41,10 +41,10 @@ public: */ const string &getParam() const { return _param; } - virtual Type getType() const { return TYPE_POLICY; } - virtual bool matches(const IHopDirective &) const { return true; } - virtual string toString() const; - virtual string toDebugString() const; + Type getType() const override { return TYPE_POLICY; } + bool matches(const IHopDirective &) const override { return true; } + string toString() const override; + string toDebugString() const override; }; } // mbus diff --git a/messagebus/src/vespa/messagebus/routing/retrytransienterrorspolicy.h b/messagebus/src/vespa/messagebus/routing/retrytransienterrorspolicy.h index 98efe3de08c..b56844789ef 100644 --- a/messagebus/src/vespa/messagebus/routing/retrytransienterrorspolicy.h +++ b/messagebus/src/vespa/messagebus/routing/retrytransienterrorspolicy.h @@ -42,11 +42,8 @@ public: */ RetryTransientErrorsPolicy &setBaseDelay(double baseDelay); - // Implements IRetryPolicy. - bool canRetry(uint32_t errorCode) const; - - // Implements IRetryPolicy. - double getRetryDelay(uint32_t retry) const; + bool canRetry(uint32_t errorCode) const override; + double getRetryDelay(uint32_t retry) const override; }; } // namespace mbus diff --git a/messagebus/src/vespa/messagebus/routing/routedirective.h b/messagebus/src/vespa/messagebus/routing/routedirective.h index 3fe50e2efd9..d95c3d37aaf 100644 --- a/messagebus/src/vespa/messagebus/routing/routedirective.h +++ b/messagebus/src/vespa/messagebus/routing/routedirective.h @@ -32,10 +32,10 @@ public: */ const string &getName() const { return _name; } - virtual Type getType() const { return TYPE_ROUTE; } - virtual bool matches(const IHopDirective &dir) const; - virtual string toString() const; - virtual string toDebugString() const; + Type getType() const override { return TYPE_ROUTE; } + bool matches(const IHopDirective &dir) const override; + string toString() const override; + string toDebugString() const override; }; } // mbus diff --git a/messagebus/src/vespa/messagebus/routing/routeparser.cpp b/messagebus/src/vespa/messagebus/routing/routeparser.cpp index 86f5e3433f1..0329f7fd9d9 100644 --- a/messagebus/src/vespa/messagebus/routing/routeparser.cpp +++ b/messagebus/src/vespa/messagebus/routing/routeparser.cpp @@ -5,10 +5,7 @@ #include "routeparser.h" #include "tcpdirective.h" #include "verbatimdirective.h" -#include <vespa/messagebus/common.h> -#include <stdio.h> #include <vespa/vespalib/util/stringfmt.h> -#include <vespa/vespalib/util/vstringfmt.h> using vespalib::stringref; diff --git a/messagebus/src/vespa/messagebus/routing/routingnode.h b/messagebus/src/vespa/messagebus/routing/routingnode.h index aa854dce5ef..21a70270c9e 100644 --- a/messagebus/src/vespa/messagebus/routing/routingnode.h +++ b/messagebus/src/vespa/messagebus/routing/routingnode.h @@ -440,8 +440,7 @@ public: */ void setServiceAddress(IServiceAddress::UP serviceAddress) { _serviceAddress = std::move(serviceAddress); } - // Inherit doc from IReplyHandler. - virtual void handleReply(Reply::UP reply); + void handleReply(Reply::UP reply) override; }; } // namespace mbus diff --git a/messagebus/src/vespa/messagebus/routing/tcpdirective.h b/messagebus/src/vespa/messagebus/routing/tcpdirective.h index ab8c422c387..12cb90e07f8 100644 --- a/messagebus/src/vespa/messagebus/routing/tcpdirective.h +++ b/messagebus/src/vespa/messagebus/routing/tcpdirective.h @@ -1,7 +1,6 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <stdint.h> #include "ihopdirective.h" namespace mbus { @@ -50,10 +49,10 @@ public: */ const string &getSession() const { return _session; } - virtual Type getType() const { return TYPE_TCP; } - virtual bool matches(const IHopDirective &dir) const; - virtual string toString() const; - virtual string toDebugString() const; + Type getType() const override { return TYPE_TCP; } + bool matches(const IHopDirective &dir) const override; + string toString() const override; + string toDebugString() const override; }; } // mbus diff --git a/messagebus/src/vespa/messagebus/routing/verbatimdirective.h b/messagebus/src/vespa/messagebus/routing/verbatimdirective.h index 41ebae497f9..df7e7fff6c0 100644 --- a/messagebus/src/vespa/messagebus/routing/verbatimdirective.h +++ b/messagebus/src/vespa/messagebus/routing/verbatimdirective.h @@ -31,10 +31,10 @@ public: */ const string &getImage() const { return _image; } - virtual Type getType() const { return TYPE_VERBATIM; } - virtual bool matches(const IHopDirective &dir) const; - virtual string toString() const; - virtual string toDebugString() const; + Type getType() const override { return TYPE_VERBATIM; } + bool matches(const IHopDirective &dir) const override; + string toString() const override; + string toDebugString() const override; }; } // mbus diff --git a/searchcommon/src/vespa/searchcommon/attribute/iattributevector.h b/searchcommon/src/vespa/searchcommon/attribute/iattributevector.h index 331e950879a..6f7e01dd7af 100644 --- a/searchcommon/src/vespa/searchcommon/attribute/iattributevector.h +++ b/searchcommon/src/vespa/searchcommon/attribute/iattributevector.h @@ -2,12 +2,10 @@ #pragma once -#include <string> -#include <stdint.h> -#include <vespa/vespalib/stllike/string.h> +#include "collectiontype.h" +#include "basictype.h" #include <vespa/searchcommon/common/iblobconverter.h> -#include <vespa/searchcommon/attribute/collectiontype.h> -#include <vespa/searchcommon/attribute/basictype.h> +#include <vespa/vespalib/stllike/string.h> namespace search { diff --git a/searchlib/src/vespa/searchlib/aggregation/aggregationresult.h b/searchlib/src/vespa/searchlib/aggregation/aggregationresult.h index 1665da12d31..2cf40ee7750 100644 --- a/searchlib/src/vespa/searchlib/aggregation/aggregationresult.h +++ b/searchlib/src/vespa/searchlib/aggregation/aggregationresult.h @@ -14,14 +14,17 @@ using search::expression::DocId; private: \ public: -#define DECLARE_AGGREGATIONRESULT(cclass) \ - DECLARE_IDENTIFIABLE_NS2(search, aggregation, cclass); \ - DECLARE_NBO_SERIALIZE; \ - virtual cclass *clone() const { return new cclass(*this); } \ - private: \ - virtual void onMerge(const AggregationResult & b); \ - virtual void onAggregate(const ResultNode &result); \ - virtual void onReset(); \ +#define DECLARE_AGGREGATIONRESULT_BASE(cclass) \ + DECLARE_IDENTIFIABLE_NS2(search, aggregation, cclass); \ + DECLARE_NBO_SERIALIZE; + +#define DECLARE_AGGREGATIONRESULT(cclass) \ + DECLARE_AGGREGATIONRESULT_BASE(cclass); \ + cclass *clone() const override { return new cclass(*this); } \ + private: \ + void onMerge(const AggregationResult & b) override; \ + void onAggregate(const ResultNode &result) override; \ + void onReset() override; \ public: // resultNodePrimitive : countHits | hits(INTEGER) | groups(INTEGER) | xor | sum | min | max |avg @@ -41,12 +44,12 @@ public: class Configure : public vespalib::ObjectOperation, public vespalib::ObjectPredicate { private: - virtual void execute(vespalib::Identifiable &obj); - virtual bool check(const vespalib::Identifiable &obj) const; + void execute(vespalib::Identifiable &obj) override; + bool check(const vespalib::Identifiable &obj) const override; }; - virtual void visitMembers(vespalib::ObjectVisitor & visitor) const; - virtual void selectMembers(const vespalib::ObjectPredicate & predicate, vespalib::ObjectOperation & operation); + void visitMembers(vespalib::ObjectVisitor & visitor) const override; + void selectMembers(const vespalib::ObjectPredicate & predicate, vespalib::ObjectOperation & operation) override; void reset() { onReset(); } void merge(const AggregationResult & b) { onMerge(b); } @@ -60,18 +63,16 @@ public: } const ResultNode & getRank() const { return onGetRank(); } - const ResultNode & getResult() const { return onGetRank(); } + const ResultNode & getResult() const override { return onGetRank(); } virtual ResultNode & getResult() { return const_cast<ResultNode &>(onGetRank()); } - virtual AggregationResult * clone() const = 0; + virtual AggregationResult * clone() const override = 0; const ExpressionNode * getExpression() const { return _expressionTree->getRoot(); } ExpressionNode * getExpression() { return _expressionTree->getRoot(); } protected: AggregationResult(); private: - /// from expressionnode - virtual void onPrepare(bool preserveAccurateTypes) { (void) preserveAccurateTypes; } - /// from expressionnode - virtual bool onExecute() const { return true; } + void onPrepare(bool preserveAccurateTypes) override { (void) preserveAccurateTypes; } + bool onExecute() const override { return true; } void prepare() { if (getExpression() != NULL) { prepare(&getExpression()->getResult(), false); } } void prepare(const ResultNode * result, bool useForInit) { if (result) { onPrepare(*result, useForInit); } } diff --git a/searchlib/src/vespa/searchlib/aggregation/expressioncountaggregationresult.h b/searchlib/src/vespa/searchlib/aggregation/expressioncountaggregationresult.h index fb4ee2b2a6a..5e55c146660 100644 --- a/searchlib/src/vespa/searchlib/aggregation/expressioncountaggregationresult.h +++ b/searchlib/src/vespa/searchlib/aggregation/expressioncountaggregationresult.h @@ -21,15 +21,14 @@ class ExpressionCountAggregationResult : public AggregationResult { HyperLogLog<PRECISION> _hll; expression::Int64ResultNode _rank; - virtual const ResultNode & onGetRank() const { return _rank; } - virtual void onPrepare(const ResultNode &, bool) { } + const ResultNode & onGetRank() const override { return _rank; } + void onPrepare(const ResultNode &, bool) override { } public: DECLARE_AGGREGATIONRESULT(ExpressionCountAggregationResult); ExpressionCountAggregationResult() : AggregationResult(), _hll() { } - virtual void visitMembers(vespalib::ObjectVisitor &) const {} - const Sketch<PRECISION, uint32_t> &getSketch() const - { return _hll.getSketch(); } + void visitMembers(vespalib::ObjectVisitor &) const override {} + const Sketch<PRECISION, uint32_t> &getSketch() const { return _hll.getSketch(); } }; } // namespace aggregation diff --git a/searchlib/src/vespa/searchlib/aggregation/fs4hit.h b/searchlib/src/vespa/searchlib/aggregation/fs4hit.h index b5392b25e72..96e394333a2 100644 --- a/searchlib/src/vespa/searchlib/aggregation/fs4hit.h +++ b/searchlib/src/vespa/searchlib/aggregation/fs4hit.h @@ -23,8 +23,8 @@ public: FS4Hit() : Hit(), _path(0), _docId(0), _globalId(), _distributionKey(-1) {} FS4Hit(DocId docId, HitRank rank) : Hit(rank), _path(0), _docId(docId), _globalId(), _distributionKey(-1) {} - virtual FS4Hit *clone() const { return new FS4Hit(*this); } - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; + FS4Hit *clone() const override { return new FS4Hit(*this); } + void visitMembers(vespalib::ObjectVisitor &visitor) const override; uint32_t getPath() const { return _path; } FS4Hit &setPath(uint32_t val) { _path = val; return *this; } uint32_t getDocId() const { return _docId; } diff --git a/searchlib/src/vespa/searchlib/aggregation/group.h b/searchlib/src/vespa/searchlib/aggregation/group.h index 87fd1794150..2d95c8d1161 100644 --- a/searchlib/src/vespa/searchlib/aggregation/group.h +++ b/searchlib/src/vespa/searchlib/aggregation/group.h @@ -175,7 +175,7 @@ private: public: DECLARE_IDENTIFIABLE_NS2(search, aggregation, Group); DECLARE_NBO_SERIALIZE; - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; + void visitMembers(vespalib::ObjectVisitor &visitor) const override; Group(); Group(const Group & rhs); Group & operator =(const Group & rhs); diff --git a/searchlib/src/vespa/searchlib/aggregation/grouping.cpp b/searchlib/src/vespa/searchlib/aggregation/grouping.cpp index 098d7ad1b40..d376ee5fd46 100644 --- a/searchlib/src/vespa/searchlib/aggregation/grouping.cpp +++ b/searchlib/src/vespa/searchlib/aggregation/grouping.cpp @@ -60,7 +60,7 @@ private: uint32_t _level; public: EnumConverter(Grouping & g, uint32_t level) : _grouping(g), _level(level) { } - virtual void execute(vespalib::Identifiable &obj) { + void execute(vespalib::Identifiable &obj) override { Group &group = static_cast<Group &>(obj); uint32_t tmplevel = _level; if (group.hasId()) { @@ -81,7 +81,7 @@ public: list[i]->select(enumConverter, enumConverter); } } - virtual bool check(const vespalib::Identifiable &obj) const { return obj.inherits(Group::classId); } + bool check(const vespalib::Identifiable &obj) const override { return obj.inherits(Group::classId); } }; class GlobalIdConverter : public vespalib::ObjectOperation, public vespalib::ObjectPredicate @@ -90,14 +90,14 @@ private: const IDocumentMetaStore &_metaStore; public: GlobalIdConverter(const IDocumentMetaStore &metaStore) : _metaStore(metaStore) {} - virtual void execute(vespalib::Identifiable & obj) { + void execute(vespalib::Identifiable & obj) override { FS4Hit & hit = static_cast<FS4Hit &>(obj); document::GlobalId gid; _metaStore.getGid(hit.getDocId(), gid); hit.setGlobalId(gid); LOG(debug, "GlobalIdConverter: lid(%u) -> gid(%s)", hit.getDocId(), hit.getGlobalId().toString().c_str()); } - virtual bool check(const vespalib::Identifiable & obj) const { + bool check(const vespalib::Identifiable & obj) const override { return obj.inherits(FS4Hit::classId); } }; diff --git a/searchlib/src/vespa/searchlib/aggregation/grouping.h b/searchlib/src/vespa/searchlib/aggregation/grouping.h index 687e26b7fcd..fe373a96d5c 100644 --- a/searchlib/src/vespa/searchlib/aggregation/grouping.h +++ b/searchlib/src/vespa/searchlib/aggregation/grouping.h @@ -40,7 +40,7 @@ private: public: DECLARE_IDENTIFIABLE_NS2(search, aggregation, Grouping); DECLARE_NBO_SERIALIZE; - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; + void visitMembers(vespalib::ObjectVisitor &visitor) const override; Grouping(); Grouping(const Grouping &); Grouping & operator = (const Grouping &); diff --git a/searchlib/src/vespa/searchlib/aggregation/groupinglevel.h b/searchlib/src/vespa/searchlib/aggregation/groupinglevel.h index 3c49b98e16a..30038aca0a5 100644 --- a/searchlib/src/vespa/searchlib/aggregation/groupinglevel.h +++ b/searchlib/src/vespa/searchlib/aggregation/groupinglevel.h @@ -66,7 +66,7 @@ private: void group(Group & g, const ResultNode & result, const document::Document & doc, HitRank rank) const override { groupDoc(g, result, doc, rank); } - virtual MultiValueGrouper * clone() const { return new MultiValueGrouper(*this); } + MultiValueGrouper * clone() const override { return new MultiValueGrouper(*this); } }; int64_t _maxGroups; int64_t _precision; diff --git a/searchlib/src/vespa/searchlib/aggregation/hit.h b/searchlib/src/vespa/searchlib/aggregation/hit.h index cd9758722ed..f958ec2035c 100644 --- a/searchlib/src/vespa/searchlib/aggregation/hit.h +++ b/searchlib/src/vespa/searchlib/aggregation/hit.h @@ -1,10 +1,9 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once +#include "rawrank.h" #include <vespa/searchlib/common/identifiable.h> #include <vespa/searchlib/common/hitrank.h> -#include "rawrank.h" - namespace search { namespace aggregation { @@ -23,8 +22,8 @@ public: Hit(RawRank rank) : _rank(rank) {} RawRank getRank() const { return _rank; } virtual Hit *clone() const = 0; - virtual int onCmp(const Identifiable &b) const; - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; + int onCmp(const Identifiable &b) const override; + void visitMembers(vespalib::ObjectVisitor &visitor) const override; }; } diff --git a/searchlib/src/vespa/searchlib/aggregation/hitlist.h b/searchlib/src/vespa/searchlib/aggregation/hitlist.h index 34c5bcaba46..1d701f5a004 100644 --- a/searchlib/src/vespa/searchlib/aggregation/hitlist.h +++ b/searchlib/src/vespa/searchlib/aggregation/hitlist.h @@ -1,9 +1,9 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/common/identifiable.h> #include "fs4hit.h" #include "vdshit.h" +#include <vespa/searchlib/common/identifiable.h> namespace search { namespace aggregation { @@ -19,35 +19,35 @@ private: std::vector<FS4Hit> _fs4hits; std::vector<VdsHit> _vdshits; - virtual int64_t onGetInteger(size_t index) const { (void) index; return 0; } - virtual double onGetFloat(size_t index) const { (void) index; return 0.0; } - virtual ConstBufferRef onGetString(size_t index, BufferRef buf) const { (void) index; return buf; } - virtual size_t hash() const { return 0; } - virtual void set(const ResultNode & rhs); - virtual void decode(const void * buf) { + int64_t onGetInteger(size_t index) const override { (void) index; return 0; } + double onGetFloat(size_t index) const override { (void) index; return 0.0; } + ConstBufferRef onGetString(size_t index, BufferRef buf) const override { (void) index; return buf; } + size_t hash() const override { return 0; } + void set(const ResultNode & rhs) override; + void decode(const void * buf) override { _fs4hits = *static_cast<const Fs4V *>(buf); _vdshits = *static_cast<const VdsV *>(static_cast<const void *>(static_cast<const uint8_t *>(buf)+sizeof(_fs4hits))); } - virtual void swap(void * buf) { + void swap(void * buf) override { static_cast<Fs4V *>(buf)->swap(_fs4hits); static_cast<VdsV *>(static_cast<void *>(static_cast<uint8_t *>(buf)+sizeof(_fs4hits)))->swap(_vdshits); } - virtual void encode(void * buf) const { + void encode(void * buf) const override { *static_cast<Fs4V *>(buf) = _fs4hits; *static_cast<VdsV *>(static_cast<void *>(static_cast<uint8_t *>(buf)+sizeof(_fs4hits))) = _vdshits; } - virtual void create(void * buf) const { + void create(void * buf) const override { new (buf) Fs4V(); new (static_cast<uint8_t *>(buf)+sizeof(_fs4hits)) VdsV(); } - virtual void destroy(void * buf) const { + void destroy(void * buf) const override { static_cast<Fs4V *>(buf)->Fs4V::~Fs4V(); static_cast<VdsV *>(static_cast<void *>(static_cast<uint8_t *>(buf)+sizeof(_fs4hits)))->VdsV::~VdsV(); } - virtual size_t getRawByteSize() const { return sizeof(_fs4hits) + sizeof(_vdshits); } + size_t getRawByteSize() const override { return sizeof(_fs4hits) + sizeof(_vdshits); } public: DECLARE_IDENTIFIABLE_NS2(search, aggregation, HitList); - HitList * clone() const { return new HitList(*this); } + HitList * clone() const override { return new HitList(*this); } DECLARE_NBO_SERIALIZE; HitList() : _fs4hits(), @@ -63,10 +63,10 @@ public: HitList & addHit(const FS4Hit & hit, uint32_t maxHits); HitList & addHit(const VdsHit & hit, uint32_t maxHits); - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; - virtual void selectMembers(const vespalib::ObjectPredicate &predicate, - vespalib::ObjectOperation &operation); - void sort(); + void visitMembers(vespalib::ObjectVisitor &visitor) const override; + void selectMembers(const vespalib::ObjectPredicate &predicate, + vespalib::ObjectOperation &operation) override; + void sort() override; HitList & sort2() { sort(); return *this; } }; diff --git a/searchlib/src/vespa/searchlib/aggregation/hitsaggregationresult.h b/searchlib/src/vespa/searchlib/aggregation/hitsaggregationresult.h index 06ea5dc0389..11565c21ca2 100644 --- a/searchlib/src/vespa/searchlib/aggregation/hitsaggregationresult.h +++ b/searchlib/src/vespa/searchlib/aggregation/hitsaggregationresult.h @@ -22,11 +22,10 @@ public: }; private: - virtual void onPrepare(const ResultNode & result, bool useForInit); - - virtual void onAggregate(const ResultNode &result, DocId docId, HitRank rank); - virtual void onAggregate(const ResultNode &result, const document::Document & doc, HitRank rank); - virtual const ResultNode & onGetRank() const; + void onPrepare(const ResultNode & result, bool useForInit) override; + void onAggregate(const ResultNode &result, DocId docId, HitRank rank) override; + void onAggregate(const ResultNode &result, const document::Document & doc, HitRank rank) override; + const ResultNode & onGetRank() const override; SummaryClassType _summaryClass; uint32_t _maxHits; @@ -39,8 +38,8 @@ public: class SetOrdered : public vespalib::ObjectOperation, public vespalib::ObjectPredicate { private: - virtual void execute(vespalib::Identifiable &obj) { static_cast<HitsAggregationResult &>(obj)._isOrdered = true; } - virtual bool check(const vespalib::Identifiable &obj) const { return obj.getClass().inherits(HitsAggregationResult::classId); } + void execute(vespalib::Identifiable &obj) override { static_cast<HitsAggregationResult &>(obj)._isOrdered = true; } + bool check(const vespalib::Identifiable &obj) const override { return obj.getClass().inherits(HitsAggregationResult::classId); } }; DECLARE_AGGREGATIONRESULT(HitsAggregationResult); @@ -53,7 +52,7 @@ public: _bestHitRank(), _summaryGenerator(0) {} - virtual void postMerge() { _hits.postMerge(_maxHits); } + void postMerge() override { _hits.postMerge(_maxHits); } void setSummaryGenerator(SummaryGenerator & summaryGenerator) { _summaryGenerator = &summaryGenerator; } const SummaryClassType & getSummaryClass() const { return _summaryClass; } HitsAggregationResult setSummaryClass(const SummaryClassType & summaryClass) { _summaryClass = summaryClass; return *this; } @@ -63,12 +62,11 @@ public: } HitsAggregationResult & addHit(const FS4Hit &hit) { _hits.addHit(hit, _maxHits); return *this; } HitsAggregationResult & addHit(const VdsHit &hit) { _hits.addHit(hit, _maxHits); return *this; } - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; - virtual void selectMembers(const vespalib::ObjectPredicate &predicate, - vespalib::ObjectOperation &operation); + void visitMembers(vespalib::ObjectVisitor &visitor) const override; + void selectMembers(const vespalib::ObjectPredicate &predicate, vespalib::ObjectOperation &operation) override; HitsAggregationResult & sort() { _hits.sort(); return *this; } - virtual const ResultNode & getResult() const { return _hits; } - virtual ResultNode & getResult() { return _hits; } + const ResultNode & getResult() const override { return _hits; } + ResultNode & getResult() override { return _hits; } }; } diff --git a/searchlib/src/vespa/searchlib/aggregation/modifiers.h b/searchlib/src/vespa/searchlib/aggregation/modifiers.h index 048a8db43b7..86530e1b3e8 100644 --- a/searchlib/src/vespa/searchlib/aggregation/modifiers.h +++ b/searchlib/src/vespa/searchlib/aggregation/modifiers.h @@ -10,8 +10,8 @@ namespace aggregation { class Attribute2DocumentAccessor : public vespalib::ObjectOperation, public vespalib::ObjectPredicate { private: - virtual void execute(vespalib::Identifiable &obj); - virtual bool check(const vespalib::Identifiable &obj) const; + void execute(vespalib::Identifiable &obj) override; + bool check(const vespalib::Identifiable &obj) const override; }; } diff --git a/searchlib/src/vespa/searchlib/aggregation/vdshit.h b/searchlib/src/vespa/searchlib/aggregation/vdshit.h index f4f5db28eb6..93038b2c00b 100644 --- a/searchlib/src/vespa/searchlib/aggregation/vdshit.h +++ b/searchlib/src/vespa/searchlib/aggregation/vdshit.h @@ -18,8 +18,8 @@ public: VdsHit() : Hit(), _docId(), _summary() {} VdsHit(DocId docId, HitRank rank) : Hit(rank), _docId(docId), _summary() {} ~VdsHit(); - virtual VdsHit *clone() const { return new VdsHit(*this); } - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; + VdsHit *clone() const override { return new VdsHit(*this); } + void visitMembers(vespalib::ObjectVisitor &visitor) const override; const DocId & getDocId() const { return _docId; } const Summary & getSummary() const { return _summary; } VdsHit & setDocId(DocId & docId) { _docId = docId; return *this; } diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp b/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp index c4e9d9701ae..b143c33eed1 100644 --- a/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp +++ b/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp @@ -5,9 +5,6 @@ #include "i_document_weight_attribute.h" #include "iterator_pack.h" #include "predicate_attribute.h" -#include <vespa/searchlib/attribute/attributeguard.h> -#include <vespa/searchlib/attribute/attributevector.h> -#include <vespa/searchlib/attribute/iattributemanager.h> #include <vespa/searchlib/common/location.h> #include <vespa/searchlib/common/locationiterators.h> #include <vespa/searchlib/query/queryterm.h> @@ -122,20 +119,16 @@ public: { } - virtual SearchIterator::UP - createLeafSearch(const TermFieldMatchDataArray &tfmda, bool strict) const - { + SearchIterator::UP createLeafSearch(const TermFieldMatchDataArray &tfmda, bool strict) const override { assert(tfmda.size() == 1); return _search_context->createIterator(tfmda[0], strict); } - virtual void - fetchPostings(bool strict) - { + void fetchPostings(bool strict) override { _search_context->fetchPostings(strict); } - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; + void visitMembers(vespalib::ObjectVisitor &visitor) const override; }; void @@ -313,7 +306,7 @@ public: } } - SearchIterator::UP createLeafSearch(const TermFieldMatchDataArray &tfmda, bool) const + SearchIterator::UP createLeafSearch(const TermFieldMatchDataArray &tfmda, bool) const override { assert(tfmda.size() == 1); if (_terms.size() == 0) { @@ -379,8 +372,7 @@ public: } } - SearchIterator::UP createLeafSearch(const TermFieldMatchDataArray &tfmda, bool strict) const - { + SearchIterator::UP createLeafSearch(const TermFieldMatchDataArray &tfmda, bool strict) const override { assert(tfmda.size() == 1); if (_terms.size() == 0) { return SearchIterator::UP(new search::queryeval::EmptySearch()); @@ -415,8 +407,7 @@ public: setEstimate(HitEstimate(_dict_entry.posting_size, (_dict_entry.posting_size == 0))); } - SearchIterator::UP createLeafSearch(const TermFieldMatchDataArray &tfmda, bool) const - { + SearchIterator::UP createLeafSearch(const TermFieldMatchDataArray &tfmda, bool) const override { assert(tfmda.size() == 1); if (_dict_entry.posting_size == 0) { return SearchIterator::UP(new search::queryeval::EmptySearch()); @@ -424,8 +415,7 @@ public: return SearchIterator::UP(new queryeval::DocumentWeightSearchIterator(*tfmda[0], _attr, _dict_entry)); } - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const - { + void visitMembers(vespalib::ObjectVisitor &visitor) const override { search::queryeval::LeafBlueprint::visitMembers(visitor); visit(visitor, "attribute", _attrName); } @@ -494,11 +484,11 @@ public: } } - virtual void visit(NumberTerm & n) { visitTerm(n, true); } - virtual void visit(LocationTerm &n) { visitLocation(n); } - virtual void visit(PrefixTerm & n) { visitTerm(n); } + void visit(NumberTerm & n) override { visitTerm(n, true); } + void visit(LocationTerm &n) override { visitLocation(n); } + void visit(PrefixTerm & n) override { visitTerm(n); } - virtual void visit(RangeTerm &n) { + void visit(RangeTerm &n) override { const string stack = StackDumpCreator::create(n); const string term = search::queryeval::termAsString(n); search::QueryTermSimple parsed_term(term, search::QueryTermSimple::WORD); @@ -516,19 +506,19 @@ public: } } - virtual void visit(StringTerm & n) { visitTerm(n, true); } - virtual void visit(SubstringTerm & n) { + void visit(StringTerm & n) override { visitTerm(n, true); } + void visit(SubstringTerm & n) override { search::query::SimpleRegExpTerm re(vespalib::Regexp::make_from_substring(n.getTerm()), n.getView(), n.getId(), n.getWeight()); visitTerm(re); } - virtual void visit(SuffixTerm & n) { + void visit(SuffixTerm & n) override { search::query::SimpleRegExpTerm re(vespalib::Regexp::make_from_suffix(n.getTerm()), n.getView(), n.getId(), n.getWeight()); visitTerm(re); } - virtual void visit(PredicateQuery &n) { visitPredicate(n); } - virtual void visit(RegExpTerm & n) { visitTerm(n); } + void visit(PredicateQuery &n) override { visitPredicate(n); } + void visit(RegExpTerm & n) override { visitTerm(n); } template <typename WS, typename NODE> void createDirectWeightedSet(WS *bp, NODE &n) { @@ -555,7 +545,7 @@ public: setResult(std::move(result)); } - virtual void visit(search::query::WeightedSetTerm &n) { + void visit(search::query::WeightedSetTerm &n) override { bool isSingleValue = !_attr.hasMultiValue(); bool isString = (_attr.isStringType() && _attr.hasEnum()); bool isInteger = _attr.isIntegerType(); @@ -587,7 +577,7 @@ public: } } - virtual void visit(search::query::DotProduct &n) { + void visit(search::query::DotProduct &n) override { if (_dwa != nullptr) { auto *bp = new DirectWeightedSetBlueprint<queryeval::DotProductSearch>(_field, *_dwa, n.getChildren().size()); createDirectWeightedSet(bp, n); @@ -597,7 +587,7 @@ public: } } - virtual void visit(search::query::WandTerm &n) { + void visit(search::query::WandTerm &n) override { if (_dwa != nullptr) { auto *bp = new DirectWandBlueprint(_field, *_dwa, n.getTargetNumHits(), n.getScoreThreshold(), n.getThresholdBoostFactor(), diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.cpp b/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.cpp index aeccad63cf6..56289bdf584 100644 --- a/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.cpp +++ b/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.cpp @@ -101,20 +101,20 @@ public: result.foreach_truebit([&, end](uint32_t key) { if ( _map.find(_attr.getToken(key)) == end) { result.clearBit(key); }}, begin_id); } - virtual void doSeek(uint32_t docId) { + void doSeek(uint32_t docId) override { Map::const_iterator pos = _map.find(_attr.getToken(docId)); if (pos != _map.end()) { _weight = pos->second; setDocId(docId); } } - virtual void doUnpack(uint32_t docId) { + void doUnpack(uint32_t docId) override { _tfmd.reset(docId); fef::TermFieldMatchDataPosition pos; pos.setElementWeight(_weight); _tfmd.appendPosition(pos); } - virtual void visitMembers(vespalib::ObjectVisitor &) const {} + void visitMembers(vespalib::ObjectVisitor &) const override {} }; //----------------------------------------------------------------------------- diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.h b/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.h index ef3ddef9001..f30167ef2cf 100644 --- a/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.h +++ b/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.h @@ -2,10 +2,9 @@ #pragma once +#include "attributeguard.h" #include <vespa/searchlib/queryeval/blueprint.h> -#include <vespa/searchlib/attribute/attributeguard.h> #include <vespa/searchlib/queryeval/searchiterator.h> -#include <memory> #include <vector> namespace search { @@ -28,11 +27,10 @@ private: public: AttributeWeightedSetBlueprint(const queryeval::FieldSpec &field, const IAttributeVector & attr); - virtual ~AttributeWeightedSetBlueprint(); + ~AttributeWeightedSetBlueprint(); void addToken(std::unique_ptr<ISearchContext> context, int32_t weight); - virtual queryeval::SearchIterator::UP createLeafSearch(const fef::TermFieldMatchDataArray &tfmda, bool strict) const; - - virtual void fetchPostings(bool strict); + queryeval::SearchIterator::UP createLeafSearch(const fef::TermFieldMatchDataArray &tfmda, bool strict) const override; + void fetchPostings(bool strict) override; }; } // namespace search diff --git a/searchlib/src/vespa/searchlib/attribute/attributefile.h b/searchlib/src/vespa/searchlib/attribute/attributefile.h index 895b2472dfb..055424d779e 100644 --- a/searchlib/src/vespa/searchlib/attribute/attributefile.h +++ b/searchlib/src/vespa/searchlib/attribute/attributefile.h @@ -1,7 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/attribute/attributevector.h> +#include "attributevector.h" #include <vespa/searchlib/common/fileheadercontext.h> #include <vespa/fastlib/io/bufferedfile.h> @@ -33,10 +33,9 @@ public: class FixedRecord : public Record { public: - virtual size_t getValueCount() const { return _data.size(); } + size_t getValueCount() const override { return _data.size(); } private: - virtual void - setValue(const void * v, size_t len) { + void setValue(const void * v, size_t len) override { assert(len == sizeof(T)); (void) len; _data.resize(1); @@ -44,8 +43,8 @@ public: _data[0] = * static_cast<const T *>(v); } - virtual bool onWrite(AttributeFile & dest) const; - virtual bool onRead(AttributeFile & src, size_t numValues); + bool onWrite(AttributeFile & dest) const override; + bool onRead(AttributeFile & src, size_t numValues) override; std::vector<T> _data; }; @@ -53,19 +52,17 @@ public: class VariableRecord : public Record { public: - virtual size_t - getValueCount() const; + size_t getValueCount() const override; private: - virtual void setValue(const void * v, size_t len); - virtual bool onWrite(AttributeFile & dest) const; - virtual bool onRead(AttributeFile & src, size_t numValues); + void setValue(const void * v, size_t len) override; + bool onWrite(AttributeFile & dest) const override; + bool onRead(AttributeFile & src, size_t numValues) override; std::vector<char> _data; }; protected: typedef attribute::Config Config; public: AttributeFile(const vespalib::string & fileName, const Config & config); - ~AttributeFile(void); std::unique_ptr<Record> getRecord(); @@ -74,9 +71,7 @@ public: void enableDirectIO(); protected: void OpenReadOnly(); - void OpenWriteOnly(const search::common::FileHeaderContext & - fileHeaderContext, - uint32_t docIdLimit); + void OpenWriteOnly(const search::common::FileHeaderContext &fileHeaderContext, uint32_t docIdLimit); void Close(void); bool seekIdxPos(size_t idxPos); private: diff --git a/searchlib/src/vespa/searchlib/attribute/attributemanager.h b/searchlib/src/vespa/searchlib/attribute/attributemanager.h index 4bb68e2c7ba..ebdd738c968 100644 --- a/searchlib/src/vespa/searchlib/attribute/attributemanager.h +++ b/searchlib/src/vespa/searchlib/attribute/attributemanager.h @@ -1,9 +1,9 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/attribute/attributeguard.h> -#include <vespa/searchlib/attribute/iattributemanager.h> -#include <vespa/searchlib/attribute/interlock.h> +#include "attributeguard.h" +#include "iattributemanager.h" +#include "interlock.h" #include <vespa/searchlib/common/indexmetainfo.h> #include <vespa/searchcommon/attribute/config.h> #include <vespa/vespalib/stllike/hash_map.h> @@ -36,23 +36,16 @@ public: **/ const VectorHolder * getAttributeRef(const string & name) const; - // Implements IAttributeManager - virtual AttributeGuard::UP getAttribute(const string & name) const; - - // Implements IAttributeManager - virtual AttributeGuard::UP getAttributeStableEnum(const string & name) const; + AttributeGuard::UP getAttribute(const string & name) const override; + AttributeGuard::UP getAttributeStableEnum(const string & name) const override; /** * This will load attributes in the most memory economical way by loading largest first. */ bool addVector(const string & name, const Config & config); - bool add(const VectorHolder & vector); - // Implements IAttributeManager - virtual void getAttributeList(AttributeList & list) const; - - // Implements IAttributeManager - virtual attribute::IAttributeContext::UP createContext() const; + void getAttributeList(AttributeList & list) const override; + attribute::IAttributeContext::UP createContext() const override; const Snapshot & getSnapshot() const { return _snapShot; } const string & getBaseDir() const { return _baseDir; } diff --git a/searchlib/src/vespa/searchlib/attribute/attributevector.h b/searchlib/src/vespa/searchlib/attribute/attributevector.h index f313c77f581..b6251dfecc6 100644 --- a/searchlib/src/vespa/searchlib/attribute/attributevector.h +++ b/searchlib/src/vespa/searchlib/attribute/attributevector.h @@ -400,16 +400,16 @@ public: virtual const vespalib::string & getName() const override; bool hasArrayType() const { return _config.collectionType().isArray(); } - virtual bool hasEnum() const; + bool hasEnum() const override; bool hasSortedEnum() const { return _hasSortedEnum; } virtual bool hasEnum2Value() const; - virtual uint32_t getMaxValueCount() const; + uint32_t getMaxValueCount() const override; uint32_t getEnumMax() const { return _enumMax; } // Implements IAttributeVector - virtual uint32_t getNumDocs(void) const; - uint32_t getCommittedDocIdLimit(void) const { return _committedDocIdLimit; } - uint32_t & getCommittedDocIdLimitRef(void) { return _committedDocIdLimit; } + uint32_t getNumDocs() const override; + uint32_t getCommittedDocIdLimit() const { return _committedDocIdLimit; } + uint32_t & getCommittedDocIdLimitRef() { return _committedDocIdLimit; } void setCommittedDocIdLimit(uint32_t committedDocIdLimit) { _committedDocIdLimit = committedDocIdLimit; } @@ -460,15 +460,9 @@ public: * retrival are type specific. They are accessed by their proper * type. */ - /** Get number of values per document. */ - virtual uint32_t getValueCount(DocId doc) const = 0; virtual uint32_t clearDoc(DocId doc) = 0; virtual largeint_t getDefaultValue() const = 0; - virtual EnumHandle getEnum(DocId doc) const = 0; - virtual const char * getString(DocId doc, char * v, size_t sz) const = 0; - virtual largeint_t getInt(DocId doc) const = 0; - virtual double getFloat(DocId doc) const = 0; virtual void getEnumValue(const EnumHandle *v, uint32_t *e, uint32_t sz) const = 0; uint32_t getEnumValue(EnumHandle eh) const { @@ -478,22 +472,25 @@ public: } // Implements IAttributeVector - virtual uint32_t get(DocId doc, EnumHandle *v, uint32_t sz) const = 0; + virtual uint32_t get(DocId doc, EnumHandle *v, uint32_t sz) const override = 0; + virtual uint32_t get(DocId doc, const char **v, uint32_t sz) const override = 0; + virtual uint32_t get(DocId doc, largeint_t *v, uint32_t sz) const override = 0; + virtual uint32_t get(DocId doc, double *v, uint32_t sz) const override = 0; + virtual uint32_t get(DocId doc, vespalib::string *v, uint32_t sz) const = 0; - virtual uint32_t get(DocId doc, const char **v, uint32_t sz) const = 0; - virtual uint32_t get(DocId doc, largeint_t *v, uint32_t sz) const = 0; - virtual uint32_t get(DocId doc, double *v, uint32_t sz) const = 0; + // Implements IAttributeVector - virtual uint32_t get(DocId doc, WeightedEnum *v, uint32_t sz) const = 0; - virtual uint32_t get(DocId doc, WeightedString *v, uint32_t sz) const = 0; - virtual uint32_t get(DocId doc, WeightedConstChar *v, uint32_t sz) const = 0; - virtual uint32_t get(DocId doc, WeightedInt *v, uint32_t sz) const = 0; - virtual uint32_t get(DocId doc, WeightedFloat *v, uint32_t sz) const = 0; + virtual uint32_t get(DocId doc, WeightedEnum *v, uint32_t sz) const override = 0; + virtual uint32_t get(DocId doc, WeightedString *v, uint32_t sz) const override = 0; + virtual uint32_t get(DocId doc, WeightedConstChar *v, uint32_t sz) const override = 0; + virtual uint32_t get(DocId doc, WeightedInt *v, uint32_t sz) const override = 0; + virtual uint32_t get(DocId doc, WeightedFloat *v, uint32_t sz) const override = 0; + virtual int32_t getWeight(DocId doc, uint32_t idx) const; // Implements IAttributeVector - virtual bool findEnum(const char *value, EnumHandle &e) const override; + bool findEnum(const char *value, EnumHandle &e) const override; ///// Modify API virtual void onCommit() = 0; @@ -505,7 +502,7 @@ public: ////// Search API // type-safe down-cast to attribute supporting direct document weight iterators - virtual const IDocumentWeightAttribute *asDocumentWeightAttribute() const override; + const IDocumentWeightAttribute *asDocumentWeightAttribute() const override; /** - Search for equality diff --git a/searchlib/src/vespa/searchlib/attribute/attrvector.h b/searchlib/src/vespa/searchlib/attribute/attrvector.h index a13c2a98002..75ff02563f4 100644 --- a/searchlib/src/vespa/searchlib/attribute/attrvector.h +++ b/searchlib/src/vespa/searchlib/attribute/attrvector.h @@ -143,20 +143,20 @@ class StringDirectAttribute : public StringAttribute private: StringDirectAttribute(const StringDirectAttribute &); StringDirectAttribute & operator=(const StringDirectAttribute &); - virtual void onSave(IAttributeSaveTarget & saveTarget); - virtual bool onLoad(); - virtual const char * getFromEnum(EnumHandle e) const { return &_buffer[e]; } + void onSave(IAttributeSaveTarget & saveTarget) override; + bool onLoad() override; + const char * getFromEnum(EnumHandle e) const override { return &_buffer[e]; } protected: StringDirectAttribute(const vespalib::string & baseFileName, const Config & c); - virtual bool findEnum(const char * value, EnumHandle & e) const; - virtual void getEnumValue(const EnumHandle * v, uint32_t *e, uint32_t sz) const { + bool findEnum(const char * value, EnumHandle & e) const override; + void getEnumValue(const EnumHandle * v, uint32_t *e, uint32_t sz) const override { for (size_t i(0); i < sz; i++) { e[i] = v[i]; } } - virtual void onCommit(); - virtual void onUpdateStat() { } - virtual bool addDoc(DocId & ); + void onCommit() override; + void onUpdateStat() override { } + bool addDoc(DocId & ) override; protected: std::vector<char> _buffer; diff --git a/searchlib/src/vespa/searchlib/attribute/enumcomparator.h b/searchlib/src/vespa/searchlib/attribute/enumcomparator.h index 1a6dcb4c4e1..5481e967f24 100644 --- a/searchlib/src/vespa/searchlib/attribute/enumcomparator.h +++ b/searchlib/src/vespa/searchlib/attribute/enumcomparator.h @@ -43,7 +43,7 @@ public: } return 1; } - virtual bool operator() (const EnumIndex & lhs, const EnumIndex & rhs) const { + bool operator() (const EnumIndex & lhs, const EnumIndex & rhs) const override { return compare(getValue(lhs), getValue(rhs)) < 0; } }; @@ -95,8 +95,8 @@ public: return ParentType::compare(lhs, rhs); } - virtual bool - operator() (const EnumIndex & lhs, const EnumIndex & rhs) const + bool + operator() (const EnumIndex & lhs, const EnumIndex & rhs) const override { if (getUsePrefix()) return compareFoldedPrefix(getValue(lhs), diff --git a/searchlib/src/vespa/searchlib/attribute/enumstore.h b/searchlib/src/vespa/searchlib/attribute/enumstore.h index 439c787f88f..700cf00fd13 100644 --- a/searchlib/src/vespa/searchlib/attribute/enumstore.h +++ b/searchlib/src/vespa/searchlib/attribute/enumstore.h @@ -120,8 +120,7 @@ protected: } void printEntry(vespalib::asciistream & os, const Entry & e) const; - virtual void - freeUnusedEnum(Index idx, IndexSet & unused); + void freeUnusedEnum(Index idx, IndexSet & unused) override; public: EnumStoreT(uint64_t initBufferSize, bool hasPostings) @@ -132,7 +131,7 @@ public: bool getValue(Index idx, Type & value) const; Type getValue(uint32_t idx) const { return getValue(Index(datastore::EntryRef(idx))); } Type getValue(Index idx) const { return getEntry(idx).getValue(); } - virtual uint32_t getFixedSize() const { return Entry::fixedSize(); } + uint32_t getFixedSize() const override { return Entry::fixedSize(); } static uint32_t getEntrySize(Type value) @@ -172,60 +171,31 @@ public: uint64_t getBufferSize() const { return _bufferSize; } }; - virtual void - writeValues(BufferWriter &writer, - const Index *idxs, size_t count) const override; - - virtual ssize_t - deserialize(const void *src, size_t available, size_t &initSpace); - - virtual ssize_t - deserialize(const void *src, size_t available, Index &idx); - - virtual bool - foldedChange(const Index &idx1, const Index &idx2); - - virtual bool - findEnum(Type value, EnumStoreBase::EnumHandle &e) const; - - void - addEnum(Type value, Index &newIdx); - - virtual bool - findIndex(Type value, Index &idx) const; - - virtual void - freeUnusedEnums(bool movePostingidx); - - virtual void - freeUnusedEnums(const IndexVector &toRemove); - - void - reset(Builder &builder); - - virtual bool - performCompaction(uint64_t bytesNeeded); - - void - printCurrentContent(vespalib::asciistream &os) const; + void writeValues(BufferWriter &writer, const Index *idxs, size_t count) const override; + ssize_t deserialize(const void *src, size_t available, size_t &initSpace) override; + ssize_t deserialize(const void *src, size_t available, Index &idx) override; + bool foldedChange(const Index &idx1, const Index &idx2) override; + virtual bool findEnum(Type value, EnumStoreBase::EnumHandle &e) const; + void addEnum(Type value, Index &newIdx); + virtual bool findIndex(Type value, Index &idx) const; + void freeUnusedEnums(bool movePostingidx) override; + void freeUnusedEnums(const IndexVector &toRemove) override; + void reset(Builder &builder); + bool performCompaction(uint64_t bytesNeeded) override; + void printCurrentContent(vespalib::asciistream &os) const; private: template <typename Dictionary> - void - reset(Builder &builder, Dictionary &dict); + void reset(Builder &builder, Dictionary &dict); template <typename Dictionary> - void - addEnum(Type value, Index &newIdx, Dictionary &dict); + void addEnum(Type value, Index &newIdx, Dictionary &dict); template <typename Dictionary> - void - performCompaction(Dictionary &dict); + void performCompaction(Dictionary &dict); template <typename Dictionary> - void - printCurrentContent(vespalib::asciistream &os, - const Dictionary &dict) const; + void printCurrentContent(vespalib::asciistream &os, const Dictionary &dict) const; }; template <typename EntryType> diff --git a/searchlib/src/vespa/searchlib/attribute/integerbase.h b/searchlib/src/vespa/searchlib/attribute/integerbase.h index e5a9dbe1e48..401a6d7293c 100644 --- a/searchlib/src/vespa/searchlib/attribute/integerbase.h +++ b/searchlib/src/vespa/searchlib/attribute/integerbase.h @@ -88,8 +88,8 @@ protected: } static T defaultValue() { return attribute::getUndefined<T>(); } virtual bool findEnum(T v, EnumHandle & e) const = 0; - virtual largeint_t getDefaultValue() const { return defaultValue(); } - virtual bool isUndefined(DocId doc) const { return get(doc) == defaultValue(); } + largeint_t getDefaultValue() const override { return defaultValue(); } + bool isUndefined(DocId doc) const override { return get(doc) == defaultValue(); } Change _defaultValue; private: bool findEnum(const char *value, EnumHandle &e) const override; diff --git a/searchlib/src/vespa/searchlib/attribute/multistringattribute.h b/searchlib/src/vespa/searchlib/attribute/multistringattribute.h index 9bfd20e2fc7..ee4dd71ffe0 100644 --- a/searchlib/src/vespa/searchlib/attribute/multistringattribute.h +++ b/searchlib/src/vespa/searchlib/attribute/multistringattribute.h @@ -58,13 +58,12 @@ public: attribute::CollectionType::ARRAY)); ~MultiValueStringAttributeT(); - virtual void - freezeEnumDictionary(void); + void freezeEnumDictionary() override; //------------------------------------------------------------------------- // new read api //------------------------------------------------------------------------- - virtual const char * get(DocId doc) const { + const char * get(DocId doc) const override { WeightedIndexArrayRef indices(this->_mvMapping.get(doc)); if (indices.size() == 0) { return NULL; @@ -81,10 +80,10 @@ public: } return valueCount; } - virtual uint32_t get(DocId doc, vespalib::string * v, uint32_t sz) const { + uint32_t get(DocId doc, vespalib::string * v, uint32_t sz) const override { return getHelper(doc, v, sz); } - virtual uint32_t get(DocId doc, const char ** v, uint32_t sz) const { + uint32_t get(DocId doc, const char ** v, uint32_t sz) const override { return getHelper(doc, v, sz); } @@ -98,10 +97,10 @@ public: } return valueCount; } - virtual uint32_t get(DocId doc, WeightedString * v, uint32_t sz) const { + uint32_t get(DocId doc, WeightedString * v, uint32_t sz) const override { return getWeightedHelper(doc, v, sz); } - virtual uint32_t get(DocId doc, WeightedConstChar * v, uint32_t sz) const { + uint32_t get(DocId doc, WeightedConstChar * v, uint32_t sz) const override { return getWeightedHelper(doc, v, sz); } diff --git a/searchlib/src/vespa/searchlib/attribute/not_implemented_attribute.h b/searchlib/src/vespa/searchlib/attribute/not_implemented_attribute.h index a3747bcb954..a21b0414c5a 100644 --- a/searchlib/src/vespa/searchlib/attribute/not_implemented_attribute.h +++ b/searchlib/src/vespa/searchlib/attribute/not_implemented_attribute.h @@ -20,7 +20,7 @@ struct NotImplementedAttribute : AttributeVector { uint32_t get(DocId, vespalib::string *, uint32_t) const override; uint32_t get(DocId, const char **, uint32_t) const override; uint32_t get(DocId, EnumHandle *, uint32_t) const override; - uint32_t get(DocId, WeightedInt *, uint32_t) const; + uint32_t get(DocId, WeightedInt *, uint32_t) const override; uint32_t get(DocId, WeightedFloat *, uint32_t) const override; uint32_t get(DocId, WeightedString *, uint32_t) const override; uint32_t get(DocId, WeightedConstChar *, uint32_t) const override; diff --git a/searchlib/src/vespa/searchlib/attribute/postingstore.h b/searchlib/src/vespa/searchlib/attribute/postingstore.h index 96ab0488ea4..9aae723db73 100644 --- a/searchlib/src/vespa/searchlib/attribute/postingstore.h +++ b/searchlib/src/vespa/searchlib/attribute/postingstore.h @@ -50,17 +50,10 @@ protected: static constexpr uint32_t BUFFERTYPE_BITVECTOR = 9u; public: - PostingStoreBase2(EnumPostingTree &dict, Status &status, - const Config &config); - - virtual - ~PostingStoreBase2(); - - bool - resizeBitVectors(uint32_t newSize, uint32_t newCapacity); - - virtual bool - removeSparseBitVectors() = 0; + PostingStoreBase2(EnumPostingTree &dict, Status &status, const Config &config); + virtual ~PostingStoreBase2(); + bool resizeBitVectors(uint32_t newSize, uint32_t newCapacity); + virtual bool removeSparseBitVectors() = 0; }; template <typename DataT> @@ -104,39 +97,16 @@ public: PostingStore(EnumPostingTree &dict, Status &status, const Config &config); - - virtual ~PostingStore(); - virtual bool - removeSparseBitVectors(); - - static bool - isBitVector(uint32_t typeId) - { - return typeId == BUFFERTYPE_BITVECTOR; - } - - static bool - isBTree(uint32_t typeId) - { - return typeId == BUFFERTYPE_BTREE; - } - - bool - isBTree(RefType ref) const - { - return isBTree(getTypeId(ref)); - } + bool removeSparseBitVectors() override; + static bool isBitVector(uint32_t typeId) { return typeId == BUFFERTYPE_BITVECTOR; } + static bool isBTree(uint32_t typeId) { return typeId == BUFFERTYPE_BTREE; } + bool isBTree(RefType ref) const { return isBTree(getTypeId(ref)); } - void - applyNew(EntryRef &ref, - AddIter a, - AddIter ae); + void applyNew(EntryRef &ref, AddIter a, AddIter ae); - BitVectorRefPair - allocBitVector(void) - { + BitVectorRefPair allocBitVector() { return _store.template freeListAllocator<BitVectorEntry, btree::DefaultReclaimer<BitVectorEntry> >(BUFFERTYPE_BITVECTOR).alloc(); } @@ -144,26 +114,12 @@ public: /* * Recreate btree from bitvector. Weight information is not recreated. */ - void - makeDegradedTree(EntryRef &ref, const BitVector &bv); + void makeDegradedTree(EntryRef &ref, const BitVector &bv); + void dropBitVector(EntryRef &ref); + void makeBitVector(EntryRef &ref); - void - dropBitVector(EntryRef &ref); - - void - makeBitVector(EntryRef &ref); - - void - applyNewBitVector(EntryRef &ref, - AddIter aOrg, - AddIter ae); - - void - apply(BitVector &bv, - AddIter a, - AddIter ae, - RemoveIter r, - RemoveIter re); + void applyNewBitVector(EntryRef &ref, AddIter aOrg, AddIter ae); + void apply(BitVector &bv, AddIter a, AddIter ae, RemoveIter r, RemoveIter re); /** * Apply multiple changes at once. @@ -171,18 +127,9 @@ public: * additions and removals should be sorted on key without duplicates. * Overlap between additions and removals indicates updates. */ - void - apply(EntryRef &ref, - AddIter a, - AddIter ae, - RemoveIter r, - RemoveIter re); - - void - clear(const EntryRef ref); - - size_t - size(const EntryRef ref) const { + void apply(EntryRef &ref, AddIter a, AddIter ae, RemoveIter r, RemoveIter re); + void clear(const EntryRef ref); + size_t size(const EntryRef ref) const { if (!ref.valid()) return 0; RefType iRef(ref); @@ -194,8 +141,7 @@ public: return clusterSize; } - size_t - frozenSize(const EntryRef ref) const { + size_t frozenSize(const EntryRef ref) const { if (!ref.valid()) return 0; RefType iRef(ref); @@ -207,45 +153,30 @@ public: return clusterSize; } - Iterator - begin(const EntryRef ref) const; - - ConstIterator - beginFrozen(const EntryRef ref) const; - - void - beginFrozen(const EntryRef ref, std::vector<ConstIterator> &where) const; + Iterator begin(const EntryRef ref) const; + ConstIterator beginFrozen(const EntryRef ref) const; + void beginFrozen(const EntryRef ref, std::vector<ConstIterator> &where) const; template <typename FunctionType> - VESPA_DLL_LOCAL void - foreach_frozen_key(EntryRef ref, FunctionType func) const; + VESPA_DLL_LOCAL void foreach_frozen_key(EntryRef ref, FunctionType func) const; template <typename FunctionType> - VESPA_DLL_LOCAL void - foreach_frozen(EntryRef ref, FunctionType func) const; + VESPA_DLL_LOCAL void foreach_frozen(EntryRef ref, FunctionType func) const; - AggregatedType - getAggregated(const EntryRef ref) const; + AggregatedType getAggregated(const EntryRef ref) const; - const BitVectorEntry * - getBitVectorEntry(RefType ref) const - { + const BitVectorEntry *getBitVectorEntry(RefType ref) const { return _store.template getBufferEntry<BitVectorEntry>(ref.bufferId(), ref.offset()); } - BitVectorEntry * - getWBitVectorEntry(RefType ref) - { + BitVectorEntry *getWBitVectorEntry(RefType ref) { return _store.template getBufferEntry<BitVectorEntry>(ref.bufferId(), ref.offset()); } - static inline DataT - bitVectorWeight(); - - MemoryUsage - getMemoryUsage() const; + static inline DataT bitVectorWeight(); + MemoryUsage getMemoryUsage() const; private: size_t internalSize(uint32_t typeId, const RefType & iRef) const; @@ -350,9 +281,6 @@ PostingStore<DataT>::foreach_frozen(EntryRef ref, FunctionType func) const } } - - } // namespace attribute } // namespace search - diff --git a/searchlib/src/vespa/searchlib/attribute/predicate_attribute.h b/searchlib/src/vespa/searchlib/attribute/predicate_attribute.h index c5af5893305..7779119cc6c 100644 --- a/searchlib/src/vespa/searchlib/attribute/predicate_attribute.h +++ b/searchlib/src/vespa/searchlib/attribute/predicate_attribute.h @@ -14,8 +14,8 @@ struct AttributeVectorDocIdLimitProvider : public predicate::DocIdLimitProvider AttributeVectorDocIdLimitProvider(const AttributeVector &attribute_vector) : _attribute_vector(attribute_vector) {} - virtual uint32_t getDocIdLimit() const { return _attribute_vector.getNumDocs(); }; - virtual uint32_t getCommittedDocIdLimit() const { + uint32_t getDocIdLimit() const override { return _attribute_vector.getNumDocs(); }; + uint32_t getCommittedDocIdLimit() const override { return _attribute_vector.getCommittedDocIdLimit(); } private: diff --git a/searchlib/src/vespa/searchlib/attribute/sourceselector.h b/searchlib/src/vespa/searchlib/attribute/sourceselector.h index 8219a0903b3..cdbf0323e5d 100644 --- a/searchlib/src/vespa/searchlib/attribute/sourceselector.h +++ b/searchlib/src/vespa/searchlib/attribute/sourceselector.h @@ -76,9 +76,8 @@ public: SaveInfo::UP extractSaveInfo(const vespalib::string & baseFileName); static LoadInfo::UP extractLoadInfo(const vespalib::string & baseFileName); - // Inherit doc from ISourceSelector - virtual void setSource(uint32_t docId, queryeval::Source source) = 0; - virtual std::unique_ptr<queryeval::sourceselector::Iterator> createIterator() const = 0; + void setSource(uint32_t docId, queryeval::Source source) override = 0; + std::unique_ptr<queryeval::sourceselector::Iterator> createIterator() const override = 0; }; } // namespace search diff --git a/searchlib/src/vespa/searchlib/attribute/stringbase.h b/searchlib/src/vespa/searchlib/attribute/stringbase.h index ea095341578..c1ff0134f36 100644 --- a/searchlib/src/vespa/searchlib/attribute/stringbase.h +++ b/searchlib/src/vespa/searchlib/attribute/stringbase.h @@ -42,19 +42,18 @@ public: return AttributeVector::update(_changes, doc, StringChangeData(v)); } bool apply(DocId doc, const ArithmeticValueUpdate & op); - virtual bool applyWeight(DocId doc, const FieldValue & fv, const ArithmeticValueUpdate & wAdjust); - virtual bool findEnum(const char * value, EnumHandle & e) const = 0; - virtual uint32_t get(DocId doc, largeint_t * v, uint32_t sz) const; - virtual uint32_t get(DocId doc, double * v, uint32_t sz) const; - virtual uint32_t get(DocId doc, WeightedInt * v, uint32_t sz) const; - virtual uint32_t get(DocId doc, WeightedFloat * v, uint32_t sz) const; - virtual const char *get(DocId doc) const = 0; - virtual uint32_t clearDoc(DocId doc); - virtual largeint_t getDefaultValue() const { return 0; } + bool applyWeight(DocId doc, const FieldValue & fv, const ArithmeticValueUpdate & wAdjust) override; + bool findEnum(const char * value, EnumHandle & e) const override = 0; + uint32_t get(DocId doc, largeint_t * v, uint32_t sz) const override; + uint32_t get(DocId doc, double * v, uint32_t sz) const override; + uint32_t get(DocId doc, WeightedInt * v, uint32_t sz) const override; + uint32_t get(DocId doc, WeightedFloat * v, uint32_t sz) const override; + uint32_t clearDoc(DocId doc) override; + largeint_t getDefaultValue() const override { return 0; } static size_t countZero(const char * bt, size_t sz); static void generateOffsets(const char * bt, size_t sz, OffsetVector & offsets); virtual const char * getFromEnum(EnumHandle e) const = 0; - + virtual const char *get(DocId doc) const = 0; protected: StringAttribute(const vespalib::string & name); StringAttribute(const vespalib::string & name, const Config & c); @@ -64,12 +63,11 @@ protected: typedef StringEntryType EnumEntryType; ChangeVector _changes; Change _defaultValue; - virtual bool onLoad(); + bool onLoad() override; bool onLoadEnumerated(ReaderBase &attrReader); - virtual bool - onAddDoc(DocId doc); + virtual bool onAddDoc(DocId doc); virtual MemoryUsage getChangeVectorMemoryUsage() const override; private: diff --git a/searchlib/src/vespa/searchlib/bitcompression/compression.h b/searchlib/src/vespa/searchlib/bitcompression/compression.h index 7975c2724f9..8ffd4912b46 100644 --- a/searchlib/src/vespa/searchlib/bitcompression/compression.h +++ b/searchlib/src/vespa/searchlib/bitcompression/compression.h @@ -1231,94 +1231,55 @@ public: * Check if the chunk referenced by the decode context was the * last chunk in the file (e.g. _valE > _realValE) */ - virtual bool - lastChunk(void) const - { - return _valE > _realValE; - } + bool lastChunk() const override { return _valE > _realValE; } /** * Check if we're at the end of the current chunk (e.g. _valI >= _valE) */ - virtual bool - endOfChunk(void) const - { - return _valI >= _valE; - } + bool endOfChunk() const override { return _valI >= _valE; } /** * Get remaining units in buffer (e.g. _realValE - _valI) */ - virtual int32_t - remainingUnits(void) const - { - return _realValE - _valI; - } + int32_t remainingUnits() const override { return _realValE - _valI; } /** * Get unit ptr (e.g. _valI) from decode context. */ - virtual const void * - getUnitPtr(void) const - { - return _valI; - } + const void *getUnitPtr() const override { return _valI; } - virtual void - afterRead(const void *start, - size_t bufferUnits, - uint64_t bufferEndFilePos, - bool isMore) - { + void afterRead(const void *start, size_t bufferUnits, uint64_t bufferEndFilePos, bool isMore) override { _valI = static_cast<const uint64_t *>(start); setEnd(bufferUnits, isMore); - _fileReadBias = (bufferEndFilePos - - reinterpret_cast<unsigned long>(_realValE + 1)) << 3; + _fileReadBias = (bufferEndFilePos - reinterpret_cast<unsigned long>(_realValE + 1)) << 3; } - virtual uint64_t - getBitPos(int bitOffset, - uint64_t bufferEndFilePos) const - { + uint64_t getBitPos(int bitOffset, uint64_t bufferEndFilePos) const override { int intOffset = _realValE - _valI; if (bitOffset == -1) bitOffset = -64 - _preRead; - return (bufferEndFilePos << 3) - - (static_cast<uint64_t>(intOffset) << 6) + bitOffset; + return (bufferEndFilePos << 3) - (static_cast<uint64_t>(intOffset) << 6) + bitOffset; } - uint64_t - getReadOffset(void) const - { - return _fileReadBias + - (reinterpret_cast<unsigned long>(_valI) << 3) - _preRead; + uint64_t getReadOffset() const { + return _fileReadBias + (reinterpret_cast<unsigned long>(_valI) << 3) - _preRead; } - void - defineReadOffset(uint64_t readOffset) - { + void defineReadOffset(uint64_t readOffset) { _fileReadBias = readOffset - (reinterpret_cast<unsigned long>(_valI) << 3) + _preRead; } - virtual uint64_t - getBitPosV(void) const - { - return getReadOffset(); - } + uint64_t getBitPosV() const override { return getReadOffset(); } - virtual void - adjUnitPtr(int newRemainingUnits) - { + void adjUnitPtr(int newRemainingUnits) override { _valI = _realValE - newRemainingUnits; } - virtual void - emptyBuffer(uint64_t newBitPosition) - { + void emptyBuffer(uint64_t newBitPosition) override { _fileReadBias = newBitPosition; _valI = NULL; _valE = NULL; @@ -1326,20 +1287,14 @@ public: _preRead = 0; } - virtual uint32_t - getUnitByteSize(void) const - { - return sizeof(uint64_t); - } + uint32_t getUnitByteSize() const override { return sizeof(uint64_t); } /** * Set the end of the buffer * @param unitCount Number of bytes in buffer * @param moreData Set if there is more data available */ - void - setEnd(unsigned int unitCount, bool moreData) - { + void setEnd(unsigned int unitCount, bool moreData) { _valE = _realValE = _valI + unitCount; if (moreData) _valE -= END_BUFFER_SAFETY; @@ -1347,27 +1302,18 @@ public: _valE += END_BUFFER_SAFETY; } - const uint64_t * - getCompr(void) const - { + const uint64_t *getCompr(void) const { return (_preRead == 0) ? (_valI - 1) : (_valI - 2); } - int - getBitOffset(void) const - { + int getBitOffset(void) const { return (_preRead == 0) ? 0 : 64 - _preRead; } - virtual void - checkPointWrite(vespalib::nbostream &out); - - virtual void - checkPointRead(vespalib::nbostream &in); + void checkPointWrite(vespalib::nbostream &out) override; + void checkPointRead(vespalib::nbostream &in) override; - static int64_t - convertToSigned(uint64_t val) - { + static int64_t convertToSigned(uint64_t val) { if ((val & 1) != 0) return - (val >> 1) - 1; else @@ -1478,9 +1424,7 @@ public: val |= (cacheInt << preRead); }; - virtual void - skipBits(int bits) - { + void skipBits(int bits) override { while (bits >= 64) { _val = 0; ReadBits(64, _val, _cacheInt, _preRead, _valI); @@ -1498,9 +1442,7 @@ public: /** * Setup for bitwise reading. */ - virtual void - setupBits(int bitOffset) - { + void setupBits(int bitOffset) override { unsigned int length; UC64_SETUPBITS(bitOffset, _val, _valI, _preRead, _cacheInt, EC); } @@ -1689,9 +1631,7 @@ public: virtual void getParams(PostingListParams ¶ms) const; - virtual void - skipBits(int bits) - { + void skipBits(int bits) override { readComprBufferIfNeeded(); while (bits >= 64) { _val = 0; @@ -1798,9 +1738,7 @@ public: _writeContext->writeComprBuffer(true); } - virtual void - padBits(uint32_t length) - { + void padBits(uint32_t length) override { while (length > 64) { writeBits(0, 64); length -= 64; diff --git a/searchlib/src/vespa/searchlib/bitcompression/countcompression.h b/searchlib/src/vespa/searchlib/bitcompression/countcompression.h index 3dfb16b6250..c3961f7fcbd 100644 --- a/searchlib/src/vespa/searchlib/bitcompression/countcompression.h +++ b/searchlib/src/vespa/searchlib/bitcompression/countcompression.h @@ -1,6 +1,4 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -// Copyright (C) 2002-2003 Fast Search & Transfer ASA -// Copyright (C) 2003 Overture Services Norway AS #pragma once @@ -35,26 +33,16 @@ public: { } - virtual void - checkPointWrite(vespalib::nbostream &out); + void checkPointWrite(vespalib::nbostream &out) override; + void checkPointRead(vespalib::nbostream &in) override; + void readCounts(PostingListCounts &counts); + void readWordNum(uint64_t &wordNum); - virtual void - checkPointRead(vespalib::nbostream &in); - - void - readCounts(PostingListCounts &counts); - - void - readWordNum(uint64_t &wordNum); - - static uint64_t - noWordNum(void) - { + static uint64_t noWordNum() { return std::numeric_limits<uint64_t>::max(); } - void - copyParams(const PostingListCountFileDecodeContext &rhs); + void copyParams(const PostingListCountFileDecodeContext &rhs); }; @@ -79,31 +67,18 @@ public: { } - virtual void - checkPointWrite(vespalib::nbostream &out); - - virtual void - checkPointRead(vespalib::nbostream &in); - - void - writeCounts(const PostingListCounts &counts); + void checkPointWrite(vespalib::nbostream &out) override; + void checkPointRead(vespalib::nbostream &in) override; + void writeCounts(const PostingListCounts &counts); + void writeWordNum(uint64_t wordNum); - void - writeWordNum(uint64_t wordNum); - - static uint64_t - noWordNum(void) - { + static uint64_t noWordNum(void) { return std::numeric_limits<uint64_t>::max(); } - void - copyParams(const PostingListCountFileEncodeContext &rhs); + void copyParams(const PostingListCountFileEncodeContext &rhs); }; - } // namespace bitcompression } // namespace search - - diff --git a/searchlib/src/vespa/searchlib/bitcompression/posocccompression.h b/searchlib/src/vespa/searchlib/bitcompression/posocccompression.h index ed9329bbc63..acc0e9f94ce 100644 --- a/searchlib/src/vespa/searchlib/bitcompression/posocccompression.h +++ b/searchlib/src/vespa/searchlib/bitcompression/posocccompression.h @@ -92,30 +92,15 @@ public: CollectionType _collectionType; vespalib::string _name; - PosOccFieldParams(void); - - bool - operator==(const PosOccFieldParams &rhs) const; - - static vespalib::string - getParamsPrefix(uint32_t idx); - - void - getParams(PostingListParams ¶ms, uint32_t idx) const; - - void - setParams(const PostingListParams ¶ms, uint32_t idx); - - void - setSchemaParams(const Schema &schema, uint32_t fieldId); - - void - readHeader(const vespalib::GenericHeader &header, - const vespalib::string &prefix); - - void - writeHeader(vespalib::GenericHeader &header, - const vespalib::string &prefix) const; + PosOccFieldParams(); + + bool operator==(const PosOccFieldParams &rhs) const; + static vespalib::string getParamsPrefix(uint32_t idx); + void getParams(PostingListParams ¶ms, uint32_t idx) const; + void setParams(const PostingListParams ¶ms, uint32_t idx); + void setSchemaParams(const Schema &schema, uint32_t fieldId); + void readHeader(const vespalib::GenericHeader &header, const vespalib::string &prefix); + void writeHeader(vespalib::GenericHeader &header, const vespalib::string &prefix) const; }; @@ -132,58 +117,29 @@ public: typedef index::PostingListParams PostingListParams; typedef index::Schema Schema; - PosOccFieldsParams(void); - + PosOccFieldsParams(); PosOccFieldsParams(const PosOccFieldsParams &rhs); - PosOccFieldsParams & - operator=(const PosOccFieldsParams &rhs); - - bool - operator==(const PosOccFieldsParams &rhs) const; + PosOccFieldsParams &operator=(const PosOccFieldsParams &rhs); + bool operator==(const PosOccFieldsParams &rhs) const; - void - cacheParamsRef(void) - { + void cacheParamsRef() { _numFields = _params.size(); _fieldParams = _params.empty() ? NULL : &_params[0]; } - void - assertCachedParamsRef(void) const - { + void assertCachedParamsRef() const { assert(_numFields == _params.size()); assert(_fieldParams == (_params.empty() ? NULL : &_params[0])); } - uint32_t - getNumFields(void) const - { - return _numFields; - } - - const PosOccFieldParams * - getFieldParams(void) const - { - return _fieldParams; - } - - void - getParams(PostingListParams ¶ms) const; - - void - setParams(const PostingListParams ¶ms); - - void - setSchemaParams(const Schema &schema, const uint32_t indexId); - - void - readHeader(const vespalib::GenericHeader &header, - const vespalib::string &prefix); - - void - writeHeader(vespalib::GenericHeader &header, - const vespalib::string &prefix) const; + uint32_t getNumFields() const { return _numFields; } + const PosOccFieldParams *getFieldParams(void) const { return _fieldParams; } + void getParams(PostingListParams ¶ms) const; + void setParams(const PostingListParams ¶ms); + void setSchemaParams(const Schema &schema, const uint32_t indexId); + void readHeader(const vespalib::GenericHeader &header, const vespalib::string &prefix); + void writeHeader(vespalib::GenericHeader &header, const vespalib::string &prefix) const; }; template <bool bigEndian> @@ -238,34 +194,13 @@ public: return *this; } - virtual void - readHeader(const vespalib::GenericHeader &header, - const vespalib::string &prefix); - - virtual const vespalib::string & - getIdentifier(void) const; - - virtual void - readFeatures(search::index::DocIdAndFeatures &features); - - virtual void - skipFeatures(unsigned int count); - - virtual void - unpackFeatures(const search::fef::TermFieldMatchDataArray &matchData, - uint32_t docId); - - /* - * Set parameters. - */ - virtual void - setParams(const PostingListParams ¶ms); - - /* - * Get current parameters. - */ - virtual void - getParams(PostingListParams ¶ms) const; + void readHeader(const vespalib::GenericHeader &header, const vespalib::string &prefix) override; + const vespalib::string &getIdentifier(void) const override; + void readFeatures(search::index::DocIdAndFeatures &features) override; + void skipFeatures(unsigned int count) override; + void unpackFeatures(const search::fef::TermFieldMatchDataArray &matchData, uint32_t docId) override; + void setParams(const PostingListParams ¶ms) override; + void getParams(PostingListParams ¶ms) const override; }; @@ -316,11 +251,8 @@ public: return *this; } - virtual void - readFeatures(search::index::DocIdAndFeatures &features); - - virtual void - getParams(PostingListParams ¶ms) const; + void readFeatures(search::index::DocIdAndFeatures &features) override; + void getParams(PostingListParams ¶ms) const override; }; @@ -356,31 +288,12 @@ public: return *this; } - virtual void - readHeader(const vespalib::GenericHeader &header, - const vespalib::string &prefix); - - virtual void - writeHeader(vespalib::GenericHeader &header, - const vespalib::string &prefix) const; - - virtual const vespalib::string & - getIdentifier(void) const; - - virtual void - writeFeatures(const DocIdAndFeatures &features); - - /* - * Set parameters. - */ - virtual void - setParams(const PostingListParams ¶ms); - - /* - * Get current parameters. - */ - virtual void - getParams(PostingListParams ¶ms) const; + void readHeader(const vespalib::GenericHeader &header, const vespalib::string &prefix) override; + void writeHeader(vespalib::GenericHeader &header, const vespalib::string &prefix) const override; + const vespalib::string &getIdentifier(void) const override; + void writeFeatures(const DocIdAndFeatures &features) override; + void setParams(const PostingListParams ¶ms) override; + void getParams(PostingListParams ¶ms) const override; }; @@ -433,34 +346,13 @@ public: return *this; } - virtual void - readHeader(const vespalib::GenericHeader &header, - const vespalib::string &prefix); - - virtual const vespalib::string & - getIdentifier(void) const; - - virtual void - readFeatures(search::index::DocIdAndFeatures &features); - - virtual void - skipFeatures(unsigned int count); - - virtual void - unpackFeatures(const search::fef::TermFieldMatchDataArray &matchData, - uint32_t docId); - - /* - * Set parameters. - */ - virtual void - setParams(const PostingListParams ¶ms); - - /* - * Get current parameters. - */ - virtual void - getParams(PostingListParams ¶ms) const; + void readHeader(const vespalib::GenericHeader &header, const vespalib::string &prefix) override; + const vespalib::string &getIdentifier(void) const override; + void readFeatures(search::index::DocIdAndFeatures &features) override; + void skipFeatures(unsigned int count) override; + void unpackFeatures(const search::fef::TermFieldMatchDataArray &matchData, uint32_t docId) override; + void setParams(const PostingListParams ¶ms) override; + void getParams(PostingListParams ¶ms) const override; }; @@ -512,11 +404,8 @@ public: return *this; } - virtual void - readFeatures(search::index::DocIdAndFeatures &features); - - virtual void - getParams(PostingListParams ¶ms) const; + void readFeatures(search::index::DocIdAndFeatures &features) override; + void getParams(PostingListParams ¶ms) const override; }; @@ -550,41 +439,18 @@ public: return *this; } - virtual void - readHeader(const vespalib::GenericHeader &header, - const vespalib::string &prefix); - - virtual void - writeHeader(vespalib::GenericHeader &header, - const vespalib::string &prefix) const; + void readHeader(const vespalib::GenericHeader &header, const vespalib::string &prefix) override; + void writeHeader(vespalib::GenericHeader &header, const vespalib::string &prefix) const override; + const vespalib::string &getIdentifier(void) const override; + void writeFeatures(const DocIdAndFeatures &features) override; + void setParams(const PostingListParams ¶ms) override; + void getParams(PostingListParams ¶ms) const override; - virtual const vespalib::string & - getIdentifier(void) const; - - virtual void - writeFeatures(const DocIdAndFeatures &features); - - /* - * Set parameters. - */ - virtual void - setParams(const PostingListParams ¶ms); - - /* - * Get current parameters. - */ - virtual void - getParams(PostingListParams ¶ms) const; - - static uint32_t - calcElementLenK(uint32_t avgElementLen) - { + static uint32_t calcElementLenK(uint32_t avgElementLen) { return (avgElementLen < 4) ? 1u : (asmlog2(avgElementLen)); } - static uint32_t - calcWordPosK(uint32_t numPositions, uint32_t elementLen) - { + static uint32_t calcWordPosK(uint32_t numPositions, uint32_t elementLen) { uint32_t avgDelta = elementLen / (numPositions + 1); uint32_t wordPosK = (avgDelta < 4) ? 1 : (asmlog2(avgDelta)); return wordPosK; @@ -613,4 +479,3 @@ extern template class EGPosOccEncodeContext<false>; } // namespace bitcompression } // namespace search - diff --git a/searchlib/src/vespa/searchlib/common/condensedbitvectors.cpp b/searchlib/src/vespa/searchlib/common/condensedbitvectors.cpp index 6a6be19878b..5b5db982efe 100644 --- a/searchlib/src/vespa/searchlib/common/condensedbitvectors.cpp +++ b/searchlib/src/vespa/searchlib/common/condensedbitvectors.cpp @@ -75,8 +75,8 @@ private: size_t getKeyCapacity() const override { return sizeof(T)*8; } size_t getCapacity() const override { return _v.capacity(); } - size_t getSize() const { return _v.size(); } - void adjustDocIdLimit(uint32_t docId); + size_t getSize() const override { return _v.size(); } + void adjustDocIdLimit(uint32_t docId) override; attribute::RcuVectorBase<T> _v; }; diff --git a/searchlib/src/vespa/searchlib/common/locationiterators.cpp b/searchlib/src/vespa/searchlib/common/locationiterators.cpp index fa3b4aef54e..0e99e574c76 100644 --- a/searchlib/src/vespa/searchlib/common/locationiterators.cpp +++ b/searchlib/src/vespa/searchlib/common/locationiterators.cpp @@ -1,11 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/fastos/fastos.h> -#include <vespa/vespalib/geo/zcurve.h> - -#include <vespa/searchlib/bitcompression/compression.h> - #include "locationiterators.h" +#include <vespa/searchlib/bitcompression/compression.h> #include <vespa/searchlib/attribute/attributevector.h> using namespace search::common; @@ -19,14 +15,12 @@ private: const Location & _location; std::vector<search::AttributeVector::largeint_t> _pos; - virtual void doSeek(uint32_t docId); - virtual void doUnpack(uint32_t docId); + void doSeek(uint32_t docId) override; + void doUnpack(uint32_t docId) override; public: - FastS_2DZLocationIterator(unsigned int numDocs, - bool strict, - const Location & location); + FastS_2DZLocationIterator(unsigned int numDocs, bool strict, const Location & location); - virtual ~FastS_2DZLocationIterator(void); + ~FastS_2DZLocationIterator(); }; @@ -45,9 +39,7 @@ FastS_2DZLocationIterator(unsigned int numDocs, }; -FastS_2DZLocationIterator::~FastS_2DZLocationIterator(void) -{ -}; +FastS_2DZLocationIterator::~FastS_2DZLocationIterator() {} void diff --git a/searchlib/src/vespa/searchlib/common/serialnumfileheadercontext.h b/searchlib/src/vespa/searchlib/common/serialnumfileheadercontext.h index 24969193347..d116d57dfa8 100644 --- a/searchlib/src/vespa/searchlib/common/serialnumfileheadercontext.h +++ b/searchlib/src/vespa/searchlib/common/serialnumfileheadercontext.h @@ -4,11 +4,9 @@ #include "fileheadercontext.h" #include "serialnum.h" -namespace search -{ +namespace search { -namespace common -{ +namespace common { class SerialNumFileHeaderContext : public FileHeaderContext { @@ -20,9 +18,7 @@ public: parentFileHeaderContext, SerialNum serialNum); - virtual void - addTags(vespalib::GenericHeader &header, - const vespalib::string &name) const; + void addTags(vespalib::GenericHeader &header, const vespalib::string &name) const override; }; } // namespace common diff --git a/searchlib/src/vespa/searchlib/diskindex/diskindex.cpp b/searchlib/src/vespa/searchlib/diskindex/diskindex.cpp index 9bc5f473e27..6a2d441396d 100644 --- a/searchlib/src/vespa/searchlib/diskindex/diskindex.cpp +++ b/searchlib/src/vespa/searchlib/diskindex/diskindex.cpp @@ -392,8 +392,7 @@ public: } template <class TermNode> - void - visitTerm(TermNode &n) + void visitTerm(TermNode &n) { const vespalib::string termStr = termAsString(n); const DiskIndex::LookupResult & lookupRes = _cache.lookup(termStr, _fieldId); @@ -406,18 +405,18 @@ public: } } - virtual void visit(NumberTerm &n) { + void visit(NumberTerm &n) override { handleNumberTermAsText(n); } - virtual void visit(LocationTerm &n) { visitTerm(n); } - virtual void visit(PrefixTerm &n) { visitTerm(n); } - virtual void visit(RangeTerm &n) { visitTerm(n); } - virtual void visit(StringTerm &n) { visitTerm(n); } - virtual void visit(SubstringTerm &n) { visitTerm(n); } - virtual void visit(SuffixTerm &n) { visitTerm(n); } - virtual void visit(RegExpTerm &n) { visitTerm(n); } - virtual void visit(PredicateQuery &) { } + void visit(LocationTerm &n) override { visitTerm(n); } + void visit(PrefixTerm &n) override { visitTerm(n); } + void visit(RangeTerm &n) override { visitTerm(n); } + void visit(StringTerm &n) override { visitTerm(n); } + void visit(SubstringTerm &n) override { visitTerm(n); } + void visit(SuffixTerm &n) override { visitTerm(n); } + void visit(RegExpTerm &n) override { visitTerm(n); } + void visit(PredicateQuery &) override { } }; diff --git a/searchlib/src/vespa/searchlib/diskindex/diskindex.h b/searchlib/src/vespa/searchlib/diskindex/diskindex.h index 552efe35c51..9767aa59eda 100644 --- a/searchlib/src/vespa/searchlib/diskindex/diskindex.h +++ b/searchlib/src/vespa/searchlib/diskindex/diskindex.h @@ -145,16 +145,15 @@ public: BitVector::UP readBitVector(const LookupResult &lookupRes) const; - // Inherit doc from Searchable - virtual queryeval::Blueprint::UP + queryeval::Blueprint::UP createBlueprint(const queryeval::IRequestContext & requestContext, const queryeval::FieldSpec &field, - const query::Node &term); + const query::Node &term) override; - virtual queryeval::Blueprint::UP + queryeval::Blueprint::UP createBlueprint(const queryeval::IRequestContext & requestContext, const queryeval::FieldSpecList &fields, - const query::Node &term); + const query::Node &term) override; /** * Get the size on disk of this index. @@ -162,23 +161,9 @@ public: */ uint64_t getSize() const { return _size; } - const index::Schema & - getSchema(void) const - { - return _schema; - } - - const vespalib::string & - getIndexDir(void) const - { - return _indexDir; - } - - const TuneFileSearch & - getTuneFileSearch(void) const - { - return _tuneFileSearch; - } + const index::Schema &getSchema() const { return _schema; } + const vespalib::string &getIndexDir() const { return _indexDir; } + const TuneFileSearch &getTuneFileSearch() const { return _tuneFileSearch; } /** * Needed for the Cache::BackingStore interface. diff --git a/searchlib/src/vespa/searchlib/diskindex/disktermblueprint.h b/searchlib/src/vespa/searchlib/diskindex/disktermblueprint.h index f3fdca2617a..d2b6d25540b 100644 --- a/searchlib/src/vespa/searchlib/diskindex/disktermblueprint.h +++ b/searchlib/src/vespa/searchlib/diskindex/disktermblueprint.h @@ -21,7 +21,7 @@ private: bool _fetchPostingsDone; bool _hasEquivParent; search::index::PostingListHandle::UP _postingHandle; - search::BitVector::UP _bitVector; + search::BitVector::UP _bitVector; public: /** @@ -39,11 +39,9 @@ public: // Inherit doc from Blueprint. // For now, this DiskTermBlueprint instance must have longer lifetime than the created iterator. - virtual search::queryeval::SearchIterator::UP - createLeafSearch(const search::fef::TermFieldMatchDataArray & tfmda, bool strict) const; + search::queryeval::SearchIterator::UP createLeafSearch(const search::fef::TermFieldMatchDataArray & tfmda, bool strict) const override; - virtual void - fetchPostings(bool strict); + void fetchPostings(bool strict) override; }; } // namespace diskindex diff --git a/searchlib/src/vespa/searchlib/diskindex/zcposocc.h b/searchlib/src/vespa/searchlib/diskindex/zcposocc.h index cbd6791198d..3d5936210f8 100644 --- a/searchlib/src/vespa/searchlib/diskindex/zcposocc.h +++ b/searchlib/src/vespa/searchlib/diskindex/zcposocc.h @@ -5,11 +5,9 @@ #include "zcposting.h" #include <vespa/searchlib/bitcompression/posocccompression.h> -namespace search -{ +namespace search { -namespace diskindex -{ +namespace diskindex { class Zc4PosOccSeqRead : public Zc4PostingSeqRead { @@ -20,12 +18,8 @@ private: public: Zc4PosOccSeqRead(index::PostingListCountFileSeqRead *countFile); - - virtual void - setFeatureParams(const PostingListParams ¶ms); - - static const vespalib::string & - getSubIdentifier(void); + void setFeatureParams(const PostingListParams ¶ms) override; + static const vespalib::string &getSubIdentifier(); }; @@ -38,9 +32,7 @@ private: public: typedef index::Schema Schema; - Zc4PosOccSeqWrite(const Schema &schema, - uint32_t indexId, - index::PostingListCountFileSeqWrite *countFile); + Zc4PosOccSeqWrite(const Schema &schema, uint32_t indexId, index::PostingListCountFileSeqWrite *countFile); }; @@ -50,15 +42,10 @@ private: bitcompression::PosOccFieldsParams _fieldsParams; bitcompression::EGPosOccDecodeContextCooked<true> _cookedDecodeContext; bitcompression::EGPosOccDecodeContext<true> _rawDecodeContext; - public: ZcPosOccSeqRead(index::PostingListCountFileSeqRead *countFile); - - virtual void - setFeatureParams(const PostingListParams ¶ms); - - static const vespalib::string & - getSubIdentifier(void); + void setFeatureParams(const PostingListParams ¶ms) override; + static const vespalib::string &getSubIdentifier(void); }; @@ -67,13 +54,9 @@ class ZcPosOccSeqWrite : public ZcPostingSeqWrite private: bitcompression::PosOccFieldsParams _fieldsParams; bitcompression::EGPosOccEncodeContext<true> _realEncodeFeatures; - public: typedef index::Schema Schema; - - ZcPosOccSeqWrite(const Schema &schema, - uint32_t indexId, - index::PostingListCountFileSeqWrite *countFile); + ZcPosOccSeqWrite(const Schema &schema, uint32_t indexId, index::PostingListCountFileSeqWrite *countFile); }; diff --git a/searchlib/src/vespa/searchlib/diskindex/zcposting.h b/searchlib/src/vespa/searchlib/diskindex/zcposting.h index 447216d84cb..8ec0f2e2697 100644 --- a/searchlib/src/vespa/searchlib/diskindex/zcposting.h +++ b/searchlib/src/vespa/searchlib/diskindex/zcposting.h @@ -5,20 +5,16 @@ #include <vespa/searchlib/index/postinglistfile.h> #include <vespa/searchlib/bitcompression/compression.h> -namespace search -{ +namespace search { -namespace index -{ +namespace index { class PostingListCountFileSeqRead; - class PostingListCountFileSeqWrite; } -namespace diskindex -{ +namespace diskindex { class ZcBuf { @@ -28,66 +24,29 @@ public: uint8_t *_mallocStart; size_t _mallocSize; - ZcBuf(void) + ZcBuf() : _valI(NULL), _valE(NULL), _mallocStart(NULL), _mallocSize(0) - { - } - - ~ZcBuf(void) - { - free(_mallocStart); - } - - - static size_t - zcSlack(void) - { - return 4; - } - - void - clearReserve(size_t reserveSize); + {} - void - clear(void) - { - _valI = _mallocStart; - } - - size_t - capacity(void) const - { - return _valE - _mallocStart; - } + ~ZcBuf() { free(_mallocStart); } - size_t - size(void) const - { - return _valI - _mallocStart; - } - - size_t - pos(void) const - { - return _valI - _mallocStart; - } + static size_t zcSlack() { return 4; } + void clearReserve(size_t reserveSize); + void clear() { _valI = _mallocStart; } + size_t capacity() const { return _valE - _mallocStart; } + size_t size() const { return _valI - _mallocStart; } + size_t pos() const { return _valI - _mallocStart; } + void expand(); - void - expand(void); - - void - maybeExpand(void) - { + void maybeExpand() { if (__builtin_expect(_valI >= _valE, false)) expand(); } - void - encode(uint32_t num) - { + void encode(uint32_t num) { for (;;) { if (num < (1 << 7)) { *_valI++ = num; @@ -99,9 +58,7 @@ public: maybeExpand(); } - uint32_t - decode(void) - { + uint32_t decode() { uint32_t res; uint8_t *valI = _valI; if (__builtin_expect(valI[0] < (1 << 7), true)) { @@ -138,9 +95,7 @@ public: class Zc4PostingSeqRead : public index::PostingListFileSeqRead { Zc4PostingSeqRead(const Zc4PostingSeqRead &); - - Zc4PostingSeqRead & - operator=(const Zc4PostingSeqRead &); + Zc4PostingSeqRead &operator=(const Zc4PostingSeqRead &); protected: typedef bitcompression::FeatureDecodeContextBE DecodeContext; @@ -205,8 +160,7 @@ protected: public: Zc4PostingSeqRead(index::PostingListCountFileSeqRead *countFile); - virtual - ~Zc4PostingSeqRead(void); + ~Zc4PostingSeqRead(); typedef index::DocIdAndFeatures DocIdAndFeatures; typedef index::PostingListCounts PostingListCounts; @@ -215,71 +169,20 @@ public: /** * Read document id and features for common word. */ - virtual void - readCommonWordDocIdAndFeatures(DocIdAndFeatures &features); - - /** - * Read document id and features. - */ - virtual void - readDocIdAndFeatures(DocIdAndFeatures &features); - - /** - * Checkpoint write. Used at semi-regular intervals during indexing - * to allow for continued indexing after an interrupt. Implies - * flush from memory to disk, and possibly also sync to permanent - * storage media. - */ - virtual void - checkPointWrite(vespalib::nbostream &out); - - /** - * Checkpoint read. Used when resuming indexing after an interrupt. - */ - virtual void - checkPointRead(vespalib::nbostream &in); - - /** - * Read counts for a word. - */ - virtual void - readCounts(const PostingListCounts &counts); // Fill in for next word - - /** - * Open posting list file for sequential read. - */ - virtual bool - open(const vespalib::string &name, const TuneFileSeqRead &tuneFileRead); - - /** - * Close posting list file. - */ - virtual bool - close(void); - - /* - * Get current parameters. - */ - virtual void - getParams(PostingListParams ¶ms); - - /* - * Get current feature parameters. - */ - virtual void - getFeatureParams(PostingListParams ¶ms); - - void - readWordStartWithSkip(void); - - void - readWordStart(void); - - void - readHeader(void); - - static const vespalib::string & - getIdentifier(void); + virtual void readCommonWordDocIdAndFeatures(DocIdAndFeatures &features); + + void readDocIdAndFeatures(DocIdAndFeatures &features) override; + void checkPointWrite(vespalib::nbostream &out) override; + void checkPointRead(vespalib::nbostream &in) override; + void readCounts(const PostingListCounts &counts) override; // Fill in for next word + bool open(const vespalib::string &name, const TuneFileSeqRead &tuneFileRead) override; + bool close() override; + void getParams(PostingListParams ¶ms) override; + void getFeatureParams(PostingListParams ¶ms) override; + void readWordStartWithSkip(); + void readWordStart(); + void readHeader(); + static const vespalib::string &getIdentifier(); // Methods used when generating posting list for common word pairs. @@ -289,8 +192,7 @@ public: * * @return current posting offset, measured in bits. */ - virtual uint64_t - getCurrentPostingOffset(void) const; + uint64_t getCurrentPostingOffset() const override; /** * Set current posting offset, measured in bits. First posting @@ -301,19 +203,14 @@ public: * @param readAheadOffset end of posting list for either this or a * later word pair, depending on disk seek cost. */ - virtual void - setPostingOffset(uint64_t offset, - uint64_t endOffset, - uint64_t readAheadOffset); + void setPostingOffset(uint64_t offset, uint64_t endOffset, uint64_t readAheadOffset) override; }; class Zc4PostingSeqWrite : public index::PostingListFileSeqWrite { Zc4PostingSeqWrite(const Zc4PostingSeqWrite &); - - Zc4PostingSeqWrite & - operator=(const Zc4PostingSeqWrite &); + Zc4PostingSeqWrite &operator=(const Zc4PostingSeqWrite &); protected: typedef bitcompression::FeatureEncodeContextBE EncodeContext; @@ -345,125 +242,58 @@ protected: index::PostingListCountFileSeqWrite *const _countFile; public: Zc4PostingSeqWrite(index::PostingListCountFileSeqWrite *countFile); - - virtual - ~Zc4PostingSeqWrite(void); + ~Zc4PostingSeqWrite(); typedef index::DocIdAndFeatures DocIdAndFeatures; typedef index::PostingListCounts PostingListCounts; typedef index::PostingListParams PostingListParams; - /** - * Write document id and features. - */ - virtual void - writeDocIdAndFeatures(const DocIdAndFeatures &features); - - /** - * Flush word (during write) after it is complete to buffers, i.e. - * prepare for next word, but not for application crash. - */ - virtual void - flushWord(void); - - /** - * Checkpoint write. Used at semi-regular intervals during indexing - * to allow for continued indexing after an interrupt. Implies - * flush from memory to disk, and possibly also sync to permanent - * storage media. - */ - virtual void - checkPointWrite(vespalib::nbostream &out); + void writeDocIdAndFeatures(const DocIdAndFeatures &features) override; + void flushWord() override; + void checkPointWrite(vespalib::nbostream &out) override; + void checkPointRead(vespalib::nbostream &in) override; - /** - * Checkpoint read. Used when resuming indexing after an interrupt. - */ - virtual void - checkPointRead(vespalib::nbostream &in); + bool open(const vespalib::string &name, const TuneFileSeqWrite &tuneFileWrite, + const search::common::FileHeaderContext &fileHeaderContext) override; - /** - * Open posting list file for sequential write. - */ - virtual bool - open(const vespalib::string &name, - const TuneFileSeqWrite &tuneFileWrite, - const search::common::FileHeaderContext &fileHeaderContext); - - /** - * Close posting list file. - */ - virtual bool - close(void); - - /* - * Set parameters. - */ - virtual void - setParams(const PostingListParams ¶ms); - - /* - * Get current parameters. - */ - virtual void - getParams(PostingListParams ¶ms); - - /* - * Set feature parameters. - */ - virtual void - setFeatureParams(const PostingListParams ¶ms); - - /* - * Get current feature parameters. - */ - virtual void - getFeatureParams(PostingListParams ¶ms); + bool close() override; + void setParams(const PostingListParams ¶ms) override; + void getParams(PostingListParams ¶ms) override; + void setFeatureParams(const PostingListParams ¶ms) override; + void getFeatureParams(PostingListParams ¶ms) override; /** * Flush chunk to file. */ - void - flushChunk(void); - - /** - * - */ - void - calcSkipInfo(void); + void flushChunk(); + void calcSkipInfo(); /** * Flush word with skip info to disk */ - void - flushWordWithSkip(bool hasMore); + void flushWordWithSkip(bool hasMore); /** * Flush word without skip info to disk. */ - virtual void - flushWordNoSkip(void); + virtual void flushWordNoSkip(); /** * Prepare for next word or next chunk. */ - void - resetWord(void); + void resetWord(); /** * Make header using feature encode write context. */ - void - makeHeader(const search::common::FileHeaderContext &fileHeaderContext); - - void - updateHeader(void); + void makeHeader(const search::common::FileHeaderContext &fileHeaderContext); + void updateHeader(); /** * Read header, using temporary feature decode context. */ - uint32_t - readHeader(const vespalib::string &name); + uint32_t readHeader(const vespalib::string &name); }; @@ -471,25 +301,17 @@ class ZcPostingSeqRead : public Zc4PostingSeqRead { public: ZcPostingSeqRead(index::PostingListCountFileSeqRead *countFile); - - virtual void - readDocIdAndFeatures(DocIdAndFeatures &features); - - static const vespalib::string & - getIdentifier(void); + void readDocIdAndFeatures(DocIdAndFeatures &features) override; + static const vespalib::string &getIdentifier(); }; class ZcPostingSeqWrite : public Zc4PostingSeqWrite { public: ZcPostingSeqWrite(index::PostingListCountFileSeqWrite *countFile); - - virtual void - flushWordNoSkip(void); - + void flushWordNoSkip() override; }; } // namespace diskindex } // namespace search - diff --git a/searchlib/src/vespa/searchlib/docstore/chunkformats.h b/searchlib/src/vespa/searchlib/docstore/chunkformats.h index 29a396389ac..09d8e865628 100644 --- a/searchlib/src/vespa/searchlib/docstore/chunkformats.h +++ b/searchlib/src/vespa/searchlib/docstore/chunkformats.h @@ -14,11 +14,11 @@ public: ChunkFormatV1(vespalib::nbostream & is, uint32_t expectedCrc); ChunkFormatV1(size_t maxSize); private: - virtual bool includeSerializedSize() const { return false; } - virtual uint8_t getVersion() const { return VERSION; } - virtual size_t getHeaderSize() const { return 0; } - virtual uint32_t computeCrc(const void * buf, size_t sz) const; - virtual void writeHeader(vespalib::DataBuffer & buf) const { + bool includeSerializedSize() const override { return false; } + uint8_t getVersion() const override { return VERSION; } + size_t getHeaderSize() const override { return 0; } + uint32_t computeCrc(const void * buf, size_t sz) const override; + void writeHeader(vespalib::DataBuffer & buf) const override { (void) buf; } }; @@ -31,14 +31,14 @@ public: ChunkFormatV2(vespalib::nbostream & is, uint32_t expectedCrc); ChunkFormatV2(size_t maxSize); private: - virtual bool includeSerializedSize() const { return true; } - virtual size_t getHeaderSize() const { + bool includeSerializedSize() const override { return true; } + size_t getHeaderSize() const override { // MAGIC return 4; } - virtual uint8_t getVersion() const { return VERSION; } - virtual uint32_t computeCrc(const void * buf, size_t sz) const; - virtual void writeHeader(vespalib::DataBuffer & buf) const { + uint8_t getVersion() const override { return VERSION; } + uint32_t computeCrc(const void * buf, size_t sz) const override; + void writeHeader(vespalib::DataBuffer & buf) const override { buf.writeInt32(MAGIC); } void verifyMagic(vespalib::nbostream & is) const; diff --git a/searchlib/src/vespa/searchlib/docstore/document_store_visitor_progress.h b/searchlib/src/vespa/searchlib/docstore/document_store_visitor_progress.h index 125e8cb0f98..4f23941c272 100644 --- a/searchlib/src/vespa/searchlib/docstore/document_store_visitor_progress.h +++ b/searchlib/src/vespa/searchlib/docstore/document_store_visitor_progress.h @@ -3,20 +3,15 @@ #include "idocumentstore.h" -namespace search -{ +namespace search { class DocumentStoreVisitorProgress : public IDocumentStoreVisitorProgress { double _progress; public: DocumentStoreVisitorProgress(); - - virtual void - updateProgress(double progress); - - virtual double - getProgress() const; + void updateProgress(double progress) override; + virtual double getProgress() const; }; } // namespace proton diff --git a/searchlib/src/vespa/searchlib/docstore/documentstore.cpp b/searchlib/src/vespa/searchlib/docstore/documentstore.cpp index bf360784a56..ceb82a60cbf 100644 --- a/searchlib/src/vespa/searchlib/docstore/documentstore.cpp +++ b/searchlib/src/vespa/searchlib/docstore/documentstore.cpp @@ -312,8 +312,7 @@ class DocumentStore::WrapVisitor : public IDataStoreVisitor uint64_t _syncToken; public: - virtual void - visit(uint32_t lid, const void *buffer, size_t sz); + void visit(uint32_t lid, const void *buffer, size_t sz) override; WrapVisitor(Visitor &visitor, const document::DocumentTypeRepo &repo, @@ -333,9 +332,7 @@ class DocumentStore::WrapVisitorProgress : public IDataStoreVisitorProgress { IDocumentStoreVisitorProgress &_visitorProgress; public: - virtual void - updateProgress(double progress) - { + void updateProgress(double progress) override { _visitorProgress.updateProgress(progress); } diff --git a/searchlib/src/vespa/searchlib/engine/packetconverter.cpp b/searchlib/src/vespa/searchlib/engine/packetconverter.cpp index f0d190805ca..cdd61936daf 100644 --- a/searchlib/src/vespa/searchlib/engine/packetconverter.cpp +++ b/searchlib/src/vespa/searchlib/engine/packetconverter.cpp @@ -14,8 +14,8 @@ struct FS4PropertiesBuilder : public search::fef::IPropertiesVisitor { uint32_t idx; search::fs4transport::FS4Properties &props; FS4PropertiesBuilder(search::fs4transport::FS4Properties &p) : idx(0), props(p) {} - virtual void visitProperty(const search::fef::Property::Value &key, - const search::fef::Property &values) + void visitProperty(const search::fef::Property::Value &key, + const search::fef::Property &values) override { for (uint32_t i = 0; i < values.size(); ++i) { props.setKey(idx, key.data(), key.size()); diff --git a/searchlib/src/vespa/searchlib/engine/transportserver.cpp b/searchlib/src/vespa/searchlib/engine/transportserver.cpp index 08a8a191f2f..4e46035b687 100644 --- a/searchlib/src/vespa/searchlib/engine/transportserver.cpp +++ b/searchlib/src/vespa/searchlib/engine/transportserver.cpp @@ -401,7 +401,7 @@ TransportServer::getListenPort() vespalib::Gate done; int port; Cmd(TransportServer &s) : server(s), done(), port(-1) {} - virtual void execute() { + void execute() override { if (server._listener != 0) { port = server._listener->GetPortNumber(); } diff --git a/searchlib/src/vespa/searchlib/expression/addfunctionnode.h b/searchlib/src/vespa/searchlib/expression/addfunctionnode.h index c2fc34e99be..9b2ce74f968 100644 --- a/searchlib/src/vespa/searchlib/expression/addfunctionnode.h +++ b/searchlib/src/vespa/searchlib/expression/addfunctionnode.h @@ -1,7 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/expression/numericfunctionnode.h> +#include "numericfunctionnode.h" namespace search { namespace expression { @@ -12,9 +12,9 @@ public: DECLARE_EXPRESSIONNODE(AddFunctionNode); AddFunctionNode() { } private: - virtual void onArgument(const ResultNode & arg, ResultNode & result) const; - virtual ResultNode & flatten(const ResultNodeVector & v, ResultNode & result) const { return v.flattenSum(result); } - virtual ResultNode::CP getInitialValue() const { return ResultNode::CP(new Int64ResultNode(0)); } + void onArgument(const ResultNode & arg, ResultNode & result) const override; + ResultNode & flatten(const ResultNodeVector & v, ResultNode & result) const override { return v.flattenSum(result); } + ResultNode::CP getInitialValue() const override { return ResultNode::CP(new Int64ResultNode(0)); } }; } diff --git a/searchlib/src/vespa/searchlib/expression/andfunctionnode.h b/searchlib/src/vespa/searchlib/expression/andfunctionnode.h index cc8d89c669c..a53d5803c7a 100644 --- a/searchlib/src/vespa/searchlib/expression/andfunctionnode.h +++ b/searchlib/src/vespa/searchlib/expression/andfunctionnode.h @@ -1,8 +1,8 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/expression/bitfunctionnode.h> -#include <vespa/searchlib/expression/integerresultnode.h> +#include "bitfunctionnode.h" +#include "integerresultnode.h" namespace search { namespace expression { @@ -13,12 +13,10 @@ public: DECLARE_EXPRESSIONNODE(AndFunctionNode); AndFunctionNode() { } private: - virtual ResultNode::CP getInitialValue() const { return ResultNode::CP(new Int64ResultNode(-1)); } - virtual ResultNode & flatten(const ResultNodeVector & v, ResultNode & result) const { return v.flattenAnd(result); } - - virtual void onArgument(const ResultNode & arg, Int64ResultNode & result) const; + ResultNode::CP getInitialValue() const override { return ResultNode::CP(new Int64ResultNode(-1)); } + ResultNode & flatten(const ResultNodeVector & v, ResultNode & result) const override { return v.flattenAnd(result); } + void onArgument(const ResultNode & arg, Int64ResultNode & result) const override; }; } } - diff --git a/searchlib/src/vespa/searchlib/expression/arrayatlookupfunctionnode.h b/searchlib/src/vespa/searchlib/expression/arrayatlookupfunctionnode.h index 54b4a88a559..8a50ec4e86c 100644 --- a/searchlib/src/vespa/searchlib/expression/arrayatlookupfunctionnode.h +++ b/searchlib/src/vespa/searchlib/expression/arrayatlookupfunctionnode.h @@ -18,22 +18,15 @@ public: ArrayAtLookup(); ~ArrayAtLookup(); - - ArrayAtLookup(const vespalib::string &attribute, - ExpressionNode::UP arg); - - ArrayAtLookup(const search::attribute::IAttributeVector &attr, - ExpressionNode::UP indexArg); - + ArrayAtLookup(const vespalib::string &attribute, ExpressionNode::UP arg); + ArrayAtLookup(const search::attribute::IAttributeVector &attr, ExpressionNode::UP indexArg); ArrayAtLookup(const ArrayAtLookup &rhs); - ArrayAtLookup & operator= (const ArrayAtLookup &rhs); - void setDocId(DocId docId) { _docId = docId; } private: - virtual bool onExecute() const; - virtual void onPrepareResult(); - virtual void wireAttributes(const search::attribute::IAttributeContext &attrCtx); + bool onExecute() const override; + void onPrepareResult() override; + void wireAttributes(const search::attribute::IAttributeContext &attrCtx) override; enum BasicAttributeType { BAT_INT, BAT_FLOAT, BAT_STRING diff --git a/searchlib/src/vespa/searchlib/expression/arrayoperationnode.h b/searchlib/src/vespa/searchlib/expression/arrayoperationnode.h index 6afcbdcccaf..4e4f94d2a6a 100644 --- a/searchlib/src/vespa/searchlib/expression/arrayoperationnode.h +++ b/searchlib/src/vespa/searchlib/expression/arrayoperationnode.h @@ -1,7 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/expression/functionnode.h> +#include "functionnode.h" #include <vespa/searchcommon/attribute/iattributecontext.h> #include <vespa/vespalib/util/stringfmt.h> @@ -11,8 +11,8 @@ namespace expression { class ArrayOperationNode : public FunctionNode { public: - typedef search::attribute::IAttributeVector IAttributeVector; - typedef search::attribute::IAttributeContext IAttributeContext; + typedef attribute::IAttributeVector IAttributeVector; + typedef attribute::IAttributeContext IAttributeContext; DECLARE_NBO_SERIALIZE; DECLARE_ABSTRACT_EXPRESSIONNODE(ArrayOperationNode); @@ -26,7 +26,7 @@ public: void setDocId(DocId newDocId) { _docId = newDocId; } - virtual void wireAttributes(const IAttributeContext &attrCtx); + void wireAttributes(const IAttributeContext &attrCtx) override; protected: DocId docId() const { return _docId; } @@ -37,10 +37,9 @@ protected: private: vespalib::string _attributeName; - const search::attribute::IAttributeVector * _attribute; + const attribute::IAttributeVector * _attribute; DocId _docId; }; } } - diff --git a/searchlib/src/vespa/searchlib/expression/attributenode.h b/searchlib/src/vespa/searchlib/expression/attributenode.h index a88881afbb8..f9f098f6977 100644 --- a/searchlib/src/vespa/searchlib/expression/attributenode.h +++ b/searchlib/src/vespa/searchlib/expression/attributenode.h @@ -67,7 +67,7 @@ public: bool check(const vespalib::Identifiable &obj) const override { return obj.inherits(AttributeNode::classId); } }; - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; + void visitMembers(vespalib::ObjectVisitor &visitor) const override; DECLARE_EXPRESSIONNODE(AttributeNode); AttributeNode(); AttributeNode(const vespalib::stringref &name); diff --git a/searchlib/src/vespa/searchlib/expression/bitfunctionnode.h b/searchlib/src/vespa/searchlib/expression/bitfunctionnode.h index 1a2529d1038..87f8fa72754 100644 --- a/searchlib/src/vespa/searchlib/expression/bitfunctionnode.h +++ b/searchlib/src/vespa/searchlib/expression/bitfunctionnode.h @@ -1,8 +1,8 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/expression/multiargfunctionnode.h> -#include <vespa/searchlib/expression/integerresultnode.h> +#include "multiargfunctionnode.h" +#include "integerresultnode.h" namespace search { namespace expression { @@ -13,10 +13,10 @@ public: DECLARE_ABSTRACT_EXPRESSIONNODE(BitFunctionNode); BitFunctionNode() { } protected: - virtual void onPrepareResult(); + void onPrepareResult() override; private: virtual void onArgument(const ResultNode & arg, Int64ResultNode & result) const = 0; - virtual void onArgument(const ResultNode & arg, ResultNode & result) const; + void onArgument(const ResultNode & arg, ResultNode & result) const override; }; } diff --git a/searchlib/src/vespa/searchlib/expression/bucketresultnode.h b/searchlib/src/vespa/searchlib/expression/bucketresultnode.h index 36f0cff66f5..b954d4c4637 100644 --- a/searchlib/src/vespa/searchlib/expression/bucketresultnode.h +++ b/searchlib/src/vespa/searchlib/expression/bucketresultnode.h @@ -10,18 +10,17 @@ class BucketResultNode : public ResultNode { public: DECLARE_ABSTRACT_EXPRESSIONNODE(BucketResultNode); - virtual void set(const ResultNode & rhs) { (void) rhs; } + void set(const ResultNode & rhs) override { (void) rhs; } protected: static vespalib::FieldBase _fromField; static vespalib::FieldBase _toField; private: - virtual int64_t onGetInteger(size_t index) const { (void) index; return 0; } - virtual double onGetFloat(size_t index) const { (void) index; return 0; } - virtual ConstBufferRef onGetString(size_t index, BufferRef buf) const { (void) index; return buf; } - virtual size_t getRawByteSize() const { return onGetRawByteSize(); } + int64_t onGetInteger(size_t index) const override { (void) index; return 0; } + double onGetFloat(size_t index) const override { (void) index; return 0; } + ConstBufferRef onGetString(size_t index, BufferRef buf) const override { (void) index; return buf; } + size_t getRawByteSize() const override { return onGetRawByteSize(); } virtual size_t onGetRawByteSize() const = 0; }; } } - diff --git a/searchlib/src/vespa/searchlib/expression/catserializer.h b/searchlib/src/vespa/searchlib/expression/catserializer.h index dc25e3b30d9..37dd7623b02 100644 --- a/searchlib/src/vespa/searchlib/expression/catserializer.h +++ b/searchlib/src/vespa/searchlib/expression/catserializer.h @@ -1,9 +1,8 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once +#include "serializer.h" #include <vespa/vespalib/objects/nboserializer.h> -#include <vespa/searchlib/expression/serializer.h> - namespace search { namespace expression { @@ -14,20 +13,20 @@ class CatSerializer : public vespalib::NBOSerializer, public ResultSerializer { public: CatSerializer(vespalib::nbostream & stream) : vespalib::NBOSerializer(stream) { } - virtual CatSerializer & put(const vespalib::IFieldBase & field, const vespalib::Identifiable & value); - virtual CatSerializer & put(const vespalib::IFieldBase & field, const vespalib::stringref & value); - virtual ResultSerializer & putResult(const vespalib::IFieldBase & field, const RawResultNode & value); - virtual ResultSerializer & putResult(const vespalib::IFieldBase & field, const ResultNodeVector & value); - virtual void proxyPut(const ResultNode & value); - - virtual CatSerializer & get(const vespalib::IFieldBase & field, bool & value); - virtual CatSerializer & get(const vespalib::IFieldBase & field, uint8_t & value); - virtual CatSerializer & get(const vespalib::IFieldBase & field, uint16_t & value); - virtual CatSerializer & get(const vespalib::IFieldBase & field, uint32_t & value); - virtual CatSerializer & get(const vespalib::IFieldBase & field, uint64_t & value); - virtual CatSerializer & get(const vespalib::IFieldBase & field, double & value); - virtual CatSerializer & get(const vespalib::IFieldBase & field, float & value); - virtual CatSerializer & get(const vespalib::IFieldBase & field, vespalib::string & value); + CatSerializer & put(const vespalib::IFieldBase & field, const vespalib::Identifiable & value) override; + CatSerializer & put(const vespalib::IFieldBase & field, const vespalib::stringref & value) override; + ResultSerializer & putResult(const vespalib::IFieldBase & field, const RawResultNode & value) override; + ResultSerializer & putResult(const vespalib::IFieldBase & field, 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; private: CatSerializer & nop(const vespalib::IFieldBase & field, const void * value) __attribute__((noinline)); @@ -35,4 +34,3 @@ private: } } - diff --git a/searchlib/src/vespa/searchlib/expression/constantnode.h b/searchlib/src/vespa/searchlib/expression/constantnode.h index f5f556a5312..aa4c0bd8869 100644 --- a/searchlib/src/vespa/searchlib/expression/constantnode.h +++ b/searchlib/src/vespa/searchlib/expression/constantnode.h @@ -14,11 +14,11 @@ public: DECLARE_EXPRESSIONNODE(ConstantNode); ConstantNode() : ExpressionNode(), _result() { } ConstantNode(ResultNode::UP r) : ExpressionNode(), _result(r.release()) { } - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; - virtual const ResultNode & getResult() const { return *_result; } + void visitMembers(vespalib::ObjectVisitor &visitor) const override; + const ResultNode & getResult() const override { return *_result; } private: - virtual void onPrepare(bool preserveAccurateTypes) { (void) preserveAccurateTypes; } - virtual bool onExecute() const { return true; } + void onPrepare(bool preserveAccurateTypes) override { (void) preserveAccurateTypes; } + bool onExecute() const override { return true; } ResultNode::CP _result; }; diff --git a/searchlib/src/vespa/searchlib/expression/dividefunctionnode.h b/searchlib/src/vespa/searchlib/expression/dividefunctionnode.h index 8775e71f7a0..c27e6567990 100644 --- a/searchlib/src/vespa/searchlib/expression/dividefunctionnode.h +++ b/searchlib/src/vespa/searchlib/expression/dividefunctionnode.h @@ -1,7 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/expression/numericfunctionnode.h> +#include "numericfunctionnode.h" namespace search { namespace expression { @@ -12,9 +12,9 @@ public: DECLARE_EXPRESSIONNODE(DivideFunctionNode); DivideFunctionNode() { } private: - virtual void onArgument(const ResultNode & arg, ResultNode & result) const; - virtual ResultNode & flatten(const ResultNodeVector & v, ResultNode & result) const; - virtual ResultNode::CP getInitialValue() const; + void onArgument(const ResultNode & arg, ResultNode & result) const override; + ResultNode & flatten(const ResultNodeVector & v, ResultNode & result) const override; + ResultNode::CP getInitialValue() const override; }; } diff --git a/searchlib/src/vespa/searchlib/expression/documentfieldnode.cpp b/searchlib/src/vespa/searchlib/expression/documentfieldnode.cpp index e4b0a1462f7..bae7a04531f 100644 --- a/searchlib/src/vespa/searchlib/expression/documentfieldnode.cpp +++ b/searchlib/src/vespa/searchlib/expression/documentfieldnode.cpp @@ -251,13 +251,13 @@ class String2ResultNode : public ResultNode { public: String2ResultNode(const vespalib::string & s) : _s(s) { } - virtual int64_t onGetInteger(size_t index) const { (void) index; return strtoul(_s.c_str(), NULL, 0); } - virtual double onGetFloat(size_t index) const { (void) index; return strtod(_s.c_str(), NULL); } - virtual ConstBufferRef onGetString(size_t index, BufferRef buf) const { (void) index; (void) buf; return ConstBufferRef(_s.c_str(), _s.size()); } + 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 strtod(_s.c_str(), NULL); } + ConstBufferRef onGetString(size_t index, BufferRef buf) const override { (void) index; (void) buf; return ConstBufferRef(_s.c_str(), _s.size()); } private: - virtual String2ResultNode * clone() const { return new String2ResultNode(_s); } - virtual void set(const ResultNode&); - virtual size_t hash() const { return 0; } + String2ResultNode * clone() const override { return new String2ResultNode(_s); } + void set(const ResultNode&) override; + size_t hash() const override { return 0; } const vespalib::string & _s; }; diff --git a/searchlib/src/vespa/searchlib/expression/enumresultnode.h b/searchlib/src/vespa/searchlib/expression/enumresultnode.h index 10a40688445..e0e7d50b983 100644 --- a/searchlib/src/vespa/searchlib/expression/enumresultnode.h +++ b/searchlib/src/vespa/searchlib/expression/enumresultnode.h @@ -1,7 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/expression/integerresultnode.h> +#include "integerresultnode.h" namespace search { namespace expression { @@ -12,13 +12,11 @@ private: typedef IntegerResultNodeT<int64_t> Base; public: DECLARE_RESULTNODE(EnumResultNode); - EnumResultNode(int64_t v=0) : Base(v) { } - virtual void set(const ResultNode & rhs) { setValue(rhs.getEnum()); } - + void set(const ResultNode & rhs) override { setValue(rhs.getEnum()); } private: - virtual int64_t onGetEnum(size_t index) const { (void) index; return getValue(); } - virtual ConstBufferRef onGetString(size_t index, BufferRef buf) const; + int64_t onGetEnum(size_t index) const override { (void) index; return getValue(); } + ConstBufferRef onGetString(size_t index, BufferRef buf) const override; }; } diff --git a/searchlib/src/vespa/searchlib/expression/expressionnode.h b/searchlib/src/vespa/searchlib/expression/expressionnode.h index 62f8869397b..3fce1a3f873 100644 --- a/searchlib/src/vespa/searchlib/expression/expressionnode.h +++ b/searchlib/src/vespa/searchlib/expression/expressionnode.h @@ -20,11 +20,11 @@ class ResultNode; #define DECLARE_EXPRESSIONNODE(Class) \ DECLARE_IDENTIFIABLE_NS2(search, expression, Class) \ - virtual Class * clone() const; + Class * clone() const override; #define DECLARE_EXPRESSIONNODE_NS1(ns, Class) \ DECLARE_IDENTIFIABLE_NS3(search, expression, ns, Class) \ - virtual Class * clone() const; + Class * clone() const override; #define IMPLEMENT_ABSTRACT_EXPRESSIONNODE(Class, base) \ IMPLEMENT_IDENTIFIABLE_ABSTRACT_NS2(search, expression, Class, base) diff --git a/searchlib/src/vespa/searchlib/expression/fixedwidthbucketfunctionnode.h b/searchlib/src/vespa/searchlib/expression/fixedwidthbucketfunctionnode.h index c7c81ff536a..2e00a97f586 100644 --- a/searchlib/src/vespa/searchlib/expression/fixedwidthbucketfunctionnode.h +++ b/searchlib/src/vespa/searchlib/expression/fixedwidthbucketfunctionnode.h @@ -1,11 +1,11 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/expression/unaryfunctionnode.h> -#include <vespa/searchlib/expression/numericresultnode.h> -#include <vespa/searchlib/expression/integerbucketresultnode.h> -#include <vespa/searchlib/expression/floatbucketresultnode.h> -#include <vespa/searchlib/expression/resultvector.h> +#include "unaryfunctionnode.h" +#include "numericresultnode.h" +#include "integerbucketresultnode.h" +#include "floatbucketresultnode.h" +#include "resultvector.h" #include <memory> namespace search { @@ -26,31 +26,31 @@ public: struct IntegerBucketHandler : public BucketHandler { int64_t width; IntegerBucketHandler(int64_t w) : width(w) {} - virtual void update(ResultNode &result, const ResultNode &value) const; - virtual IntegerBucketHandler *clone() const { return new IntegerBucketHandler(*this); } + void update(ResultNode &result, const ResultNode &value) const override; + IntegerBucketHandler *clone() const override { return new IntegerBucketHandler(*this); } }; struct IntegerVectorBucketHandler : public IntegerBucketHandler { IntegerVectorBucketHandler(int64_t w) : IntegerBucketHandler(w) { } - virtual void update(ResultNode &result, const ResultNode &value) const; - virtual IntegerVectorBucketHandler *clone() const { return new IntegerVectorBucketHandler(*this); } + void update(ResultNode &result, const ResultNode &value) const override; + IntegerVectorBucketHandler *clone() const override { return new IntegerVectorBucketHandler(*this); } }; // update float result bucket based on float value struct FloatBucketHandler : public BucketHandler { double width; FloatBucketHandler(double w) : width(w) {} - virtual void update(ResultNode &result, const ResultNode &value) const; - virtual FloatBucketHandler *clone() const { return new FloatBucketHandler(*this); } + void update(ResultNode &result, const ResultNode &value) const override; + FloatBucketHandler *clone() const override { return new FloatBucketHandler(*this); } }; struct FloatVectorBucketHandler : public FloatBucketHandler { FloatVectorBucketHandler(double w) : FloatBucketHandler(w) { } - virtual void update(ResultNode &result, const ResultNode &value) const; - virtual FloatVectorBucketHandler *clone() const { return new FloatVectorBucketHandler(*this); } + void update(ResultNode &result, const ResultNode &value) const override; + FloatVectorBucketHandler *clone() const override { return new FloatVectorBucketHandler(*this); } }; private: - virtual void onPrepareResult(); - virtual bool onExecute() const; + void onPrepareResult() override; + bool onExecute() const override; NumericResultNode::CP _width; BucketHandler::CP _bucketHandler; diff --git a/searchlib/src/vespa/searchlib/expression/floatbucketresultnode.h b/searchlib/src/vespa/searchlib/expression/floatbucketresultnode.h index aae60dfeb86..fb309352913 100644 --- a/searchlib/src/vespa/searchlib/expression/floatbucketresultnode.h +++ b/searchlib/src/vespa/searchlib/expression/floatbucketresultnode.h @@ -12,16 +12,16 @@ private: double _from; double _to; static FloatBucketResultNode _nullResult; - virtual size_t onGetRawByteSize() const { return sizeof(_from) + sizeof(_to); } - virtual void create(void * buf) const { (void) buf; } - virtual void destroy(void * buf) const { (void) buf; } - virtual void encode(void * buf) const { + size_t onGetRawByteSize() const override { return sizeof(_from) + sizeof(_to); } + void create(void * buf) const override { (void) buf; } + void destroy(void * buf) const override { (void) buf; } + void encode(void * buf) const override { double * v(static_cast<double *>(buf)); v[0] = _from; v[1] = _to; } - virtual size_t hash(const void * buf) const { return static_cast<const size_t *>(buf)[0]; } - virtual void decode(const void * buf) { + size_t hash(const void * buf) const override { return static_cast<const size_t *>(buf)[0]; } + void decode(const void * buf) override { const double * v(static_cast<const double *>(buf)); _from = v[0]; _to = v[1]; @@ -35,17 +35,17 @@ public: DECLARE_NBO_SERIALIZE; FloatBucketResultNode() : _from(0.0), _to(0.0) {} FloatBucketResultNode(double from, double to) : _from(from), _to(to) {} - virtual size_t hash() const; - virtual int onCmp(const Identifiable & b) const; + size_t hash() const override; + int onCmp(const Identifiable & b) const override; int contains(const FloatBucketResultNode & b) const; int contains(double v) const { return (v < _from) ? 1 : (v >= _to) ? -1 : 0; } - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; + void visitMembers(vespalib::ObjectVisitor &visitor) const override; FloatBucketResultNode &setRange(double from, double to) { _from = from; _to = to; return *this; } - virtual const FloatBucketResultNode& getNullBucket() const override { return getNull(); } + const FloatBucketResultNode& getNullBucket() const override { return getNull(); } static const FloatBucketResultNode & getNull() { return _nullResult; } }; diff --git a/searchlib/src/vespa/searchlib/expression/floatresultnode.h b/searchlib/src/vespa/searchlib/expression/floatresultnode.h index 6aa35c97b46..818564bc4db 100644 --- a/searchlib/src/vespa/searchlib/expression/floatresultnode.h +++ b/searchlib/src/vespa/searchlib/expression/floatresultnode.h @@ -1,55 +1,55 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/expression/numericresultnode.h> +#include "numericresultnode.h" #include <vespa/vespalib/util/sort.h> namespace search { namespace expression { -class FloatResultNode : public NumericResultNode +class FloatResultNode final : public NumericResultNode { public: DECLARE_EXPRESSIONNODE(FloatResultNode); DECLARE_NBO_SERIALIZE; - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; + void visitMembers(vespalib::ObjectVisitor &visitor) const override; FloatResultNode(double v=0) : _value(v) { } - virtual size_t hash() const { size_t tmpHash(0); memcpy(&tmpHash, &_value, sizeof(tmpHash)); return tmpHash; } - virtual int onCmp(const Identifiable & b) const; - virtual void add(const ResultNode & b); - virtual void negate(); - virtual void multiply(const ResultNode & b); - virtual void divide(const ResultNode & b); - virtual void modulo(const ResultNode & b); - virtual void min(const ResultNode & b); - virtual void max(const ResultNode & b); - virtual void set(const ResultNode & rhs); + size_t hash() const override { size_t tmpHash(0); memcpy(&tmpHash, &_value, sizeof(tmpHash)); return tmpHash; } + int onCmp(const Identifiable & b) const override; + void add(const ResultNode & b) override; + void negate() override; + void multiply(const ResultNode & b) override; + void divide(const ResultNode & b) override; + void modulo(const ResultNode & b) override; + void min(const ResultNode & b) override; + void max(const ResultNode & b) override; + void set(const ResultNode & rhs) override; double get() const { return _value; } void set(double value) { _value = value; } - virtual const BucketResultNode& getNullBucket() const override; + const BucketResultNode& getNullBucket() const override; private: - virtual int cmpMem(const void * a, const void *b) const { + int cmpMem(const void * a, const void *b) const override { const double & ai(*static_cast<const double *>(a)); const double & bi(*static_cast<const double *>(b)); return ai < bi ? -1 : ai == bi ? 0 : 1; } - virtual void create(void * buf) const { (void) buf; } - virtual void destroy(void * buf) const { (void) buf; } - virtual void decode(const void * buf) { _value = *static_cast<const double *>(buf); } - virtual void encode(void * buf) const { *static_cast<double *>(buf) = _value; } - virtual void swap(void * buf) { std::swap(*static_cast<double *>(buf), _value); } - virtual size_t hash(const void * buf) const { size_t tmpHash(0); memcpy(&tmpHash, buf, sizeof(tmpHash)); return tmpHash; } - virtual uint64_t radixAsc(const void * buf) const { return vespalib::convertForSort<double, true>::convert(*static_cast<const double *>(buf)); } - virtual uint64_t radixDesc(const void * buf) const { return vespalib::convertForSort<double, false>::convert(*static_cast<const double *>(buf)); } + void create(void * buf) const override { (void) buf; } + void destroy(void * buf) const override { (void) buf; } + void decode(const void * buf) override { _value = *static_cast<const double *>(buf); } + void encode(void * buf) const override { *static_cast<double *>(buf) = _value; } + void swap(void * buf) override { std::swap(*static_cast<double *>(buf), _value); } + size_t hash(const void * buf) const override { size_t tmpHash(0); memcpy(&tmpHash, buf, sizeof(tmpHash)); return tmpHash; } + uint64_t radixAsc(const void * buf) const override { return vespalib::convertForSort<double, true>::convert(*static_cast<const double *>(buf)); } + uint64_t radixDesc(const void * buf) const override { return vespalib::convertForSort<double, false>::convert(*static_cast<const double *>(buf)); } - virtual size_t onGetRawByteSize() const { return sizeof(_value); } + size_t onGetRawByteSize() const override { return sizeof(_value); } bool isNan() const; - virtual void setMin(); - virtual void setMax(); - virtual int64_t onGetInteger(size_t index) const; - virtual double onGetFloat(size_t index) const; - virtual ConstBufferRef onGetString(size_t index, BufferRef buf) const; + void setMin() override; + void setMax() override; + int64_t onGetInteger(size_t index) const override; + double onGetFloat(size_t index) const override; + ConstBufferRef onGetString(size_t index, BufferRef buf) const override; double _value; }; diff --git a/searchlib/src/vespa/searchlib/expression/getdocidnamespacespecificfunctionnode.h b/searchlib/src/vespa/searchlib/expression/getdocidnamespacespecificfunctionnode.h index 52114489f1f..a2a34a1214f 100644 --- a/searchlib/src/vespa/searchlib/expression/getdocidnamespacespecificfunctionnode.h +++ b/searchlib/src/vespa/searchlib/expression/getdocidnamespacespecificfunctionnode.h @@ -1,7 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/expression/documentaccessornode.h> +#include "documentaccessornode.h" namespace search { namespace expression { @@ -10,19 +10,18 @@ class GetDocIdNamespaceSpecificFunctionNode : public DocumentAccessorNode { public: DECLARE_NBO_SERIALIZE; - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; + void visitMembers(vespalib::ObjectVisitor &visitor) const override; DECLARE_EXPRESSIONNODE(GetDocIdNamespaceSpecificFunctionNode); GetDocIdNamespaceSpecificFunctionNode() : _value(new StringResultNode("")) { } GetDocIdNamespaceSpecificFunctionNode(ResultNode::UP resultNode) : _value(resultNode.release()) { } private: - virtual const ResultNode & getResult() const { return *_value; } - virtual void onDocType(const document::DocumentType & docType) { (void) docType; } - virtual void onDoc(const document::Document & doc); - virtual void onPrepare(bool preserveAccurateTypes) { (void) preserveAccurateTypes; } - virtual bool onExecute() const { return true; } + const ResultNode & getResult() const override { return *_value; } + void onDocType(const document::DocumentType & docType) override { (void) docType; } + void onDoc(const document::Document & doc) override; + void onPrepare(bool preserveAccurateTypes) override { (void) preserveAccurateTypes; } + bool onExecute() const override { return true; } ResultNode::CP _value; }; } } - diff --git a/searchlib/src/vespa/searchlib/expression/getymumchecksumfunctionnode.h b/searchlib/src/vespa/searchlib/expression/getymumchecksumfunctionnode.h index 786f115f6a5..a7ee9a41a6b 100644 --- a/searchlib/src/vespa/searchlib/expression/getymumchecksumfunctionnode.h +++ b/searchlib/src/vespa/searchlib/expression/getymumchecksumfunctionnode.h @@ -1,7 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/expression/documentaccessornode.h> +#include "documentaccessornode.h" namespace search { namespace expression { @@ -10,14 +10,14 @@ class GetYMUMChecksumFunctionNode : public DocumentAccessorNode { public: DECLARE_NBO_SERIALIZE; - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; + void visitMembers(vespalib::ObjectVisitor &visitor) const override; DECLARE_EXPRESSIONNODE(GetYMUMChecksumFunctionNode); private: - virtual void onPrepare(bool preserveAccurateTypes) { (void) preserveAccurateTypes; } - virtual const ResultNode & getResult() const { return _checkSum; } - virtual void onDocType(const document::DocumentType & docType) { (void) docType; } - virtual void onDoc(const document::Document & doc); - virtual bool onExecute() const { return true; } + void onPrepare(bool preserveAccurateTypes) override { (void) preserveAccurateTypes; } + const ResultNode & getResult() const override { return _checkSum; } + void onDocType(const document::DocumentType & docType) override { (void) docType; } + void onDoc(const document::Document & doc) override; + bool onExecute() const override { return true; } Int64ResultNode _checkSum; }; diff --git a/searchlib/src/vespa/searchlib/expression/integerbucketresultnode.h b/searchlib/src/vespa/searchlib/expression/integerbucketresultnode.h index e37ec993c79..194f7087e89 100644 --- a/searchlib/src/vespa/searchlib/expression/integerbucketresultnode.h +++ b/searchlib/src/vespa/searchlib/expression/integerbucketresultnode.h @@ -13,30 +13,29 @@ private: int64_t _to; static IntegerBucketResultNode _nullResult; - virtual size_t onGetRawByteSize() const { return sizeof(_from) + sizeof(_to); } - virtual void create(void * buf) const { (void) buf; } - virtual void destroy(void * buf) const { (void) buf; } - virtual void encode(void * buf) const { + size_t onGetRawByteSize() const override { return sizeof(_from) + sizeof(_to); } + void create(void * buf) const override { (void) buf; } + void destroy(void * buf) const override { (void) buf; } + void encode(void * buf) const override { int64_t * v(static_cast<int64_t *>(buf)); v[0] = _from; v[1] = _to; } - virtual size_t hash(const void * buf) const { return static_cast<const int64_t *>(buf)[0]; } - virtual void decode(const void * buf) { + size_t hash(const void * buf) const override { return static_cast<const int64_t *>(buf)[0]; } + void decode(const void * buf) override { const int64_t * v(static_cast<const int64_t *>(buf)); _from = v[0]; _to = v[1]; } -#if 0 -#endif + public: DECLARE_EXPRESSIONNODE(IntegerBucketResultNode); DECLARE_NBO_SERIALIZE; IntegerBucketResultNode() : _from(0), _to(0) {} IntegerBucketResultNode(int64_t from, int64_t to) : _from(from), _to(to) {} - virtual size_t hash() const; - virtual int onCmp(const Identifiable & b) const; - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; + size_t hash() const override; + int onCmp(const Identifiable & b) const override; + void visitMembers(vespalib::ObjectVisitor &visitor) const override; int contains(const IntegerBucketResultNode & b) const; int contains(int64_t v) const { return (v < _from) ? 1 : (v >= _to) ? -1 : 0; } IntegerBucketResultNode &setRange(int64_t from, int64_t to) { @@ -44,7 +43,7 @@ public: _to = to; return *this; } - virtual const IntegerBucketResultNode& getNullBucket() const override { return getNull(); } + const IntegerBucketResultNode& getNullBucket() const override { return getNull(); } static const IntegerBucketResultNode & getNull() { return _nullResult; } }; diff --git a/searchlib/src/vespa/searchlib/expression/integerresultnode.h b/searchlib/src/vespa/searchlib/expression/integerresultnode.h index 3954031f17a..8b840f3cc13 100644 --- a/searchlib/src/vespa/searchlib/expression/integerresultnode.h +++ b/searchlib/src/vespa/searchlib/expression/integerresultnode.h @@ -23,25 +23,31 @@ class IntegerResultNodeT : public IntegerResultNode { public: IntegerResultNodeT(int64_t v=0) : _value(v) { } - virtual size_t hash() const { return _value; } - virtual int onCmp(const Identifiable & b) const { + size_t hash() const override { return _value; } + int onCmp(const Identifiable & b) const override { T bv(static_cast<const IntegerResultNodeT &>(b)._value); return (_value < bv) ? -1 : (_value > bv) ? 1 : 0; } - virtual void add(const ResultNode & b) { _value += b.getInteger(); } - virtual void negate() { _value = - _value; } - virtual void multiply(const ResultNode & b) { _value *= b.getInteger(); } - virtual void divide(const ResultNode & b) { + void add(const ResultNode & b) override { _value += b.getInteger(); } + void negate() override { _value = - _value; } + void multiply(const ResultNode & b) override { _value *= b.getInteger(); } + void divide(const ResultNode & b) override { int64_t val = b.getInteger(); _value = (val == 0) ? 0 : (_value / val); } - virtual void modulo(const ResultNode & b) { + void modulo(const ResultNode & b) override { int64_t val = b.getInteger(); _value = (val == 0) ? 0 : (_value % val); } - virtual void min(const ResultNode & b) { int64_t t(b.getInteger()); if (t < _value) { _value = t; } } - virtual void max(const ResultNode & b) { int64_t t(b.getInteger()); if (t > _value) { _value = t; } } - virtual void set(const ResultNode & rhs) { _value = rhs.getInteger(); } + void min(const ResultNode & b) override { + int64_t t(b.getInteger()); + if (t < _value) { _value = t; } + } + void max(const ResultNode & b) override { + int64_t t(b.getInteger()); + if (t > _value) { _value = t; } + } + void set(const ResultNode & rhs) override { _value = rhs.getInteger(); } void andOp(const ResultNode & b) { _value &= b.getInteger(); } void orOp(const ResultNode & b) { _value |= b.getInteger(); } void xorOp(const ResultNode & b) { _value ^= b.getInteger(); } @@ -54,27 +60,31 @@ protected: void setValue(const T &value) { _value = value; } T getValue() const { return _value; } private: - virtual int cmpMem(const void * a, const void *b) const { + int cmpMem(const void * a, const void *b) const override { const T & ai(*static_cast<const T *>(a)); const T & bi(*static_cast<const T *>(b)); return ai < bi ? -1 : ai == bi ? 0 : 1; } - virtual void create(void * buf) const { (void) buf; } - virtual void destroy(void * buf) const { (void) buf; } - virtual void decode(const void * buf) { _value = *static_cast<const T *>(buf); } - virtual void encode(void * buf) const { *static_cast<T *>(buf) = _value; } - virtual void swap(void * buf) { std::swap(*static_cast<T *>(buf), _value); } - virtual size_t hash(const void * buf) const { return *static_cast<const T *>(buf); } - virtual uint64_t radixAsc(const void * buf) const { return vespalib::convertForSort<T, true>::convert(*static_cast<const T *>(buf)); } - virtual uint64_t radixDesc(const void * buf) const { return vespalib::convertForSort<T, false>::convert(*static_cast<const T *>(buf)); } - virtual size_t onGetRawByteSize() const { return sizeof(_value); } - virtual void setMin() { _value = std::numeric_limits<T>::min(); } - virtual void setMax() { _value = std::numeric_limits<T>::max(); } - virtual vespalib::Serializer & onSerialize(vespalib::Serializer & os) const { return os << _value; } - virtual vespalib::Deserializer & onDeserialize(vespalib::Deserializer & is) { return is >> _value; } - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const { visit(visitor, "value", _value); } - virtual int64_t onGetInteger(size_t index) const { (void) index; return _value; } - virtual double onGetFloat(size_t index) const { (void) index; return _value; } + void create(void * buf) const override { (void) buf; } + void destroy(void * buf) const override { (void) buf; } + void decode(const void * buf) override { _value = *static_cast<const T *>(buf); } + void encode(void * buf) const override { *static_cast<T *>(buf) = _value; } + void swap(void * buf) override { std::swap(*static_cast<T *>(buf), _value); } + size_t hash(const void * buf) const override { return *static_cast<const T *>(buf); } + uint64_t radixAsc(const void * buf) const override { + return vespalib::convertForSort<T, true>::convert(*static_cast<const T *>(buf)); + } + uint64_t radixDesc(const void * buf) const override { + return vespalib::convertForSort<T, false>::convert(*static_cast<const T *>(buf)); + } + size_t onGetRawByteSize() const override { return sizeof(_value); } + void setMin() override { _value = std::numeric_limits<T>::min(); } + void setMax() override { _value = std::numeric_limits<T>::max(); } + vespalib::Serializer & onSerialize(vespalib::Serializer & os) const override { return os << _value; } + vespalib::Deserializer & onDeserialize(vespalib::Deserializer & is) override { return is >> _value; } + void visitMembers(vespalib::ObjectVisitor &visitor) const override { visit(visitor, "value", _value); } + int64_t onGetInteger(size_t index) const override { (void) index; return _value; } + double onGetFloat(size_t index) const override { (void) index; return _value; } T _value; }; @@ -86,7 +96,7 @@ public: DECLARE_RESULTNODE(Int8ResultNode); Int8ResultNode(int8_t v=0) : Base(v) { } private: - virtual ConstBufferRef onGetString(size_t index, BufferRef buf) const; + ConstBufferRef onGetString(size_t index, BufferRef buf) const override; }; class Int16ResultNode : public IntegerResultNodeT<int16_t> @@ -97,7 +107,7 @@ public: DECLARE_RESULTNODE(Int16ResultNode); Int16ResultNode(int16_t v=0) : Base(v) { } private: - virtual ConstBufferRef onGetString(size_t index, BufferRef buf) const; + ConstBufferRef onGetString(size_t index, BufferRef buf) const override; }; class Int32ResultNode : public IntegerResultNodeT<int32_t> @@ -108,7 +118,7 @@ public: DECLARE_RESULTNODE(Int32ResultNode); Int32ResultNode(int32_t v=0) : Base(v) { } private: - virtual ConstBufferRef onGetString(size_t index, BufferRef buf) const; + ConstBufferRef onGetString(size_t index, BufferRef buf) const override; }; class Int64ResultNode : public IntegerResultNodeT<int64_t> @@ -119,7 +129,7 @@ public: DECLARE_RESULTNODE(Int64ResultNode); Int64ResultNode(int64_t v=0) : Base(v) { } private: - virtual ConstBufferRef onGetString(size_t index, BufferRef buf) const; + ConstBufferRef onGetString(size_t index, BufferRef buf) const override; }; } diff --git a/searchlib/src/vespa/searchlib/expression/interpolatedlookupfunctionnode.h b/searchlib/src/vespa/searchlib/expression/interpolatedlookupfunctionnode.h index 50e03e615a2..417c09f031f 100644 --- a/searchlib/src/vespa/searchlib/expression/interpolatedlookupfunctionnode.h +++ b/searchlib/src/vespa/searchlib/expression/interpolatedlookupfunctionnode.h @@ -16,22 +16,15 @@ public: InterpolatedLookup(); ~InterpolatedLookup(); - - InterpolatedLookup(const vespalib::string &attribute, - ExpressionNode::UP arg); - - InterpolatedLookup(const search::attribute::IAttributeVector &attr, - ExpressionNode::UP lookupArg); - + InterpolatedLookup(const vespalib::string &attribute, ExpressionNode::UP arg); + InterpolatedLookup(const search::attribute::IAttributeVector &attr, ExpressionNode::UP lookupArg); InterpolatedLookup(const InterpolatedLookup &rhs); - InterpolatedLookup & operator= (const InterpolatedLookup &rhs); - void setDocId(DocId docId) { _docId = docId; } private: - virtual bool onExecute() const; - virtual void onPrepareResult(); - virtual void wireAttributes(const search::attribute::IAttributeContext &attrCtx); + bool onExecute() const override; + void onPrepareResult() override; + void wireAttributes(const search::attribute::IAttributeContext &attrCtx) override; vespalib::string _attributeName; const search::attribute::IAttributeVector * _attribute; DocId _docId; diff --git a/searchlib/src/vespa/searchlib/expression/maxfunctionnode.h b/searchlib/src/vespa/searchlib/expression/maxfunctionnode.h index 515788611a3..488cafca989 100644 --- a/searchlib/src/vespa/searchlib/expression/maxfunctionnode.h +++ b/searchlib/src/vespa/searchlib/expression/maxfunctionnode.h @@ -1,7 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/expression/numericfunctionnode.h> +#include "numericfunctionnode.h" namespace search { namespace expression { @@ -12,9 +12,9 @@ public: DECLARE_EXPRESSIONNODE(MaxFunctionNode); MaxFunctionNode() { } private: - virtual void onArgument(const ResultNode & arg, ResultNode & result) const; - virtual ResultNode & flatten(const ResultNodeVector & v, ResultNode & result) const { return v.flattenMax(result); } - virtual ResultNode::CP getInitialValue() const; + void onArgument(const ResultNode & arg, ResultNode & result) const override; + ResultNode & flatten(const ResultNodeVector & v, ResultNode & result) const override { return v.flattenMax(result); } + ResultNode::CP getInitialValue() const override; }; } diff --git a/searchlib/src/vespa/searchlib/expression/minfunctionnode.h b/searchlib/src/vespa/searchlib/expression/minfunctionnode.h index 1ce835fbc24..8ff7ebfbbb2 100644 --- a/searchlib/src/vespa/searchlib/expression/minfunctionnode.h +++ b/searchlib/src/vespa/searchlib/expression/minfunctionnode.h @@ -1,7 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/expression/numericfunctionnode.h> +#include "numericfunctionnode.h" namespace search { namespace expression { @@ -12,9 +12,9 @@ public: DECLARE_EXPRESSIONNODE(MinFunctionNode); MinFunctionNode() { } private: - virtual void onArgument(const ResultNode & arg, ResultNode & result) const; - virtual ResultNode & flatten(const ResultNodeVector & v, ResultNode & result) const { return v.flattenMin(result); } - virtual ResultNode::CP getInitialValue() const; + void onArgument(const ResultNode & arg, ResultNode & result) const override; + ResultNode & flatten(const ResultNodeVector & v, ResultNode & result) const override { return v.flattenMin(result); } + ResultNode::CP getInitialValue() const override; }; } diff --git a/searchlib/src/vespa/searchlib/expression/modulofunctionnode.h b/searchlib/src/vespa/searchlib/expression/modulofunctionnode.h index c6d46feea73..ed55378be6e 100644 --- a/searchlib/src/vespa/searchlib/expression/modulofunctionnode.h +++ b/searchlib/src/vespa/searchlib/expression/modulofunctionnode.h @@ -1,7 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/expression/numericfunctionnode.h> +#include "numericfunctionnode.h" namespace search { namespace expression { @@ -12,9 +12,9 @@ public: DECLARE_EXPRESSIONNODE(ModuloFunctionNode); ModuloFunctionNode() { } private: - virtual void onArgument(const ResultNode & arg, ResultNode & result) const; - virtual ResultNode & flatten(const ResultNodeVector & v, ResultNode & result) const; - virtual ResultNode::CP getInitialValue() const; + void onArgument(const ResultNode & arg, ResultNode & result) const override; + ResultNode & flatten(const ResultNodeVector & v, ResultNode & result) const override; + ResultNode::CP getInitialValue() const override; }; } diff --git a/searchlib/src/vespa/searchlib/expression/multiargfunctionnode.h b/searchlib/src/vespa/searchlib/expression/multiargfunctionnode.h index 71ab5052ccf..50884943c07 100644 --- a/searchlib/src/vespa/searchlib/expression/multiargfunctionnode.h +++ b/searchlib/src/vespa/searchlib/expression/multiargfunctionnode.h @@ -11,7 +11,7 @@ class MultiArgFunctionNode : public FunctionNode public: typedef std::vector<ExpressionNode::CP> ExpressionNodeVector; DECLARE_NBO_SERIALIZE; - virtual void visitMembers(vespalib::ObjectVisitor & visitor) const; + void visitMembers(vespalib::ObjectVisitor & visitor) const override; DECLARE_ABSTRACT_EXPRESSIONNODE(MultiArgFunctionNode); MultiArgFunctionNode(); MultiArgFunctionNode(const MultiArgFunctionNode &); diff --git a/searchlib/src/vespa/searchlib/expression/multiplyfunctionnode.h b/searchlib/src/vespa/searchlib/expression/multiplyfunctionnode.h index d6386b24ab0..d63741fecaf 100644 --- a/searchlib/src/vespa/searchlib/expression/multiplyfunctionnode.h +++ b/searchlib/src/vespa/searchlib/expression/multiplyfunctionnode.h @@ -1,7 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/expression/numericfunctionnode.h> +#include "numericfunctionnode.h" namespace search { namespace expression { @@ -12,9 +12,9 @@ public: DECLARE_EXPRESSIONNODE(MultiplyFunctionNode); MultiplyFunctionNode() { } private: - virtual void onArgument(const ResultNode & arg, ResultNode & result) const; - virtual ResultNode::CP getInitialValue() const { return ResultNode::CP(new Int64ResultNode(1)); } - virtual ResultNode & flatten(const ResultNodeVector & v, ResultNode & result) const { return v.flattenMultiply(result); } + void onArgument(const ResultNode & arg, ResultNode & result) const override; + ResultNode::CP getInitialValue() const override { return ResultNode::CP(new Int64ResultNode(1)); } + ResultNode & flatten(const ResultNodeVector & v, ResultNode & result) const override { return v.flattenMultiply(result); } }; } diff --git a/searchlib/src/vespa/searchlib/expression/negatefunctionnode.h b/searchlib/src/vespa/searchlib/expression/negatefunctionnode.h index 63cd028c87c..b1b8ad1d1a7 100644 --- a/searchlib/src/vespa/searchlib/expression/negatefunctionnode.h +++ b/searchlib/src/vespa/searchlib/expression/negatefunctionnode.h @@ -13,7 +13,7 @@ public: NegateFunctionNode() { } NegateFunctionNode(ExpressionNode::UP arg) : UnaryFunctionNode(std::move(arg)) { } private: - virtual bool onExecute() const; + bool onExecute() const override; }; } diff --git a/searchlib/src/vespa/searchlib/expression/nullresultnode.h b/searchlib/src/vespa/searchlib/expression/nullresultnode.h index d5bf6d727a4..ee3abdead32 100644 --- a/searchlib/src/vespa/searchlib/expression/nullresultnode.h +++ b/searchlib/src/vespa/searchlib/expression/nullresultnode.h @@ -1,7 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/expression/singleresultnode.h> +#include "singleresultnode.h" namespace search { namespace expression { @@ -10,25 +10,25 @@ class NullResultNode : public SingleResultNode { public: DECLARE_EXPRESSIONNODE(NullResultNode); - virtual size_t hash() const; - virtual int onCmp(const Identifiable & b) const; - virtual void set(const ResultNode & rhs); - virtual void min(const ResultNode & b); - virtual void max(const ResultNode & b); - virtual void add(const ResultNode & b); + size_t hash() const override; + int onCmp(const Identifiable & b) const override; + void set(const ResultNode & rhs) override; + void min(const ResultNode & b) override; + void max(const ResultNode & b) override; + void add(const ResultNode & b) override; private: - virtual void setMin(); - virtual void setMax(); - virtual int64_t onGetInteger(size_t index) const; - virtual double onGetFloat(size_t index) const; - virtual ConstBufferRef onGetString(size_t index, BufferRef buf) const; - virtual size_t onGetRawByteSize() const { return 0; } - virtual void create(void * buf) const { (void) buf; } - virtual void destroy(void * buf) const { (void) buf;} + void setMin() override; + void setMax() override; + int64_t onGetInteger(size_t index) const override; + double onGetFloat(size_t index) const override; + ConstBufferRef onGetString(size_t index, BufferRef buf) const override; + size_t onGetRawByteSize() const override { return 0; } + void create(void * buf) const override { (void) buf; } + void destroy(void * buf) const override { (void) buf;} - virtual void decode(const void * buf) { (void) buf; } - virtual void encode(void * buf) const { (void) buf; } - virtual void swap(void * buf) { (void) buf; } + void decode(const void * buf) override { (void) buf; } + void encode(void * buf) const override { (void) buf; } + void swap(void * buf) override { (void) buf; } }; } diff --git a/searchlib/src/vespa/searchlib/expression/numericfunctionnode.h b/searchlib/src/vespa/searchlib/expression/numericfunctionnode.h index 393b89d1049..aa3a6876eb2 100644 --- a/searchlib/src/vespa/searchlib/expression/numericfunctionnode.h +++ b/searchlib/src/vespa/searchlib/expression/numericfunctionnode.h @@ -1,9 +1,8 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/expression/multiargfunctionnode.h> -#include <vespa/searchlib/expression/resultvector.h> -#include <memory> +#include "multiargfunctionnode.h" +#include "resultvector.h" namespace search { namespace expression { @@ -15,9 +14,9 @@ public: NumericFunctionNode() : _handler() { } NumericFunctionNode(const NumericFunctionNode & rhs); NumericFunctionNode & operator = (const NumericFunctionNode & rhs); - virtual void reset() { _handler.reset(); MultiArgFunctionNode::reset(); } + void reset() override { _handler.reset(); MultiArgFunctionNode::reset(); } protected: - virtual void onPrepare(bool preserveAccurateTypes); + void onPrepare(bool preserveAccurateTypes) override; class Handler { @@ -40,8 +39,8 @@ protected: Handler(func), _result(static_cast<T &>(func.updateResult())) { } - virtual void handle(const ResultNode & arg); - virtual void handleFirst(const ResultNode & arg); + void handle(const ResultNode & arg) override; + void handleFirst(const ResultNode & arg) override; private: T & _result; }; @@ -77,8 +76,8 @@ private: Handler(func), _result(static_cast<Int64ResultNode &>(func.updateResult())) { } - virtual void handle(const ResultNode & arg); - virtual void handleFirst(const ResultNode & arg) { _result.set(arg.getInteger()); } + void handle(const ResultNode & arg) override; + void handleFirst(const ResultNode & arg) override { _result.set(arg.getInteger()); } protected: Int64ResultNode & _result; }; @@ -89,8 +88,8 @@ private: Handler(func), _result(static_cast<FloatResultNode &>(func.updateResult())) { } - virtual void handle(const ResultNode & arg); - virtual void handleFirst(const ResultNode & arg) { _result.set(arg.getFloat()); } + void handle(const ResultNode & arg) override; + void handleFirst(const ResultNode & arg) override { _result.set(arg.getFloat()); } protected: FloatResultNode & _result; }; @@ -101,8 +100,8 @@ private: Handler(func), _result(static_cast<StringResultNode &>(func.updateResult())) { } - virtual void handle(const ResultNode & arg); - virtual void handleFirst(const ResultNode & arg) { + void handle(const ResultNode & arg) override; + void handleFirst(const ResultNode & arg) override { char buf[32]; vespalib::ConstBufferRef b = arg.getString(vespalib::BufferRef(buf, sizeof(buf))); _result.set(vespalib::stringref(b.c_str(), b.size())); @@ -117,8 +116,8 @@ private: Handler(func), _result(static_cast<RawResultNode &>(func.updateResult())) { } - virtual void handle(const ResultNode & arg); - virtual void handleFirst(const ResultNode & arg) { + void handle(const ResultNode & arg) override; + void handleFirst(const ResultNode & arg) override { char buf[32]; vespalib::ConstBufferRef b = arg.getString(vespalib::BufferRef(buf, sizeof(buf))); _result.setBuffer(b.data(), b.size()); @@ -135,8 +134,8 @@ private: { _initial.set(*func.getInitialValue()); } - virtual void handle(const ResultNode & arg); - virtual void handleFirst(const ResultNode & arg) { handle(arg); } + void handle(const ResultNode & arg) override; + void handleFirst(const ResultNode & arg) override { handle(arg); } private: Int64ResultNode _initial; }; @@ -149,8 +148,8 @@ private: { _initial.set(*func.getInitialValue()); } - virtual void handle(const ResultNode & arg); - virtual void handleFirst(const ResultNode & arg) { handle(arg); } + void handle(const ResultNode & arg) override; + void handleFirst(const ResultNode & arg) override { handle(arg); } private: FloatResultNode _initial; }; @@ -163,16 +162,15 @@ private: { _initial.set(*func.getInitialValue()); } - virtual void handle(const ResultNode & arg); - virtual void handleFirst(const ResultNode & arg) { handle(arg); } + void handle(const ResultNode & arg) override; + void handleFirst(const ResultNode & arg) override { handle(arg); } private: StringResultNode _initial; }; - virtual bool onCalculate(const ExpressionNodeVector & args, ResultNode & result) const; + bool onCalculate(const ExpressionNodeVector & args, ResultNode & result) const override; std::unique_ptr<Handler> _handler; }; } } - diff --git a/searchlib/src/vespa/searchlib/expression/numericresultnode.h b/searchlib/src/vespa/searchlib/expression/numericresultnode.h index c7b16b58335..5e2d89b07af 100644 --- a/searchlib/src/vespa/searchlib/expression/numericresultnode.h +++ b/searchlib/src/vespa/searchlib/expression/numericresultnode.h @@ -12,7 +12,7 @@ public: DECLARE_ABSTRACT_EXPRESSIONNODE(NumericResultNode); typedef vespalib::IdentifiablePtr<NumericResultNode> CP; typedef std::unique_ptr<NumericResultNode> UP; - virtual NumericResultNode *clone() const = 0; + virtual NumericResultNode *clone() const override = 0; virtual void multiply(const ResultNode & b) = 0; virtual void divide(const ResultNode & b) = 0; virtual void modulo(const ResultNode & b) = 0; diff --git a/searchlib/src/vespa/searchlib/expression/orfunctionnode.h b/searchlib/src/vespa/searchlib/expression/orfunctionnode.h index 3b374ffdc54..b168ff14dd9 100644 --- a/searchlib/src/vespa/searchlib/expression/orfunctionnode.h +++ b/searchlib/src/vespa/searchlib/expression/orfunctionnode.h @@ -1,7 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/expression/bitfunctionnode.h> +#include "bitfunctionnode.h" namespace search { namespace expression { @@ -12,11 +12,10 @@ public: DECLARE_EXPRESSIONNODE(OrFunctionNode); OrFunctionNode() { } private: - virtual ResultNode::CP getInitialValue() const { return ResultNode::CP(new Int64ResultNode(0)); } - virtual ResultNode & flatten(const ResultNodeVector & v, ResultNode & result) const { return v.flattenOr(result); } - virtual void onArgument(const ResultNode & arg, Int64ResultNode & result) const; + ResultNode::CP getInitialValue() const override { return ResultNode::CP(new Int64ResultNode(0)); } + ResultNode & flatten(const ResultNodeVector & v, ResultNode & result) const override { return v.flattenOr(result); } + void onArgument(const ResultNode & arg, Int64ResultNode & result) const override; }; } } - diff --git a/searchlib/src/vespa/searchlib/expression/positiveinfinityresultnode.h b/searchlib/src/vespa/searchlib/expression/positiveinfinityresultnode.h index 94b8a7cef5f..2a14d26f8f3 100644 --- a/searchlib/src/vespa/searchlib/expression/positiveinfinityresultnode.h +++ b/searchlib/src/vespa/searchlib/expression/positiveinfinityresultnode.h @@ -1,7 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/expression/singleresultnode.h> +#include "singleresultnode.h" namespace search { namespace expression { @@ -10,19 +10,19 @@ class PositiveInfinityResultNode : public SingleResultNode { public: DECLARE_EXPRESSIONNODE(PositiveInfinityResultNode); - virtual size_t hash() const; - virtual int onCmp(const Identifiable & b) const; - virtual void set(const ResultNode & rhs); - virtual void min(const ResultNode & b); - virtual void max(const ResultNode & b); - virtual void add(const ResultNode & b); + size_t hash() const override; + int onCmp(const Identifiable & b) const override; + void set(const ResultNode & rhs) override; + void min(const ResultNode & b) override; + void max(const ResultNode & b) override; + void add(const ResultNode & b) override; private: - virtual void setMin(); - virtual void setMax(); - virtual int64_t onGetInteger(size_t index) const; - virtual double onGetFloat(size_t index) const; - virtual ConstBufferRef onGetString(size_t index, BufferRef buf) const; - virtual size_t onGetRawByteSize() const { return 0; } + void setMin() override; + void setMax() override; + int64_t onGetInteger(size_t index) const override; + double onGetFloat(size_t index) const override; + ConstBufferRef onGetString(size_t index, BufferRef buf) const override; + size_t onGetRawByteSize() const override { return 0; } }; } diff --git a/searchlib/src/vespa/searchlib/expression/rangebucketpredef.h b/searchlib/src/vespa/searchlib/expression/rangebucketpredef.h index 06a4a9e2b52..3de4ea77530 100644 --- a/searchlib/src/vespa/searchlib/expression/rangebucketpredef.h +++ b/searchlib/src/vespa/searchlib/expression/rangebucketpredef.h @@ -13,9 +13,9 @@ namespace expression { class RangeBucketPreDefFunctionNode : public UnaryFunctionNode { private: - virtual void onPrepareResult(); - virtual bool onExecute() const; - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; + void onPrepareResult() override; + bool onExecute() const override; + void visitMembers(vespalib::ObjectVisitor &visitor) const override; class Handler { public: @@ -31,7 +31,7 @@ private: SingleValueHandler(const RangeBucketPreDefFunctionNode & rangeNode) : Handler(rangeNode) { } - virtual const ResultNode * handle(const ResultNode & arg); + const ResultNode * handle(const ResultNode & arg) override; }; class MultiValueHandler : public Handler { public: @@ -39,7 +39,7 @@ private: Handler(rangeNode), _result(static_cast<ResultNodeVector &>(rangeNode.updateResult())) { } - virtual const ResultNode * handle(const ResultNode & arg); + const ResultNode * handle(const ResultNode & arg) override; private: ResultNodeVector & _result; }; @@ -61,7 +61,7 @@ public: RangeBucketPreDefFunctionNode(ExpressionNode::UP arg) : UnaryFunctionNode(std::move(arg)), _predef(), _result(NULL), _nullResult(NULL) {} RangeBucketPreDefFunctionNode(const RangeBucketPreDefFunctionNode & rhs); RangeBucketPreDefFunctionNode & operator = (const RangeBucketPreDefFunctionNode & rhs); - virtual const ResultNode & getResult() const { return *_result; } + const ResultNode & getResult() const override { return *_result; } const ResultNodeVector & getBucketList() const { return *_predef; } ResultNodeVector & getBucketList() { return *_predef; } RangeBucketPreDefFunctionNode & setBucketList(const ResultNodeVector & predef) { @@ -72,4 +72,3 @@ public: } } - diff --git a/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.h b/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.h index 0587d0679d4..1206e72bbc1 100644 --- a/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.h +++ b/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.h @@ -13,7 +13,7 @@ private: ResultNode::CP _from; ResultNode::CP _to; static RawBucketResultNode _nullResult; - virtual size_t onGetRawByteSize() const { return sizeof(_from) + sizeof(_to); } + size_t onGetRawByteSize() const override { return sizeof(_from) + sizeof(_to); } public: struct GetValue { BufferRef _tmp; @@ -24,12 +24,12 @@ public: DECLARE_NBO_SERIALIZE; RawBucketResultNode() : _from(new RawResultNode()), _to(new RawResultNode()) {} RawBucketResultNode(ResultNode::UP from, ResultNode::UP to) : _from(from.release()), _to(to.release()) {} - virtual size_t hash() const; - virtual int onCmp(const Identifiable & b) const; + size_t hash() const override; + int onCmp(const Identifiable & b) const override; int contains(const RawBucketResultNode & b) const; int contains(const ConstBufferRef & v) const; - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; - virtual const RawBucketResultNode& getNullBucket() const override { return getNull(); } + void visitMembers(vespalib::ObjectVisitor &visitor) const override; + const RawBucketResultNode& getNullBucket() const override { return getNull(); } static const RawBucketResultNode & getNull() { return _nullResult; } }; diff --git a/searchlib/src/vespa/searchlib/expression/rawresultnode.h b/searchlib/src/vespa/searchlib/expression/rawresultnode.h index 239f8f1cdae..931a67bd2d9 100644 --- a/searchlib/src/vespa/searchlib/expression/rawresultnode.h +++ b/searchlib/src/vespa/searchlib/expression/rawresultnode.h @@ -1,7 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/expression/singleresultnode.h> +#include "singleresultnode.h" namespace search { namespace expression { @@ -12,22 +12,22 @@ public: DECLARE_EXPRESSIONNODE(RawResultNode); DECLARE_NBO_SERIALIZE; DECLARE_RESULTNODE_SERIALIZE; - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; + void visitMembers(vespalib::ObjectVisitor &visitor) const override; RawResultNode() : _value(1) { setBuffer("", 0); } RawResultNode(const void * buf, size_t sz) { setBuffer(buf, sz); } - virtual int onCmp(const Identifiable & b) const; - virtual size_t hash() const; - virtual void set(const ResultNode & rhs); + int onCmp(const Identifiable & b) const override; + size_t hash() const override; + void set(const ResultNode & rhs) override; void setBuffer(const void * buf, size_t sz); ConstBufferRef get() const { return ConstBufferRef(&_value[0], _value.size()); } - virtual void min(const ResultNode & b); - virtual void max(const ResultNode & b); - virtual void add(const ResultNode & b); - virtual void negate(); - virtual const BucketResultNode& getNullBucket() const override; + void min(const ResultNode & b) override; + void max(const ResultNode & b) override; + void add(const ResultNode & b) override; + void negate() override; + const BucketResultNode& getNullBucket() const override; private: typedef std::vector<uint8_t> V; - virtual int cmpMem(const void * a, const void *b) const { + int cmpMem(const void * a, const void *b) const override { const V & ai(*static_cast<const V *>(a)); const V & bi(*static_cast<const V *>(b)); int result = memcmp(&ai[0], &bi[0], std::min(ai.size(), bi.size())); @@ -36,16 +36,16 @@ private: } return result; } - virtual void decode(const void * buf) { _value = *static_cast<const V *>(buf); } - virtual void encode(void * buf) const { *static_cast<V *>(buf) = _value; } - virtual size_t hash(const void * buf) const; + void decode(const void * buf) override { _value = *static_cast<const V *>(buf); } + void encode(void * buf) const override { *static_cast<V *>(buf) = _value; } + size_t hash(const void * buf) const override; - virtual size_t onGetRawByteSize() const { return sizeof(_value); } - virtual void setMin(); - virtual void setMax(); - virtual int64_t onGetInteger(size_t index) const; - virtual double onGetFloat(size_t index) const; - virtual ConstBufferRef onGetString(size_t index, BufferRef buf) const; + size_t onGetRawByteSize() const override { return sizeof(_value); } + void setMin() override; + void setMax() override; + int64_t onGetInteger(size_t index) const override; + double onGetFloat(size_t index) const override; + ConstBufferRef onGetString(size_t index, BufferRef buf) const override; V _value; }; diff --git a/searchlib/src/vespa/searchlib/expression/relevancenode.h b/searchlib/src/vespa/searchlib/expression/relevancenode.h index 8165f87957b..386913f700e 100644 --- a/searchlib/src/vespa/searchlib/expression/relevancenode.h +++ b/searchlib/src/vespa/searchlib/expression/relevancenode.h @@ -12,12 +12,12 @@ public: DECLARE_NBO_SERIALIZE; DECLARE_EXPRESSIONNODE(RelevanceNode); RelevanceNode() : ExpressionNode(), _relevance() { } - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; - virtual const ResultNode & getResult() const { return _relevance; } + void visitMembers(vespalib::ObjectVisitor &visitor) const override; + const ResultNode & getResult() const override { return _relevance; } void setRelevance(double relevance) { _relevance.set(relevance); } private: - virtual void onPrepare(bool preserveAccurateTypes) { (void) preserveAccurateTypes; } - virtual bool onExecute() const { return true; } + void onPrepare(bool preserveAccurateTypes) override { (void) preserveAccurateTypes; } + bool onExecute() const override { return true; } FloatResultNode _relevance; }; diff --git a/searchlib/src/vespa/searchlib/expression/resultnode.h b/searchlib/src/vespa/searchlib/expression/resultnode.h index edd76bdcbfa..6343e90dc6b 100644 --- a/searchlib/src/vespa/searchlib/expression/resultnode.h +++ b/searchlib/src/vespa/searchlib/expression/resultnode.h @@ -16,15 +16,15 @@ class BucketResultNode; #define DECLARE_RESULTNODE(Class) \ DECLARE_IDENTIFIABLE_NS2(search, expression, Class) \ - virtual Class * clone() const; + Class * clone() const override; #define DECLARE_RESULTNODE_NS1(ns, Class) \ DECLARE_IDENTIFIABLE_NS3(search, expression, ns, Class) \ - virtual Class * clone() const; + virtual Class * clone() const override; #define DECLARE_RESULTNODE_SERIALIZE \ - virtual ResultSerializer & onSerializeResult(ResultSerializer & os) const; \ - virtual ResultDeserializer & onDeserializeResult(ResultDeserializer & is); + ResultSerializer & onSerializeResult(ResultSerializer & os) const override; \ + ResultDeserializer & onDeserializeResult(ResultDeserializer & is) override; #define IMPLEMENT_ABSTRACT_RESULTNODE(Class, base) IMPLEMENT_IDENTIFIABLE_ABSTRACT_NS2(search, expression, Class, base) diff --git a/searchlib/src/vespa/searchlib/expression/resultvector.h b/searchlib/src/vespa/searchlib/expression/resultvector.h index 7eaa268682a..9d6b409449e 100644 --- a/searchlib/src/vespa/searchlib/expression/resultvector.h +++ b/searchlib/src/vespa/searchlib/expression/resultvector.h @@ -49,8 +49,8 @@ public: virtual void add(const ResultNode & b) { (void) b; } private: virtual size_t onSize() const = 0; - virtual void set(const ResultNode & rhs) { (void) rhs; } - virtual bool isMultiValue() const { return true; } + void set(const ResultNode & rhs) override { (void) rhs; } + bool isMultiValue() const override { return true; } }; template <typename B> @@ -82,26 +82,26 @@ public: using BaseType = B; const Vector & getVector() const { return _result; } Vector & getVector() { return _result; } - virtual const ResultNode * find(const ResultNode & key) const; - virtual void sort(); - virtual void reverse(); - virtual ResultNodeVector & push_back(const ResultNode & node); - virtual ResultNodeVector & push_back_safe(const ResultNode & node); - virtual ResultNodeVector & set(size_t index, const ResultNode & node); - virtual const ResultNode & get(size_t index) const { return _result[index]; } - virtual ResultNode & get(size_t index) { return _result[index]; } - virtual void clear() { _result.clear(); } - virtual void resize(size_t sz) { _result.resize(sz); } - virtual void negate(); + const ResultNode * find(const ResultNode & key) const override; + void sort() override; + void reverse() override; + ResultNodeVector & push_back(const ResultNode & node) override; + ResultNodeVector & push_back_safe(const ResultNode & node) override; + ResultNodeVector & set(size_t index, const ResultNode & node) override; + const ResultNode & get(size_t index) const override { return _result[index]; } + ResultNode & get(size_t index) override { return _result[index]; } + void clear() override { _result.clear(); } + void resize(size_t sz) override { _result.resize(sz); } + void negate() override; private: - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const { visit(visitor, "Vector", _result); } - virtual size_t onSize() const { return _result.size(); } - virtual const vespalib::Identifiable::RuntimeClass & getBaseClass() const { return B::_RTClass; } - virtual int64_t onGetInteger(size_t index) const { return _result[index].getInteger(index); } - virtual double onGetFloat(size_t index) const { return _result[index].getFloat(index); } - virtual ConstBufferRef onGetString(size_t index, BufferRef buf) const { return _result[index].getString(index, buf); } - virtual size_t hash() const; - virtual int onCmp(const Identifiable & b) const; + void visitMembers(vespalib::ObjectVisitor &visitor) const override { visit(visitor, "Vector", _result); } + size_t onSize() const override { return _result.size(); } + const vespalib::Identifiable::RuntimeClass & getBaseClass() const override { return B::_RTClass; } + int64_t onGetInteger(size_t index) const override { return _result[index].getInteger(index); } + double onGetFloat(size_t index) const override { return _result[index].getFloat(index); } + ConstBufferRef onGetString(size_t index, BufferRef buf) const override { return _result[index].getString(index, buf); } + size_t hash() const override; + int onCmp(const Identifiable & b) const override; Vector _result; }; @@ -215,7 +215,7 @@ template <typename B> class NumericResultNodeVectorT : public ResultNodeVectorT<B, cmpT<ResultNode>, std::_Identity<ResultNode> > { public: - virtual ResultNode & flattenMultiply(ResultNode & r) const { + ResultNode & flattenMultiply(ResultNode & r) const override { B v; v.set(r); const std::vector<B> & vec(this->getVector()); @@ -225,7 +225,7 @@ public: r.set(v); return r; } - virtual ResultNode & flattenAnd(ResultNode & r) const { + ResultNode & flattenAnd(ResultNode & r) const override { Int64ResultNode v; v.set(r); const std::vector<B> & vec(this->getVector()); @@ -235,7 +235,7 @@ public: r.set(v); return r; } - virtual ResultNode & flattenOr(ResultNode & r) const { + ResultNode & flattenOr(ResultNode & r) const override { Int64ResultNode v; v.set(r); const std::vector<B> & vec(this->getVector()); @@ -245,7 +245,7 @@ public: r.set(v); return r; } - virtual ResultNode & flattenXor(ResultNode & r) const { + ResultNode & flattenXor(ResultNode & r) const override { Int64ResultNode v; v.set(r); const std::vector<B> & vec(this->getVector()); @@ -255,7 +255,7 @@ public: r.set(v); return r; } - virtual ResultNode & flattenSum(ResultNode & r) const { + ResultNode & flattenSum(ResultNode & r) const override { B v; v.set(r); const std::vector<B> & vec(this->getVector()); @@ -265,7 +265,7 @@ public: r.set(v); return r; } - virtual ResultNode & flattenMax(ResultNode & r) const { + ResultNode & flattenMax(ResultNode & r) const override { B v; v.set(r); const std::vector<B> & vec(this->getVector()); @@ -275,7 +275,7 @@ public: r.set(v); return r; } - virtual ResultNode & flattenMin(ResultNode & r) const { + ResultNode & flattenMin(ResultNode & r) const override { B v; v.set(r); const std::vector<B> & vec(this->getVector()); @@ -294,7 +294,7 @@ public: Int8ResultNodeVector() { } DECLARE_RESULTNODE(Int8ResultNodeVector); - virtual const IntegerBucketResultNode& getNullBucket() const override { return IntegerBucketResultNode::getNull(); } + const IntegerBucketResultNode& getNullBucket() const override { return IntegerBucketResultNode::getNull(); } }; class Int16ResultNodeVector : public NumericResultNodeVectorT<Int16ResultNode> @@ -303,7 +303,7 @@ public: Int16ResultNodeVector() { } DECLARE_RESULTNODE(Int16ResultNodeVector); - virtual const IntegerBucketResultNode& getNullBucket() const override { return IntegerBucketResultNode::getNull(); } + const IntegerBucketResultNode& getNullBucket() const override { return IntegerBucketResultNode::getNull(); } }; class Int32ResultNodeVector : public NumericResultNodeVectorT<Int32ResultNode> @@ -312,7 +312,7 @@ public: Int32ResultNodeVector() { } DECLARE_RESULTNODE(Int32ResultNodeVector); - virtual const IntegerBucketResultNode& getNullBucket() const override { return IntegerBucketResultNode::getNull(); } + const IntegerBucketResultNode& getNullBucket() const override { return IntegerBucketResultNode::getNull(); } }; class Int64ResultNodeVector : public NumericResultNodeVectorT<Int64ResultNode> @@ -321,7 +321,7 @@ public: Int64ResultNodeVector() { } DECLARE_RESULTNODE(Int64ResultNodeVector); - virtual const IntegerBucketResultNode& getNullBucket() const override { return IntegerBucketResultNode::getNull(); } + const IntegerBucketResultNode& getNullBucket() const override { return IntegerBucketResultNode::getNull(); } }; typedef Int64ResultNodeVector IntegerResultNodeVector; @@ -339,7 +339,7 @@ public: FloatResultNodeVector() { } DECLARE_RESULTNODE(FloatResultNodeVector); - virtual const FloatBucketResultNode& getNullBucket() const override { return FloatBucketResultNode::getNull(); } + const FloatBucketResultNode& getNullBucket() const override { return FloatBucketResultNode::getNull(); } }; class StringResultNodeVector : public ResultNodeVectorT<StringResultNode, cmpT<ResultNode>, std::_Identity<ResultNode> > @@ -348,7 +348,7 @@ public: StringResultNodeVector() { } DECLARE_RESULTNODE(StringResultNodeVector); - virtual const StringBucketResultNode& getNullBucket() const override { return StringBucketResultNode::getNull(); } + const StringBucketResultNode& getNullBucket() const override { return StringBucketResultNode::getNull(); } }; class RawResultNodeVector : public ResultNodeVectorT<RawResultNode, cmpT<ResultNode>, std::_Identity<ResultNode> > @@ -357,7 +357,7 @@ public: RawResultNodeVector() { } DECLARE_RESULTNODE(RawResultNodeVector); - virtual const RawBucketResultNode& getNullBucket() const override { return RawBucketResultNode::getNull(); } + const RawBucketResultNode& getNullBucket() const override { return RawBucketResultNode::getNull(); } }; class IntegerBucketResultNodeVector : public ResultNodeVectorT<IntegerBucketResultNode, contains<IntegerBucketResultNode, int64_t>, GetInteger > @@ -392,20 +392,20 @@ class GeneralResultNodeVector : public ResultNodeVector { public: DECLARE_EXPRESSIONNODE(GeneralResultNodeVector); - virtual const ResultNode * find(const ResultNode & key) const; - virtual ResultNodeVector & push_back(const ResultNode & node) { _v.push_back(node); return *this; } - virtual ResultNodeVector & push_back_safe(const ResultNode & node) { _v.push_back(node); return *this; } - virtual const ResultNode & get(size_t index) const { return *_v[index]; }; - virtual ResultNodeVector & set(size_t index, const ResultNode & node) { _v[index] = node; return *this; } - virtual ResultNode & get(size_t index) { return *_v[index]; } - virtual void clear() { _v.clear(); } - virtual void resize(size_t sz) { _v.resize(sz); } + const ResultNode * find(const ResultNode & key) const override; + ResultNodeVector & push_back(const ResultNode & node) override { _v.push_back(node); return *this; } + ResultNodeVector & push_back_safe(const ResultNode & node) override { _v.push_back(node); return *this; } + const ResultNode & get(size_t index) const override { return *_v[index]; }; + ResultNodeVector & set(size_t index, const ResultNode & node) override { _v[index] = node; return *this; } + ResultNode & get(size_t index) override { return *_v[index]; } + void clear() override { _v.clear(); } + void resize(size_t sz) override { _v.resize(sz); } private: - virtual int64_t onGetInteger(size_t index) const { return _v[index]->getInteger(index); } - virtual double onGetFloat(size_t index) const { return _v[index]->getFloat(index); } - virtual ConstBufferRef onGetString(size_t index, BufferRef buf) const { return _v[index]->getString(index, buf); } - virtual size_t hash() const; - virtual size_t onSize() const { return _v.size(); } + int64_t onGetInteger(size_t index) const override { return _v[index]->getInteger(index); } + double onGetFloat(size_t index) const override { return _v[index]->getFloat(index); } + ConstBufferRef onGetString(size_t index, BufferRef buf) const override { return _v[index]->getString(index, buf); } + size_t hash() const override; + size_t onSize() const override { return _v.size(); } std::vector<ResultNode::CP> _v; }; diff --git a/searchlib/src/vespa/searchlib/expression/singleresultnode.h b/searchlib/src/vespa/searchlib/expression/singleresultnode.h index c0d50559ca5..090fa26b433 100644 --- a/searchlib/src/vespa/searchlib/expression/singleresultnode.h +++ b/searchlib/src/vespa/searchlib/expression/singleresultnode.h @@ -1,7 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/expression/resultnode.h> +#include "resultnode.h" namespace search { namespace expression { @@ -13,7 +13,7 @@ public: DECLARE_ABSTRACT_RESULTNODE(SingleResultNode); typedef vespalib::IdentifiablePtr<SingleResultNode> CP; typedef std::unique_ptr<SingleResultNode> UP; - virtual SingleResultNode *clone() const = 0; + virtual SingleResultNode *clone() const override = 0; virtual void min(const ResultNode & b) = 0; virtual void max(const ResultNode & b) = 0; @@ -21,8 +21,8 @@ public: virtual void setMin() = 0; virtual void setMax() = 0; - virtual size_t getRawByteSize() const { return onGetRawByteSize(); } virtual size_t onGetRawByteSize() const = 0; + size_t getRawByteSize() const override { return onGetRawByteSize(); } }; } diff --git a/searchlib/src/vespa/searchlib/expression/strcatserializer.h b/searchlib/src/vespa/searchlib/expression/strcatserializer.h index 455e9828b40..989d8dc8773 100644 --- a/searchlib/src/vespa/searchlib/expression/strcatserializer.h +++ b/searchlib/src/vespa/searchlib/expression/strcatserializer.h @@ -1,9 +1,8 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once +#include "serializer.h" #include <vespa/vespalib/objects/asciiserializer.h> -#include <vespa/searchlib/expression/serializer.h> - namespace search { namespace expression { @@ -14,10 +13,10 @@ class StrCatSerializer : public vespalib::AsciiSerializer, public ResultSerializ { public: StrCatSerializer(vespalib::asciistream & stream) : vespalib::AsciiSerializer(stream) { } - virtual StrCatSerializer & put(const vespalib::IFieldBase & field, const vespalib::Identifiable & value); - virtual ResultSerializer & putResult(const vespalib::IFieldBase & field, const ResultNodeVector & value); - virtual ResultSerializer & putResult(const vespalib::IFieldBase & field, const RawResultNode & value); - virtual void proxyPut(const ResultNode & value); + 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; + void proxyPut(const ResultNode & value) override; }; } diff --git a/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.h b/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.h index 918cf06ec90..ea230000853 100644 --- a/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.h +++ b/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.h @@ -13,7 +13,7 @@ private: ResultNode::CP _from; ResultNode::CP _to; static StringBucketResultNode _nullResult; - virtual size_t onGetRawByteSize() const { return sizeof(_from) + sizeof(_to); } + size_t onGetRawByteSize() const override { return sizeof(_from) + sizeof(_to); } public: struct GetValue { BufferRef _tmp; @@ -25,18 +25,18 @@ public: StringBucketResultNode() : _from(new StringResultNode()), _to(new StringResultNode()) {} StringBucketResultNode(const vespalib::stringref & from, const vespalib::stringref & to) : _from(new StringResultNode(from)), _to(new StringResultNode(to)) {} StringBucketResultNode(ResultNode::UP from, ResultNode::UP to) : _from(from.release()), _to(to.release()) {} - virtual size_t hash() const; - virtual int onCmp(const Identifiable & b) const; + size_t hash() const override; + int onCmp(const Identifiable & b) const override; int contains(const StringBucketResultNode & b) const; int contains(const ConstBufferRef & v) const { return contains(v.c_str()); } int contains(const char * v) const; - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; + void visitMembers(vespalib::ObjectVisitor &visitor) const override; StringBucketResultNode &setRange(const vespalib::stringref & from, const vespalib::stringref & to) { _from.reset(new StringResultNode(from)); _to.reset(new StringResultNode(to)); return *this; } - virtual const StringBucketResultNode& getNullBucket() const override { return getNull(); } + const StringBucketResultNode& getNullBucket() const override { return getNull(); } static const StringBucketResultNode & getNull() { return _nullResult; } }; diff --git a/searchlib/src/vespa/searchlib/expression/stringresultnode.h b/searchlib/src/vespa/searchlib/expression/stringresultnode.h index b41372f34d4..f33c86434e4 100644 --- a/searchlib/src/vespa/searchlib/expression/stringresultnode.h +++ b/searchlib/src/vespa/searchlib/expression/stringresultnode.h @@ -1,7 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/expression/singleresultnode.h> +#include "singleresultnode.h" namespace search { namespace expression { @@ -11,40 +11,50 @@ class StringResultNode : public SingleResultNode public: DECLARE_EXPRESSIONNODE(StringResultNode); DECLARE_NBO_SERIALIZE; - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; + void visitMembers(vespalib::ObjectVisitor &visitor) const override; StringResultNode(const char * v="") : _value(v) { } StringResultNode(const vespalib::stringref & v) : _value(v) { } - virtual size_t hash() const; - virtual int onCmp(const Identifiable & b) const; - virtual void set(const ResultNode & rhs); + size_t hash() const override; + int onCmp(const Identifiable & b) const override; + void set(const ResultNode & rhs) override; StringResultNode & append(const ResultNode & rhs); StringResultNode & clear() { _value.clear(); return *this; } const vespalib::string & get() const { return _value; } void set(const vespalib::stringref & value) { _value = value; } - virtual void min(const ResultNode & b); - virtual void max(const ResultNode & b); - virtual void add(const ResultNode & b); - virtual void negate(); - virtual const BucketResultNode& getNullBucket() const override; + void min(const ResultNode & b) override; + void max(const ResultNode & b) override; + void add(const ResultNode & b) override; + void negate() override; + const BucketResultNode& getNullBucket() const override; private: - virtual int cmpMem(const void * a, const void *b) const { + int cmpMem(const void * a, const void *b) const override { return static_cast<const vespalib::string *>(a)->compare(*static_cast<const vespalib::string *>(b)); } - virtual void create(void * buf) const { new (buf) vespalib::string(); } - virtual void destroy(void * buf) const { static_cast<vespalib::string *>(buf)->vespalib::string::~string(); } - - virtual void decode(const void * buf) { _value = *static_cast<const vespalib::string *>(buf); } - virtual void encode(void * buf) const { *static_cast<vespalib::string *>(buf) = _value; } - virtual void swap(void * buf) { std::swap(*static_cast<vespalib::string *>(buf), _value); } - virtual size_t hash(const void * buf) const; - - virtual size_t onGetRawByteSize() const { return sizeof(_value); } - virtual void setMin(); - virtual void setMax(); - virtual int64_t onGetInteger(size_t index) const; - virtual double onGetFloat(size_t index) const; - virtual ConstBufferRef onGetString(size_t index, BufferRef buf) const; + void create(void * buf) const override { + new (buf) vespalib::string(); + } + void destroy(void * buf) const override { + static_cast<vespalib::string *>(buf)->vespalib::string::~string(); + } + + void decode(const void * buf) override { + _value = *static_cast<const vespalib::string *>(buf); + } + void encode(void * buf) const override { + *static_cast<vespalib::string *>(buf) = _value; + } + void swap(void * buf) override { + std::swap(*static_cast<vespalib::string *>(buf), _value); + } + size_t hash(const void * buf) const override; + + size_t onGetRawByteSize() const override { return sizeof(_value); } + void setMin() override; + void setMax() override; + int64_t onGetInteger(size_t index) const override; + double onGetFloat(size_t index) const override; + ConstBufferRef onGetString(size_t index, BufferRef buf) const override; vespalib::string _value; }; diff --git a/searchlib/src/vespa/searchlib/expression/unaryfunctionnode.h b/searchlib/src/vespa/searchlib/expression/unaryfunctionnode.h index ae1d58d95dd..bed6dd1537e 100644 --- a/searchlib/src/vespa/searchlib/expression/unaryfunctionnode.h +++ b/searchlib/src/vespa/searchlib/expression/unaryfunctionnode.h @@ -19,7 +19,7 @@ public: protected: const ExpressionNode & getArg() const { return MultiArgFunctionNode::getArg(0); } private: - virtual void onPrepareResult(); + void onPrepareResult() override; }; } diff --git a/searchlib/src/vespa/searchlib/expression/xorfunctionnode.h b/searchlib/src/vespa/searchlib/expression/xorfunctionnode.h index 117c55f69c8..ec64ca6d4d6 100644 --- a/searchlib/src/vespa/searchlib/expression/xorfunctionnode.h +++ b/searchlib/src/vespa/searchlib/expression/xorfunctionnode.h @@ -1,7 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/expression/bitfunctionnode.h> +#include "bitfunctionnode.h" namespace search { namespace expression { @@ -12,9 +12,9 @@ public: DECLARE_EXPRESSIONNODE(XorFunctionNode); XorFunctionNode() { } private: - virtual ResultNode::CP getInitialValue() const { return ResultNode::CP(new Int64ResultNode(0)); } - virtual ResultNode & flatten(const ResultNodeVector & v, ResultNode & result) const { return v.flattenXor(result); } - virtual void onArgument(const ResultNode & arg, Int64ResultNode & result) const; + ResultNode::CP getInitialValue() const override { return ResultNode::CP(new Int64ResultNode(0)); } + ResultNode & flatten(const ResultNodeVector & v, ResultNode & result) const override { return v.flattenXor(result); } + void onArgument(const ResultNode & arg, Int64ResultNode & result) const override; }; } diff --git a/searchlib/src/vespa/searchlib/features/agefeature.h b/searchlib/src/vespa/searchlib/features/agefeature.h index cb4827b9539..03e3910ec62 100644 --- a/searchlib/src/vespa/searchlib/features/agefeature.h +++ b/searchlib/src/vespa/searchlib/features/agefeature.h @@ -1,11 +1,9 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <string> -#include <vector> -#include <vespa/searchcommon/attribute/attributecontent.h> #include <vespa/searchlib/fef/blueprint.h> #include <vespa/searchlib/fef/featureexecutor.h> +#include <vespa/searchcommon/attribute/attributecontent.h> namespace search { namespace features { @@ -15,48 +13,33 @@ namespace features { * difference between document time (stored in an attribute) and current * system time **/ -class AgeExecutor : public search::fef::FeatureExecutor { +class AgeExecutor : public fef::FeatureExecutor { private: - const search::attribute::IAttributeVector *_attribute; - search::attribute::IntegerContent _buf; - + const attribute::IAttributeVector *_attribute; + attribute::IntegerContent _buf; public: - /** - * Constructs a new executor. - **/ - AgeExecutor(const search::attribute::IAttributeVector *attribute); - virtual void execute(uint32_t docId); + AgeExecutor(const attribute::IAttributeVector *attribute); + void execute(uint32_t docId) override; }; /** * Implements the blueprint for 'documentage' feature. It uses the 'now' feature * to get current time and reads document time from a specified attribute */ -class AgeBlueprint : public search::fef::Blueprint { +class AgeBlueprint : public fef::Blueprint { private: vespalib::string _attribute; public: - AgeBlueprint() : search::fef::Blueprint("age") { } - - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment &env, - search::fef::IDumpFeatureVisitor &) const; + AgeBlueprint() : fef::Blueprint("age") { } - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc().attribute(search::fef::ParameterCollection::ANY); + void visitDumpFeatures(const fef::IIndexEnvironment &env, fef::IDumpFeatureVisitor &) const override; + fef::Blueprint::UP createInstance() const override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc().attribute(fef::ParameterCollection::ANY); } - - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); + bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; }; } diff --git a/searchlib/src/vespa/searchlib/features/attributefeature.cpp b/searchlib/src/vespa/searchlib/features/attributefeature.cpp index a389ebcd058..2ca7572db62 100644 --- a/searchlib/src/vespa/searchlib/features/attributefeature.cpp +++ b/searchlib/src/vespa/searchlib/features/attributefeature.cpp @@ -3,13 +3,13 @@ #include "attributefeature.h" #include "utils.h" #include "valuefeature.h" +#include "constant_tensor_executor.h" +#include "dense_tensor_attribute_executor.h" +#include "tensor_attribute_executor.h" #include <vespa/searchcommon/common/undefinedvalues.h> #include <vespa/searchcommon/attribute/attributecontent.h> #include <vespa/searchlib/tensor/dense_tensor_attribute.h> -#include <vespa/searchlib/features/constant_tensor_executor.h> -#include <vespa/searchlib/features/dense_tensor_attribute_executor.h> -#include <vespa/searchlib/features/tensor_attribute_executor.h> #include <vespa/searchlib/fef/indexproperties.h> #include <vespa/searchlib/attribute/singlenumericattribute.h> @@ -106,7 +106,6 @@ template <typename T> class SingleAttributeExecutor : public fef::FeatureExecutor { private: const T & _attribute; - public: /** * Constructs an executor. @@ -114,9 +113,7 @@ public: * @param attribute The attribute vector to use. */ SingleAttributeExecutor(const T & attribute) : _attribute(attribute) { } - - // Inherit doc from FeatureExecutor. - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; class CountOnlyAttributeExecutor : public fef::FeatureExecutor { @@ -130,9 +127,7 @@ public: * @param attribute The attribute vector to use. */ CountOnlyAttributeExecutor(const attribute::IAttributeVector & attribute) : _attribute(attribute) { } - - // Inherit doc from FeatureExecutor. - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; /** * Implements the executor for fetching values from a single or array attribute vector @@ -154,9 +149,7 @@ public: * @param idx The index used for an array attribute. */ AttributeExecutor(const search::attribute::IAttributeVector * attribute, uint32_t idx); - - // Inherit doc from FeatureExecutor. - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; @@ -181,9 +174,7 @@ public: * @param useKey Whether we should consider the key. */ WeightedSetAttributeExecutor(const search::attribute::IAttributeVector * attribute, T key, bool useKey); - - // Inherit doc from FeatureExecutor. - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; template <typename T> diff --git a/searchlib/src/vespa/searchlib/features/attributefeature.h b/searchlib/src/vespa/searchlib/features/attributefeature.h index 034bb246c89..1056e3c8af6 100644 --- a/searchlib/src/vespa/searchlib/features/attributefeature.h +++ b/searchlib/src/vespa/searchlib/features/attributefeature.h @@ -9,48 +9,33 @@ namespace search { namespace features { - /** * Implements the blueprint for the attribute executor. * * An executor of this outputs number(s) if used with regular attributes * or a tensor value if used with tensor attributes. */ -class AttributeBlueprint : public search::fef::Blueprint { +class AttributeBlueprint : public fef::Blueprint { private: vespalib::string _attrName; // the name of the attribute vector vespalib::string _extra; // the index or key vespalib::eval::ValueType _tensorType; public: - /** - * Constructs a blueprint. - */ AttributeBlueprint(); - - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment & env, - search::fef::IDumpFeatureVisitor & visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions(). - desc().attribute(search::fef::ParameterCollection::ANY). - desc().attribute(search::fef::ParameterCollection::ANY).string(); + void visitDumpFeatures(const fef::IIndexEnvironment & env, fef::IDumpFeatureVisitor & visitor) const override; + + fef::Blueprint::UP createInstance() const override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + fef::ParameterDescriptions getDescriptions() const override{ + return fef::ParameterDescriptions(). + desc().attribute(fef::ParameterCollection::ANY). + desc().attribute(fef::ParameterCollection::ANY).string(); } - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); + bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; }; } // namespace features } // namespace search - diff --git a/searchlib/src/vespa/searchlib/features/attributematchfeature.h b/searchlib/src/vespa/searchlib/features/attributematchfeature.h index 284c5acb674..6d3c04a96ec 100644 --- a/searchlib/src/vespa/searchlib/features/attributematchfeature.h +++ b/searchlib/src/vespa/searchlib/features/attributematchfeature.h @@ -13,8 +13,8 @@ namespace features { struct AttributeMatchParams { AttributeMatchParams() : attrInfo(NULL), attribute(NULL), weightedSet(false), maxWeight(256), fieldCompletenessImportance(0.05f) {} - const search::fef::FieldInfo * attrInfo; - const search::attribute::IAttributeVector * attribute; + const fef::FieldInfo * attrInfo; + const attribute::IAttributeVector * attribute; bool weightedSet; // config values int32_t maxWeight; @@ -25,7 +25,7 @@ struct AttributeMatchParams { * Implements the executor for the attribute match feature. */ template <typename T> -class AttributeMatchExecutor : public search::fef::FeatureExecutor { +class AttributeMatchExecutor : public fef::FeatureExecutor { private: /** * This class is used to compute metrics for match in an attribute vector. @@ -54,8 +54,7 @@ private: const fef::MatchData *_md; public: - Computer(const search::fef::IQueryEnvironment & env, - AttributeMatchParams params); + Computer(const fef::IQueryEnvironment & env, AttributeMatchParams params); void run(uint32_t docId); void reset(); uint32_t getNumTerms() const { return _queryTerms.size(); } @@ -81,45 +80,30 @@ public: /** * Constructs an executor. */ - AttributeMatchExecutor(const search::fef::IQueryEnvironment & env, - AttributeMatchParams params); - - // Inherit doc from FeatureExecutor. - virtual void execute(uint32_t docId); + AttributeMatchExecutor(const fef::IQueryEnvironment & env, AttributeMatchParams params); + void execute(uint32_t docId) override; }; /** * Implements the blueprint for the attribute match executor. */ -class AttributeMatchBlueprint : public search::fef::Blueprint { +class AttributeMatchBlueprint : public fef::Blueprint { private: AttributeMatchParams _params; public: - /** - * Constructs a blueprint. - */ AttributeMatchBlueprint(); - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment & env, - search::fef::IDumpFeatureVisitor & visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc().attributeField(search::fef::ParameterCollection::ANY); + void visitDumpFeatures(const fef::IIndexEnvironment & env, fef::IDumpFeatureVisitor & visitor) const override; + fef::Blueprint::UP createInstance() const override; + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc().attributeField(fef::ParameterCollection::ANY); } - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); + bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; }; diff --git a/searchlib/src/vespa/searchlib/features/closenessfeature.h b/searchlib/src/vespa/searchlib/features/closenessfeature.h index b46c40d4619..9ef1afc5e72 100644 --- a/searchlib/src/vespa/searchlib/features/closenessfeature.h +++ b/searchlib/src/vespa/searchlib/features/closenessfeature.h @@ -2,9 +2,9 @@ #pragma once +#include "logarithmcalculator.h" #include <vespa/searchlib/fef/blueprint.h> #include <vespa/searchlib/fef/featureexecutor.h> -#include "logarithmcalculator.h" namespace search { namespace features { @@ -12,56 +12,38 @@ namespace features { /** * Implements the executor for the closeness feature. */ -class ClosenessExecutor : public search::fef::FeatureExecutor { +class ClosenessExecutor : public fef::FeatureExecutor { private: feature_t _maxDistance; LogarithmCalculator _logCalc; public: - /** - * Constructs an executor. - */ ClosenessExecutor(feature_t maxDistance, feature_t scaleDistance); - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; /** * Implements the blueprint for the closeness executor. */ -class ClosenessBlueprint : public search::fef::Blueprint { +class ClosenessBlueprint : public fef::Blueprint { private: feature_t _maxDistance; feature_t _scaleDistance; feature_t _halfResponse; public: - /** - * Constructs a blueprint. - */ - ClosenessBlueprint(); - - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment & env, - search::fef::IDumpFeatureVisitor & visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc().string(); + ClosenessBlueprint(); + void visitDumpFeatures(const fef::IIndexEnvironment & env, fef::IDumpFeatureVisitor & visitor) const override; + fef::Blueprint::UP createInstance() const override; + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc().string(); } - - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; }; } // namespace features } // namespace search - diff --git a/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.h b/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.h index 53eaf769e6b..fc4514273a5 100644 --- a/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.h +++ b/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.h @@ -23,7 +23,7 @@ private: public: DenseTensorAttributeExecutor(const search::tensor::DenseTensorAttribute *attribute); - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; } // namespace features diff --git a/searchlib/src/vespa/searchlib/features/distancefeature.h b/searchlib/src/vespa/searchlib/features/distancefeature.h index f56de5e6780..e8c30a43a72 100644 --- a/searchlib/src/vespa/searchlib/features/distancefeature.h +++ b/searchlib/src/vespa/searchlib/features/distancefeature.h @@ -13,11 +13,11 @@ namespace features { /** * Implements the executor for the distance feature. */ -class DistanceExecutor : public search::fef::FeatureExecutor { +class DistanceExecutor : public fef::FeatureExecutor { private: - const search::fef::Location & _location; - const search::attribute::IAttributeVector * _pos; - search::attribute::IntegerContent _intBuf; + const fef::Location & _location; + const attribute::IAttributeVector * _pos; + attribute::IntegerContent _intBuf; feature_t calculateDistance(uint32_t docId); feature_t calculate2DZDistance(uint32_t docId); @@ -29,9 +29,8 @@ public: * @param location the location object associated with the query environment. * @param pos the attribute to use for positions (expects zcurve encoding). */ - DistanceExecutor(const search::fef::Location & location, - const search::attribute::IAttributeVector * pos); - virtual void execute(uint32_t docId); + DistanceExecutor(const fef::Location & location, const attribute::IAttributeVector * pos); + void execute(uint32_t docId) override; static const feature_t DEFAULT_DISTANCE; }; @@ -39,34 +38,19 @@ public: /** * Implements the blueprint for the distance executor. */ -class DistanceBlueprint : public search::fef::Blueprint { +class DistanceBlueprint : public fef::Blueprint { private: vespalib::string _posAttr; public: - /** - * Constructs a blueprint for the distance executor. - */ DistanceBlueprint(); - - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment & env, - search::fef::IDumpFeatureVisitor & visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc().string(); + void visitDumpFeatures(const fef::IIndexEnvironment & env, fef::IDumpFeatureVisitor & visitor) const override; + fef::Blueprint::UP createInstance() const override; + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc().string(); } - - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; }; diff --git a/searchlib/src/vespa/searchlib/features/distancetopathfeature.h b/searchlib/src/vespa/searchlib/features/distancetopathfeature.h index 470f6c3ce2b..d6d9dfe88fa 100644 --- a/searchlib/src/vespa/searchlib/features/distancetopathfeature.h +++ b/searchlib/src/vespa/searchlib/features/distancetopathfeature.h @@ -20,11 +20,11 @@ struct Vector2 { /** * Implements the executor for the distance to path feature. */ -class DistanceToPathExecutor : public search::fef::FeatureExecutor { +class DistanceToPathExecutor : public fef::FeatureExecutor { private: - search::attribute::IntegerContent _intBuf; // Position value buffer. - std::vector<Vector2> _path; // Path given by query. - const search::attribute::IAttributeVector *_pos; // Position attribute. + attribute::IntegerContent _intBuf; // Position value buffer. + std::vector<Vector2> _path; // Path given by query. + const attribute::IAttributeVector *_pos; // Position attribute. public: /** @@ -34,8 +34,8 @@ public: * @param pos The attribute to use for positions (expects zcurve encoding). */ DistanceToPathExecutor(std::vector<Vector2> &path, - const search::attribute::IAttributeVector *pos); - virtual void execute(uint32_t docId); + const attribute::IAttributeVector *pos); + void execute(uint32_t docId) override; /** * Defines a default distance value to use if a proper one can not be determined. @@ -46,34 +46,20 @@ public: /** * Implements the blueprint for the distance to path feature. */ -class DistanceToPathBlueprint : public search::fef::Blueprint { +class DistanceToPathBlueprint : public fef::Blueprint { private: vespalib::string _posAttr; // Name of the position attribute. public: - /** - * Constructs a blueprint for the distance to path feature. - */ DistanceToPathBlueprint(); - - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment &env, - search::fef::IDumpFeatureVisitor &visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc().string(); + void visitDumpFeatures(const fef::IIndexEnvironment &env, fef::IDumpFeatureVisitor &visitor) const override; + fef::Blueprint::UP createInstance() const override; + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc().string(); } - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; }; diff --git a/searchlib/src/vespa/searchlib/features/element_completeness_feature.h b/searchlib/src/vespa/searchlib/features/element_completeness_feature.h index f0e38ef2046..5d8d5b8e125 100644 --- a/searchlib/src/vespa/searchlib/features/element_completeness_feature.h +++ b/searchlib/src/vespa/searchlib/features/element_completeness_feature.h @@ -14,29 +14,29 @@ struct ElementCompletenessParams { uint32_t fieldId; feature_t fieldCompletenessImportance; ElementCompletenessParams() - : fieldId(search::fef::IllegalFieldId), + : fieldId(fef::IllegalFieldId), fieldCompletenessImportance(0.5) {} }; //----------------------------------------------------------------------------- -class ElementCompletenessExecutor : public search::fef::FeatureExecutor +class ElementCompletenessExecutor : public fef::FeatureExecutor { private: struct Term { - search::fef::TermFieldHandle termHandle; + fef::TermFieldHandle termHandle; int termWeight; - Term(search::fef::TermFieldHandle handle, int weight) + Term(fef::TermFieldHandle handle, int weight) : termHandle(handle), termWeight(weight) {} }; struct Item { uint32_t termIdx; - search::fef::TermFieldMatchData::PositionsIterator pos; - search::fef::TermFieldMatchData::PositionsIterator end; + fef::TermFieldMatchData::PositionsIterator pos; + fef::TermFieldMatchData::PositionsIterator end; Item(uint32_t idx, - search::fef::TermFieldMatchData::PositionsIterator p, - search::fef::TermFieldMatchData::PositionsIterator e) + fef::TermFieldMatchData::PositionsIterator p, + fef::TermFieldMatchData::PositionsIterator e) : termIdx(idx), pos(p), end(e) {} bool operator<(const Item &other) const { return (pos->getElementId() < other.pos->getElementId()); @@ -82,18 +82,18 @@ private: static bool nextElement(Item &item); - virtual void handle_bind_match_data(fef::MatchData &md) override; + void handle_bind_match_data(fef::MatchData &md) override; public: - ElementCompletenessExecutor(const search::fef::IQueryEnvironment &env, + ElementCompletenessExecutor(const fef::IQueryEnvironment &env, const ElementCompletenessParams ¶ms); - virtual bool isPure() { return _terms.empty(); } - virtual void execute(uint32_t docId); + bool isPure() override { return _terms.empty(); } + void execute(uint32_t docId) override; }; //----------------------------------------------------------------------------- -class ElementCompletenessBlueprint : public search::fef::Blueprint +class ElementCompletenessBlueprint : public fef::Blueprint { private: std::vector<vespalib::string> _output; @@ -102,24 +102,16 @@ private: public: ElementCompletenessBlueprint(); - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment & env, - search::fef::IDumpFeatureVisitor & visitor) const; + void visitDumpFeatures(const fef::IIndexEnvironment & env, fef::IDumpFeatureVisitor & visitor) const override; - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc().indexField(search::fef::ParameterCollection::ANY); + fef::Blueprint::UP createInstance() const override; + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc().indexField(fef::ParameterCollection::ANY); } - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment &env, - const search::fef::ParameterList ¶ms); + bool setup(const fef::IIndexEnvironment &env, const fef::ParameterList ¶ms) override; - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; // for testing const ElementCompletenessParams &getParams() const { return _params; } diff --git a/searchlib/src/vespa/searchlib/features/element_similarity_feature.cpp b/searchlib/src/vespa/searchlib/features/element_similarity_feature.cpp index 39ecfe6447a..5eb1fc24859 100644 --- a/searchlib/src/vespa/searchlib/features/element_similarity_feature.cpp +++ b/searchlib/src/vespa/searchlib/features/element_similarity_feature.cpp @@ -1,12 +1,12 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/fastos/fastos.h> -#include <vespa/log/log.h> -LOG_SETUP(".features.elementsimilarity"); #include "element_similarity_feature.h" #include <vespa/eval/eval/llvm/compiled_function.h> #include <vespa/eval/eval/llvm/compile_cache.h> +#include <vespa/log/log.h> +LOG_SETUP(".features.elementsimilarity"); + namespace search { namespace features { @@ -27,29 +27,29 @@ struct MaxAggregator : Aggregator { size_t count; double value; MaxAggregator() : count(0), value(0.0) {} - virtual UP create() const override { return UP(new MaxAggregator()); } - virtual void clear() override { count = 0; value = 0.0; } - virtual void add(double v) override { value = ((++count == 1) || (v > value)) ? v : value; } - virtual double get() const override { return value; } + UP create() const override { return UP(new MaxAggregator()); } + void clear() override { count = 0; value = 0.0; } + void add(double v) override { value = ((++count == 1) || (v > value)) ? v : value; } + double get() const override { return value; } }; struct AvgAggregator : Aggregator { size_t count; double value; AvgAggregator() : count(0), value(0.0) {} - virtual UP create() const override { return UP(new AvgAggregator()); } - virtual void clear() override { count = 0; value = 0.0; } - virtual void add(double v) override { ++count; value += v; } - virtual double get() const override { return (count == 0) ? 0.0 : (value/count); } + UP create() const override { return UP(new AvgAggregator()); } + void clear() override { count = 0; value = 0.0; } + void add(double v) override { ++count; value += v; } + double get() const override { return (count == 0) ? 0.0 : (value/count); } }; struct SumAggregator : Aggregator { double value; SumAggregator() : value(0.0) {} - virtual UP create() const override { return UP(new SumAggregator()); } - virtual void clear() override { value = 0.0; } - virtual void add(double v) override { value += v; } - virtual double get() const override { return value; } + UP create() const override { return UP(new SumAggregator()); } + void clear() override { value = 0.0; } + void add(double v) override { value += v; } + double get() const override { return value; } }; Aggregator::UP create_aggregator(const vespalib::string &name) { @@ -225,9 +225,9 @@ public: _md(nullptr) {} - virtual bool isPure() { return _terms.handles.empty(); } + bool isPure() override { return _terms.handles.empty(); } - virtual void handle_bind_match_data(fef::MatchData &md) override { + void handle_bind_match_data(fef::MatchData &md) override { _md = &md; } @@ -242,7 +242,7 @@ public: } } - virtual void execute(uint32_t docId) { + void execute(uint32_t docId) override { for (auto &output: _outputs) { output.second->clear(); } diff --git a/searchlib/src/vespa/searchlib/features/element_similarity_feature.h b/searchlib/src/vespa/searchlib/features/element_similarity_feature.h index 16f36ab051d..f1cde7ef7d4 100644 --- a/searchlib/src/vespa/searchlib/features/element_similarity_feature.h +++ b/searchlib/src/vespa/searchlib/features/element_similarity_feature.h @@ -2,8 +2,6 @@ #pragma once -#include <string> -#include <vector> #include <vespa/searchlib/fef/fef.h> #include <vespa/vespalib/util/priority_queue.h> @@ -12,7 +10,7 @@ namespace features { //----------------------------------------------------------------------------- -class ElementSimilarityBlueprint : public search::fef::Blueprint +class ElementSimilarityBlueprint : public fef::Blueprint { private: struct OutputContext; @@ -23,18 +21,17 @@ private: public: ElementSimilarityBlueprint(); - virtual ~ElementSimilarityBlueprint(); - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment &env, - search::fef::IDumpFeatureVisitor &visitor) const; - virtual search::fef::Blueprint::UP createInstance() const { + ~ElementSimilarityBlueprint(); + void visitDumpFeatures(const fef::IIndexEnvironment &env, + fef::IDumpFeatureVisitor &visitor) const override; + fef::Blueprint::UP createInstance() const override { return Blueprint::UP(new ElementSimilarityBlueprint()); } - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc().indexField(search::fef::ParameterCollection::ANY); + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc().indexField(fef::ParameterCollection::ANY); } - virtual bool setup(const search::fef::IIndexEnvironment &env, - const search::fef::ParameterList ¶ms); - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + bool setup(const fef::IIndexEnvironment &env, const fef::ParameterList ¶ms) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; }; //----------------------------------------------------------------------------- diff --git a/searchlib/src/vespa/searchlib/features/fieldinfofeature.h b/searchlib/src/vespa/searchlib/features/fieldinfofeature.h index 3d507df4ec3..3e5227a3349 100644 --- a/searchlib/src/vespa/searchlib/features/fieldinfofeature.h +++ b/searchlib/src/vespa/searchlib/features/fieldinfofeature.h @@ -2,8 +2,6 @@ #pragma once -#include <string> -#include <vector> #include <vespa/searchlib/fef/blueprint.h> #include <vespa/searchlib/fef/featureexecutor.h> #include <vespa/searchlib/common/feature.h> @@ -11,7 +9,7 @@ namespace search { namespace features { -class IndexFieldInfoExecutor : public search::fef::FeatureExecutor +class IndexFieldInfoExecutor : public fef::FeatureExecutor { private: feature_t _type; // from index env @@ -20,33 +18,33 @@ private: uint32_t _fieldHandle; const fef::MatchData *_md; - virtual void handle_bind_match_data(fef::MatchData &md) override; + void handle_bind_match_data(fef::MatchData &md) override; public: IndexFieldInfoExecutor(feature_t type, feature_t isFilter, uint32_t field, uint32_t fieldHandle); - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; //----------------------------------------------------------------------------- -class AttrFieldInfoExecutor : public search::fef::FeatureExecutor +class AttrFieldInfoExecutor : public fef::FeatureExecutor { private: feature_t _type; // from index env uint32_t _fieldHandle; const fef::MatchData *_md; - virtual void handle_bind_match_data(fef::MatchData &md) override; + void handle_bind_match_data(fef::MatchData &md) override; public: AttrFieldInfoExecutor(feature_t type, uint32_t fieldHandle); - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; //----------------------------------------------------------------------------- -class FieldInfoBlueprint : public search::fef::Blueprint +class FieldInfoBlueprint : public fef::Blueprint { private: bool _overview; @@ -58,17 +56,15 @@ private: public: FieldInfoBlueprint(); - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment &indexEnv, - search::fef::IDumpFeatureVisitor &visitor) const; - virtual search::fef::Blueprint::UP createInstance() const { return search::fef::Blueprint::UP(new FieldInfoBlueprint()); } - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions(). + void visitDumpFeatures(const fef::IIndexEnvironment &indexEnv, fef::IDumpFeatureVisitor &visitor) const override; + fef::Blueprint::UP createInstance() const override { return fef::Blueprint::UP(new FieldInfoBlueprint()); } + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions(). desc(0). desc(1).string(); } - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &queryEnv, vespalib::Stash &stash) const override; + bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &queryEnv, vespalib::Stash &stash) const override; }; } // namespace features diff --git a/searchlib/src/vespa/searchlib/features/fieldlengthfeature.h b/searchlib/src/vespa/searchlib/features/fieldlengthfeature.h index f469abf90b7..aa528a57445 100644 --- a/searchlib/src/vespa/searchlib/features/fieldlengthfeature.h +++ b/searchlib/src/vespa/searchlib/features/fieldlengthfeature.h @@ -1,8 +1,6 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <string> -#include <vector> #include <vespa/searchlib/fef/blueprint.h> #include <vespa/searchlib/fef/featureexecutor.h> @@ -12,9 +10,9 @@ namespace features { /** * Implements the executor for field length. */ -class FieldLengthExecutor : public search::fef::FeatureExecutor { +class FieldLengthExecutor : public fef::FeatureExecutor { private: - std::vector<search::fef::TermFieldHandle> _fieldHandles; + std::vector<fef::TermFieldHandle> _fieldHandles; const fef::MatchData *_md; virtual void handle_bind_match_data(fef::MatchData &md) override; @@ -26,42 +24,28 @@ public: * @param env The query environment * @param fieldId The field id */ - FieldLengthExecutor(const search::fef::IQueryEnvironment &env, - uint32_t fieldId); - virtual void execute(uint32_t docId); + FieldLengthExecutor(const fef::IQueryEnvironment &env, uint32_t fieldId); + void execute(uint32_t docId) override; }; /** * Implements the blueprint for field length. */ -class FieldLengthBlueprint : public search::fef::Blueprint { +class FieldLengthBlueprint : public fef::Blueprint { private: - const search::fef::FieldInfo *_field; + const fef::FieldInfo *_field; public: - /** - * Constructs a blueprint for field length. - */ FieldLengthBlueprint(); - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment &env, - search::fef::IDumpFeatureVisitor &visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc().indexField(search::fef::ParameterCollection::SINGLE); + void visitDumpFeatures(const fef::IIndexEnvironment &env, fef::IDumpFeatureVisitor &visitor) const override; + fef::Blueprint::UP createInstance() const override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc().indexField(fef::ParameterCollection::SINGLE); } - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); + bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; }; }} diff --git a/searchlib/src/vespa/searchlib/features/fieldmatchfeature.h b/searchlib/src/vespa/searchlib/features/fieldmatchfeature.h index e91e89f5483..a63b1be4bb7 100644 --- a/searchlib/src/vespa/searchlib/features/fieldmatchfeature.h +++ b/searchlib/src/vespa/searchlib/features/fieldmatchfeature.h @@ -12,61 +12,45 @@ namespace features { /** * Implements the executor for THE field match feature. */ -class FieldMatchExecutor : public search::fef::FeatureExecutor { +class FieldMatchExecutor : public fef::FeatureExecutor { private: - search::fef::PhraseSplitter _splitter; - const search::fef::FieldInfo & _field; + fef::PhraseSplitter _splitter; + const fef::FieldInfo & _field; const fieldmatch::Params & _params; fieldmatch::Computer _cmp; - virtual void handle_bind_match_data(fef::MatchData &md) override; + void handle_bind_match_data(fef::MatchData &md) override; public: /** * Constructs an executor. */ - FieldMatchExecutor(const search::fef::IQueryEnvironment & queryEnv, - const search::fef::FieldInfo & field, + FieldMatchExecutor(const fef::IQueryEnvironment & queryEnv, + const fef::FieldInfo & field, const fieldmatch::Params & params); - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; /** * Implements the blueprint for THE field match feature. */ -class FieldMatchBlueprint : public search::fef::Blueprint { +class FieldMatchBlueprint : public fef::Blueprint { private: - const search::fef::FieldInfo * _field; + const fef::FieldInfo * _field; fieldmatch::Params _params; public: - /** - * Constructs a blueprint. - */ FieldMatchBlueprint(); - - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment & env, - search::fef::IDumpFeatureVisitor & visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc().indexField(search::fef::ParameterCollection::SINGLE); + void visitDumpFeatures(const fef::IIndexEnvironment & env, fef::IDumpFeatureVisitor & visitor) const override; + fef::Blueprint::UP createInstance() const override; + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc().indexField(fef::ParameterCollection::SINGLE); } - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; }; - - + } // namespace features } // namespace search - diff --git a/searchlib/src/vespa/searchlib/features/fieldtermmatchfeature.h b/searchlib/src/vespa/searchlib/features/fieldtermmatchfeature.h index f8410c1193f..74c5fac5e98 100644 --- a/searchlib/src/vespa/searchlib/features/fieldtermmatchfeature.h +++ b/searchlib/src/vespa/searchlib/features/fieldtermmatchfeature.h @@ -1,8 +1,6 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <string> -#include <vector> #include <vespa/searchlib/fef/blueprint.h> #include <vespa/searchlib/fef/featureexecutor.h> @@ -12,7 +10,7 @@ namespace features { /** * Implements the executor for term feature. */ -class FieldTermMatchExecutor : public search::fef::FeatureExecutor { +class FieldTermMatchExecutor : public fef::FeatureExecutor { public: /** * Constructs an executor for term feature. @@ -21,45 +19,30 @@ public: * @param fieldId The field to match to. * @param termId The term to match. */ - FieldTermMatchExecutor(const search::fef::IQueryEnvironment &env, + FieldTermMatchExecutor(const fef::IQueryEnvironment &env, uint32_t fieldId, uint32_t termId); - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; private: - search::fef::TermFieldHandle _fieldHandle; + fef::TermFieldHandle _fieldHandle; const fef::MatchData *_md; - virtual void handle_bind_match_data(fef::MatchData &md) override; + void handle_bind_match_data(fef::MatchData &md) override; }; /** * Implements the blueprint for term feature. */ -class FieldTermMatchBlueprint : public search::fef::Blueprint { +class FieldTermMatchBlueprint : public fef::Blueprint { public: - /** - * Constructs a blueprint for term feature. - */ FieldTermMatchBlueprint(); - - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment &env, - search::fef::IDumpFeatureVisitor &visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc().indexField(search::fef::ParameterCollection::ANY).number(); + void visitDumpFeatures(const fef::IIndexEnvironment &env, fef::IDumpFeatureVisitor &visitor) const override; + fef::Blueprint::UP createInstance() const override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc().indexField(fef::ParameterCollection::ANY).number(); } - - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); + bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; private: uint32_t _fieldId; diff --git a/searchlib/src/vespa/searchlib/features/firstphasefeature.h b/searchlib/src/vespa/searchlib/features/firstphasefeature.h index 252bdfe2c54..c5d53cbc9a9 100644 --- a/searchlib/src/vespa/searchlib/features/firstphasefeature.h +++ b/searchlib/src/vespa/searchlib/features/firstphasefeature.h @@ -10,44 +10,29 @@ namespace features { /** * Implements the executor outputting the first phase ranking. */ -class FirstPhaseExecutor : public search::fef::FeatureExecutor { +class FirstPhaseExecutor : public fef::FeatureExecutor { public: - virtual bool isPure() { return true; } - virtual void execute(uint32_t docId); + bool isPure() override { return true; } + void execute(uint32_t docId) override; }; - - + /** * Implements the blueprint for the first phase feature. */ -class FirstPhaseBlueprint : public search::fef::Blueprint { +class FirstPhaseBlueprint : public fef::Blueprint { public: - /** - * Constructs a blueprint. - */ FirstPhaseBlueprint(); + void visitDumpFeatures(const fef::IIndexEnvironment & env, fef::IDumpFeatureVisitor & visitor) const override; + fef::Blueprint::UP createInstance() const override; - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment & env, - search::fef::IDumpFeatureVisitor & visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc(); + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc(); } + bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; }; } // namespace features } // namespace search - diff --git a/searchlib/src/vespa/searchlib/features/flow_completeness_feature.h b/searchlib/src/vespa/searchlib/features/flow_completeness_feature.h index d329a170e75..1894b9656ff 100644 --- a/searchlib/src/vespa/searchlib/features/flow_completeness_feature.h +++ b/searchlib/src/vespa/searchlib/features/flow_completeness_feature.h @@ -2,8 +2,6 @@ #pragma once -#include <string> -#include <vector> #include <vespa/searchlib/fef/fef.h> #include <vespa/vespalib/util/priority_queue.h> #include <vespa/vespalib/stllike/hash_map.h> @@ -18,7 +16,7 @@ struct FlowCompletenessParams { feature_t fieldWeight; feature_t fieldCompletenessImportance; FlowCompletenessParams() - : fieldId(search::fef::IllegalFieldId), + : fieldId(fef::IllegalFieldId), fieldWeight(0), fieldCompletenessImportance(0.5) {} }; @@ -29,25 +27,25 @@ const uint32_t IllegalElementId = 0xffffffff; const uint32_t IllegalTermId = 0xffffffff; const uint32_t IllegalPosId = 0xffffffff; -class FlowCompletenessExecutor : public search::fef::FeatureExecutor +class FlowCompletenessExecutor : public fef::FeatureExecutor { private: struct Term { - search::fef::TermFieldHandle termHandle; + fef::TermFieldHandle termHandle; int termWeight; - Term(search::fef::TermFieldHandle handle, int weight) + Term(fef::TermFieldHandle handle, int weight) : termHandle(handle), termWeight(weight) {} }; struct Item { uint32_t elemId; uint32_t termIdx; - search::fef::TermFieldMatchData::PositionsIterator pos; - search::fef::TermFieldMatchData::PositionsIterator end; + fef::TermFieldMatchData::PositionsIterator pos; + fef::TermFieldMatchData::PositionsIterator end; Item(uint32_t idx, - search::fef::TermFieldMatchData::PositionsIterator p, - search::fef::TermFieldMatchData::PositionsIterator e) + fef::TermFieldMatchData::PositionsIterator p, + fef::TermFieldMatchData::PositionsIterator e) : elemId(IllegalElementId), termIdx(idx), pos(p), end(e) { if (p != e) elemId = p->getElementId(); @@ -66,18 +64,18 @@ private: static bool nextElement(Item &item); - virtual void handle_bind_match_data(fef::MatchData &md) override; + void handle_bind_match_data(fef::MatchData &md) override; public: - FlowCompletenessExecutor(const search::fef::IQueryEnvironment &env, + FlowCompletenessExecutor(const fef::IQueryEnvironment &env, const FlowCompletenessParams ¶ms); - virtual bool isPure() { return _terms.empty(); } - virtual void execute(uint32_t docId); + bool isPure() override { return _terms.empty(); } + void execute(uint32_t docId) override; }; //----------------------------------------------------------------------------- -class FlowCompletenessBlueprint : public search::fef::Blueprint +class FlowCompletenessBlueprint : public fef::Blueprint { private: std::vector<vespalib::string> _output; @@ -86,24 +84,13 @@ private: public: FlowCompletenessBlueprint(); - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment & env, - search::fef::IDumpFeatureVisitor & visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc().indexField(search::fef::ParameterCollection::ANY); + void visitDumpFeatures(const fef::IIndexEnvironment & env, fef::IDumpFeatureVisitor & visitor) const override; + fef::Blueprint::UP createInstance() const override; + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc().indexField(fef::ParameterCollection::ANY); } - - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment &env, - const search::fef::ParameterList ¶ms); - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + bool setup(const fef::IIndexEnvironment &env, const fef::ParameterList ¶ms) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; }; //----------------------------------------------------------------------------- diff --git a/searchlib/src/vespa/searchlib/features/foreachfeature.cpp b/searchlib/src/vespa/searchlib/features/foreachfeature.cpp index 718d04ed66e..7e6831142ee 100644 --- a/searchlib/src/vespa/searchlib/features/foreachfeature.cpp +++ b/searchlib/src/vespa/searchlib/features/foreachfeature.cpp @@ -1,18 +1,17 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/fastos/fastos.h> -#include <vespa/log/log.h> -LOG_SETUP(".features.foreachfeature"); #include "foreachfeature.h" #include "valuefeature.h" #include "utils.h" #include <boost/algorithm/string/replace.hpp> -#include <vespa/searchlib/fef/fieldinfo.h> #include <vespa/searchlib/fef/properties.h> #include <vespa/vespalib/util/stringfmt.h> #include <vespa/vespalib/util/vstringfmt.h> +#include <vespa/log/log.h> +LOG_SETUP(".features.foreachfeature"); + using namespace search::fef; namespace search { @@ -108,7 +107,7 @@ ForeachBlueprint::setExecutorCreator(CO condition) CO _condition; public: ExecutorCreator(CO cond) : _condition(cond) {} - virtual search::fef::FeatureExecutor &create(uint32_t numInputs, vespalib::Stash &stash) const { + search::fef::FeatureExecutor &create(uint32_t numInputs, vespalib::Stash &stash) const override { return stash.create<ForeachExecutor<CO, OP>>(_condition, numInputs); } }; diff --git a/searchlib/src/vespa/searchlib/features/foreachfeature.h b/searchlib/src/vespa/searchlib/features/foreachfeature.h index 7d0cf4d8baf..d01fae9b196 100644 --- a/searchlib/src/vespa/searchlib/features/foreachfeature.h +++ b/searchlib/src/vespa/searchlib/features/foreachfeature.h @@ -6,7 +6,6 @@ #include <vespa/searchlib/fef/featureexecutor.h> #include <limits> - namespace search { namespace features { @@ -15,7 +14,7 @@ namespace features { * Uses a condition and operation template class to perform the computation. */ template <typename CO, typename OP> -class ForeachExecutor : public search::fef::FeatureExecutor { +class ForeachExecutor : public fef::FeatureExecutor { private: CO _condition; OP _operation; @@ -23,10 +22,9 @@ private: public: ForeachExecutor(const CO & condition, uint32_t numInputs); - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; - - + /** * Base class for condition template class. **/ @@ -129,7 +127,7 @@ struct CountOperation : public OperationBase { /** * Implements the blueprint for the foreach executor. */ -class ForeachBlueprint : public search::fef::Blueprint { +class ForeachBlueprint : public fef::Blueprint { private: enum Dimension { TERMS, @@ -138,7 +136,7 @@ private: ILLEGAL }; struct ExecutorCreatorBase { - virtual search::fef::FeatureExecutor &create(uint32_t numInputs, vespalib::Stash &stash) const = 0; + virtual fef::FeatureExecutor &create(uint32_t numInputs, vespalib::Stash &stash) const = 0; virtual ~ExecutorCreatorBase() {} }; @@ -154,29 +152,14 @@ private: void setExecutorCreator(CO condition); public: - /** - * Constructs a blueprint. - */ ForeachBlueprint(); - - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment & env, - search::fef::IDumpFeatureVisitor & visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc().string().string().feature().string().string(); + void visitDumpFeatures(const fef::IIndexEnvironment & env, fef::IDumpFeatureVisitor & visitor) const override; + fef::Blueprint::UP createInstance() const override; + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc().string().string().feature().string().string(); } - - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; }; diff --git a/searchlib/src/vespa/searchlib/features/freshnessfeature.h b/searchlib/src/vespa/searchlib/features/freshnessfeature.h index b1dc25aada9..770a103c3c3 100644 --- a/searchlib/src/vespa/searchlib/features/freshnessfeature.h +++ b/searchlib/src/vespa/searchlib/features/freshnessfeature.h @@ -2,9 +2,9 @@ #pragma once +#include "logarithmcalculator.h" #include <vespa/searchlib/fef/blueprint.h> #include <vespa/searchlib/fef/featureexecutor.h> -#include "logarithmcalculator.h" namespace search { namespace features { @@ -12,53 +12,36 @@ namespace features { /** * Implements the executor for the freshness feature. */ -class FreshnessExecutor : public search::fef::FeatureExecutor { +class FreshnessExecutor : public fef::FeatureExecutor { private: feature_t _maxAge; LogarithmCalculator _logCalc; public: - /** - * Constructs an executor. - */ FreshnessExecutor(feature_t maxAge, feature_t scaleAge); - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; /** * Implements the blueprint for the freshness executor. */ -class FreshnessBlueprint : public search::fef::Blueprint { +class FreshnessBlueprint : public fef::Blueprint { private: feature_t _maxAge; feature_t _halfResponse; feature_t _scaleAge; public: - /** - * Constructs a blueprint. - */ FreshnessBlueprint(); - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment & env, - search::fef::IDumpFeatureVisitor & visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc().attribute(search::fef::ParameterCollection::ANY); + void visitDumpFeatures(const fef::IIndexEnvironment & env, fef::IDumpFeatureVisitor & visitor) const override; + fef::Blueprint::UP createInstance() const override; + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc().attribute(fef::ParameterCollection::ANY); } - - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; }; diff --git a/searchlib/src/vespa/searchlib/features/item_raw_score_feature.h b/searchlib/src/vespa/searchlib/features/item_raw_score_feature.h index 3e737c4a2f5..84d5fe0f812 100644 --- a/searchlib/src/vespa/searchlib/features/item_raw_score_feature.h +++ b/searchlib/src/vespa/searchlib/features/item_raw_score_feature.h @@ -16,12 +16,12 @@ private: HandleVector _handles; const fef::MatchData *_md; - virtual void handle_bind_match_data(fef::MatchData &md) override; + void handle_bind_match_data(fef::MatchData &md) override; public: ItemRawScoreExecutor(HandleVector handles) : FeatureExecutor(), _handles(handles), _md(nullptr) {} - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; class SimpleItemRawScoreExecutor : public fef::FeatureExecutor @@ -30,12 +30,12 @@ private: fef::TermFieldHandle _handle; const fef::MatchData *_md; - virtual void handle_bind_match_data(fef::MatchData &md) override; + void handle_bind_match_data(fef::MatchData &md) override; public: SimpleItemRawScoreExecutor(fef::TermFieldHandle handle) : FeatureExecutor(), _handle(handle), _md(nullptr) {} - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; @@ -48,20 +48,17 @@ private: vespalib::string _label; public: ItemRawScoreBlueprint() : Blueprint("itemRawScore"), _label() {} - virtual void visitDumpFeatures(const fef::IIndexEnvironment &, - fef::IDumpFeatureVisitor &) const {} - virtual fef::Blueprint::UP createInstance() const { + void visitDumpFeatures(const fef::IIndexEnvironment &, fef::IDumpFeatureVisitor &) const override {} + fef::Blueprint::UP createInstance() const override { return Blueprint::UP(new ItemRawScoreBlueprint()); } - virtual fef::ParameterDescriptions getDescriptions() const { + fef::ParameterDescriptions getDescriptions() const override { return fef::ParameterDescriptions().desc().string(); } - virtual bool setup(const fef::IIndexEnvironment &env, - const fef::ParameterList ¶ms); - virtual fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + bool setup(const fef::IIndexEnvironment &env, const fef::ParameterList ¶ms) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; - static HandleVector resolve(const fef::IQueryEnvironment &env, - const vespalib::string &label); + static HandleVector resolve(const fef::IQueryEnvironment &env, const vespalib::string &label); }; } // namespace features diff --git a/searchlib/src/vespa/searchlib/features/jarowinklerdistancefeature.h b/searchlib/src/vespa/searchlib/features/jarowinklerdistancefeature.h index a269a75b9f3..6931945878a 100644 --- a/searchlib/src/vespa/searchlib/features/jarowinklerdistancefeature.h +++ b/searchlib/src/vespa/searchlib/features/jarowinklerdistancefeature.h @@ -1,8 +1,6 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <string> -#include <vector> #include <vespa/searchlib/fef/blueprint.h> #include <vespa/searchlib/fef/featureexecutor.h> #include <vespa/searchlib/common/feature.h> @@ -26,56 +24,45 @@ struct JaroWinklerDistanceConfig { /** * Implements the executor for the jaro winkler distance calculator. */ -class JaroWinklerDistanceExecutor : public search::fef::FeatureExecutor { +class JaroWinklerDistanceExecutor : public fef::FeatureExecutor { public: /** * Constructs a new executor for the jaro winkler distance calculator. * * @param config The config for this executor. */ - JaroWinklerDistanceExecutor(const search::fef::IQueryEnvironment &env, + JaroWinklerDistanceExecutor(const fef::IQueryEnvironment &env, const JaroWinklerDistanceConfig &config); - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; private: - feature_t jaroWinklerProximity(const std::vector<search::fef::FieldPositionsIterator> &termPos, uint32_t fieldLen); + feature_t jaroWinklerProximity(const std::vector<fef::FieldPositionsIterator> &termPos, uint32_t fieldLen); private: - const JaroWinklerDistanceConfig &_config; // The config for this executor. - std::vector<search::fef::TermFieldHandle> _termFieldHandles; // The handles of all query terms. - const fef::MatchData *_md; + const JaroWinklerDistanceConfig &_config; // The config for this executor. + std::vector<fef::TermFieldHandle> _termFieldHandles; // The handles of all query terms. + const fef::MatchData *_md; - virtual void handle_bind_match_data(fef::MatchData &md) override; + void handle_bind_match_data(fef::MatchData &md) override; }; /** * Implements the blueprint for the jaro winkler distance calculator. */ -class JaroWinklerDistanceBlueprint : public search::fef::Blueprint { +class JaroWinklerDistanceBlueprint : public fef::Blueprint { public: /** * Constructs a new blueprint for the jaro winkler distance calculator. */ JaroWinklerDistanceBlueprint(); - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment &env, - search::fef::IDumpFeatureVisitor &visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc().indexField(search::fef::ParameterCollection::SINGLE); + void visitDumpFeatures(const fef::IIndexEnvironment &env, fef::IDumpFeatureVisitor &visitor) const override; + fef::Blueprint::UP createInstance() const override; + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc().indexField(fef::ParameterCollection::SINGLE); } - - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; private: JaroWinklerDistanceConfig _config; // The config for this blueprint. diff --git a/searchlib/src/vespa/searchlib/features/logarithmcalculator.h b/searchlib/src/vespa/searchlib/features/logarithmcalculator.h index 766ba6f978d..6765396a4b9 100644 --- a/searchlib/src/vespa/searchlib/features/logarithmcalculator.h +++ b/searchlib/src/vespa/searchlib/features/logarithmcalculator.h @@ -2,6 +2,7 @@ #pragma once +#include <vespa/searchlib/common/feature.h> #include <cmath> namespace search { diff --git a/searchlib/src/vespa/searchlib/features/matchesfeature.h b/searchlib/src/vespa/searchlib/features/matchesfeature.h index 054158b955c..9a08e8040d0 100644 --- a/searchlib/src/vespa/searchlib/features/matchesfeature.h +++ b/searchlib/src/vespa/searchlib/features/matchesfeature.h @@ -12,19 +12,19 @@ namespace features { * Implements the executor for the matches feature for index and * attribute fields. */ -class MatchesExecutor : public search::fef::FeatureExecutor +class MatchesExecutor : public fef::FeatureExecutor { private: - std::vector<search::fef::TermFieldHandle> _handles; - const fef::MatchData *_md; + std::vector<fef::TermFieldHandle> _handles; + const fef::MatchData *_md; - virtual void handle_bind_match_data(fef::MatchData &md) override; + void handle_bind_match_data(fef::MatchData &md) override; public: MatchesExecutor(uint32_t fieldId, - const search::fef::IQueryEnvironment &env, + const fef::IQueryEnvironment &env, uint32_t begin, uint32_t end); - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; /** @@ -35,38 +35,21 @@ public: * matches(name,n) * - returns 1 if there is an index or attribute with this name which matched with the query term at the given position, 0 otherwise */ -class MatchesBlueprint : public search::fef::Blueprint +class MatchesBlueprint : public fef::Blueprint { private: - const search::fef::FieldInfo *_field; - uint32_t _termIdx; + const fef::FieldInfo *_field; + uint32_t _termIdx; public: - /** - * Constructs a blueprint. - */ MatchesBlueprint(); - - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment & env, - search::fef::IDumpFeatureVisitor & visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions(). - desc().field(). - desc().field().number(); + void visitDumpFeatures(const fef::IIndexEnvironment & env, fef::IDumpFeatureVisitor & visitor) const override; + fef::Blueprint::UP createInstance() const override; + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc().field().desc().field().number(); } - - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; }; } // namespace features diff --git a/searchlib/src/vespa/searchlib/features/matchfeature.h b/searchlib/src/vespa/searchlib/features/matchfeature.h index 30d28f22370..46ab49d4e2e 100644 --- a/searchlib/src/vespa/searchlib/features/matchfeature.h +++ b/searchlib/src/vespa/searchlib/features/matchfeature.h @@ -16,50 +16,32 @@ struct MatchParams { /** * Implements the executor for the match feature. */ -class MatchExecutor : public search::fef::FeatureExecutor { +class MatchExecutor : public fef::FeatureExecutor { private: const MatchParams & _params; public: - /** - * Constructs an executor. - */ MatchExecutor(const MatchParams & params); - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; /** * Implements the blueprint for the match executor. */ -class MatchBlueprint : public search::fef::Blueprint { +class MatchBlueprint : public fef::Blueprint { private: MatchParams _params; - public: - /** - * Constructs a blueprint. - */ MatchBlueprint(); - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment & env, - search::fef::IDumpFeatureVisitor & visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc(); + void visitDumpFeatures(const fef::IIndexEnvironment & env, fef::IDumpFeatureVisitor & visitor) const override; + fef::Blueprint::UP createInstance() const override; + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc(); } - - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; }; diff --git a/searchlib/src/vespa/searchlib/features/native_dot_product_feature.h b/searchlib/src/vespa/searchlib/features/native_dot_product_feature.h index 4baa10567dd..7b5d1935b45 100644 --- a/searchlib/src/vespa/searchlib/features/native_dot_product_feature.h +++ b/searchlib/src/vespa/searchlib/features/native_dot_product_feature.h @@ -10,39 +10,37 @@ namespace search { namespace features { -class NativeDotProductExecutor : public search::fef::FeatureExecutor +class NativeDotProductExecutor : public fef::FeatureExecutor { private: - typedef std::pair<search::fef::TermFieldHandle,query::Weight> Pair; - std::vector<Pair> _pairs; + typedef std::pair<fef::TermFieldHandle,query::Weight> Pair; + std::vector<Pair> _pairs; const fef::MatchData *_md; - virtual void handle_bind_match_data(fef::MatchData &md) override; + void handle_bind_match_data(fef::MatchData &md) override; public: - NativeDotProductExecutor(const search::fef::IQueryEnvironment &env, uint32_t fieldId); - virtual void execute(uint32_t docId); + NativeDotProductExecutor(const fef::IQueryEnvironment &env, uint32_t fieldId); + void execute(uint32_t docId) override; }; //----------------------------------------------------------------------------- -class NativeDotProductBlueprint : public search::fef::Blueprint +class NativeDotProductBlueprint : public fef::Blueprint { private: - const search::fef::FieldInfo *_field; + const fef::FieldInfo *_field; public: NativeDotProductBlueprint() : Blueprint("nativeDotProduct"), _field(0) {} - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment &, - search::fef::IDumpFeatureVisitor &) const {} - virtual search::fef::Blueprint::UP createInstance() const { + void visitDumpFeatures(const fef::IIndexEnvironment &, fef::IDumpFeatureVisitor &) const override {} + fef::Blueprint::UP createInstance() const override { return Blueprint::UP(new NativeDotProductBlueprint()); } - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc().field(); + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc().field(); } - virtual bool setup(const search::fef::IIndexEnvironment &env, - const search::fef::ParameterList ¶ms); - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + bool setup(const fef::IIndexEnvironment &env, const fef::ParameterList ¶ms) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; }; } // namespace features diff --git a/searchlib/src/vespa/searchlib/features/nativeattributematchfeature.h b/searchlib/src/vespa/searchlib/features/nativeattributematchfeature.h index dc535c57d3d..0cac0c6bd4b 100644 --- a/searchlib/src/vespa/searchlib/features/nativeattributematchfeature.h +++ b/searchlib/src/vespa/searchlib/features/nativeattributematchfeature.h @@ -2,12 +2,9 @@ #pragma once -#include <vespa/searchlib/fef/blueprint.h> -#include <vespa/searchlib/fef/featureexecutor.h> -#include <vespa/searchlib/fef/table.h> +#include "nativerankfeature.h" #include <vespa/searchlib/fef/itermdata.h> #include <vespa/searchlib/fef/itermfielddata.h> -#include "nativerankfeature.h" #include <vespa/searchlib/fef/symmetrictable.h> namespace search { @@ -29,7 +26,7 @@ typedef NativeRankParamsBase<NativeAttributeMatchParam> NativeAttributeMatchPara class NativeAttributeMatchExecutor : public fef::FeatureExecutor { protected: struct CachedTermData { - CachedTermData() : scale(0), weightBoostTable(NULL), tfh(search::fef::IllegalHandle) { } + CachedTermData() : scale(0), weightBoostTable(NULL), tfh(fef::IllegalHandle) { } CachedTermData(const NativeAttributeMatchParams & params, const fef::ITermFieldData & tfd, feature_t s) : scale(s), weightBoostTable(¶ms.vector[tfd.getFieldId()].weightBoostTable), @@ -45,7 +42,7 @@ protected: static feature_t calculateScore(const CachedTermData &td, const fef::TermFieldMatchData &tfmd); private: static Precomputed preComputeSetup(const fef::IQueryEnvironment & env, - const NativeAttributeMatchParams & params); + const NativeAttributeMatchParams & params); public: static fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment & env, @@ -60,12 +57,10 @@ private: std::vector<CachedTermData> _queryTermData; const fef::MatchData *_md; - virtual void handle_bind_match_data(fef::MatchData &md) override; - + void handle_bind_match_data(fef::MatchData &md) override; public: NativeAttributeMatchExecutorMulti(const Precomputed & setup) : _divisor(setup.second), _queryTermData(setup.first), _md(nullptr) { } - // Inherit doc from FeatureExecutor. - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; class NativeAttributeMatchExecutorSingle : public NativeAttributeMatchExecutor @@ -74,7 +69,7 @@ private: CachedTermData _queryTermData; const fef::MatchData *_md; - virtual void handle_bind_match_data(fef::MatchData &md) override; + void handle_bind_match_data(fef::MatchData &md) override; public: NativeAttributeMatchExecutorSingle(const Precomputed & setup) : @@ -83,8 +78,7 @@ public: { _queryTermData.scale /= setup.second; } - // Inherit doc from FeatureExecutor. - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; @@ -97,33 +91,18 @@ private: public: NativeAttributeMatchBlueprint(); + void visitDumpFeatures(const fef::IIndexEnvironment & env, fef::IDumpFeatureVisitor & visitor) const override; + fef::Blueprint::UP createInstance() const override; - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const fef::IIndexEnvironment & env, - fef::IDumpFeatureVisitor & visitor) const; - - // Inherit doc from Blueprint. - virtual fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual fef::ParameterDescriptions getDescriptions() const { - return fef::ParameterDescriptions().desc().attribute(search::fef::ParameterCollection::ANY).repeat(); + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc().attribute(fef::ParameterCollection::ANY).repeat(); } - - // Inherit doc from Blueprint. - virtual bool setup(const fef::IIndexEnvironment & env, - const fef::ParameterList & params); - - // Inherit doc from Blueprint. - virtual fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; - - /** - * Obtains the parameters used by the executor. - **/ + bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + const NativeAttributeMatchParams & getParams() const { return _params; } }; } // namespace features } // namespace search - diff --git a/searchlib/src/vespa/searchlib/features/nativefieldmatchfeature.h b/searchlib/src/vespa/searchlib/features/nativefieldmatchfeature.h index 980f14c58fb..7ccc9b77206 100644 --- a/searchlib/src/vespa/searchlib/features/nativefieldmatchfeature.h +++ b/searchlib/src/vespa/searchlib/features/nativefieldmatchfeature.h @@ -2,9 +2,6 @@ #pragma once -#include <vespa/searchlib/fef/blueprint.h> -#include <vespa/searchlib/fef/featureexecutor.h> -#include <vespa/searchlib/fef/table.h> #include "nativerankfeature.h" #include "queryterm.h" @@ -18,8 +15,8 @@ struct NativeFieldMatchParam : public NativeParamBase { static const uint32_t NOT_DEF_FIELD_LENGTH; NativeFieldMatchParam() : NativeParamBase(), firstOccTable(NULL), numOccTable(NULL), averageFieldLength(NOT_DEF_FIELD_LENGTH), firstOccImportance(0.5) { } - const search::fef::Table * firstOccTable; - const search::fef::Table * numOccTable; + const fef::Table * firstOccTable; + const fef::Table * numOccTable; uint32_t averageFieldLength; feature_t firstOccImportance; }; @@ -34,10 +31,10 @@ public: /** * Implements the executor for calculating the native field match score. **/ -class NativeFieldMatchExecutor : public search::fef::FeatureExecutor +class NativeFieldMatchExecutor : public fef::FeatureExecutor { private: - typedef std::vector<search::fef::TermFieldHandle> HandleVector; + typedef std::vector<fef::TermFieldHandle> HandleVector; class MyQueryTerm : public QueryTerm { @@ -64,13 +61,13 @@ private: } feature_t getFirstOccBoost(const NativeFieldMatchParam & param, uint32_t position, uint32_t fieldLength) const { - const search::fef::Table * table = param.firstOccTable; + const fef::Table * table = param.firstOccTable; size_t index = (position * (table->size() - 1)) / (std::max(_params.minFieldLength, fieldLength) - 1); return table->get(index); } feature_t getNumOccBoost(const NativeFieldMatchParam & param, uint32_t occs, uint32_t fieldLength) const { - const search::fef::Table * table = param.numOccTable; + const fef::Table * table = param.numOccTable; size_t index = (occs * (table->size() - 1)) / (std::max(_params.minFieldLength, fieldLength)); return table->get(index); } @@ -78,9 +75,9 @@ private: virtual void handle_bind_match_data(fef::MatchData &md) override; public: - NativeFieldMatchExecutor(const search::fef::IQueryEnvironment & env, + NativeFieldMatchExecutor(const fef::IQueryEnvironment & env, const NativeFieldMatchParams & params); - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; feature_t getFirstOccBoost(uint32_t field, uint32_t position, uint32_t fieldLength) const { return getFirstOccBoost(_params.vector[field], position, fieldLength); @@ -96,7 +93,7 @@ public: /** * Implements the blueprint for the native field match executor. **/ -class NativeFieldMatchBlueprint : public search::fef::Blueprint { +class NativeFieldMatchBlueprint : public fef::Blueprint { private: NativeFieldMatchParams _params; vespalib::string _defaultFirstOcc; @@ -104,29 +101,14 @@ private: public: NativeFieldMatchBlueprint(); - - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment & env, - search::fef::IDumpFeatureVisitor & visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc().field().repeat(); + void visitDumpFeatures(const fef::IIndexEnvironment & env, fef::IDumpFeatureVisitor & visitor) const override; + fef::Blueprint::UP createInstance() const override; + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc().field().repeat(); } - - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment & env, vespalib::Stash &stash) const override; - - /** - * Obtains the parameters used by the executor. - **/ + bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment & env, vespalib::Stash &stash) const override; + const NativeFieldMatchParams & getParams() const { return _params; } }; diff --git a/searchlib/src/vespa/searchlib/features/nativeproximityfeature.h b/searchlib/src/vespa/searchlib/features/nativeproximityfeature.h index 31587f9cdd6..0a581c18b33 100644 --- a/searchlib/src/vespa/searchlib/features/nativeproximityfeature.h +++ b/searchlib/src/vespa/searchlib/features/nativeproximityfeature.h @@ -2,9 +2,6 @@ #pragma once -#include <vespa/searchlib/fef/blueprint.h> -#include <vespa/searchlib/fef/featureexecutor.h> -#include <vespa/searchlib/fef/table.h> #include "nativerankfeature.h" #include "queryterm.h" #include "termdistancecalculator.h" @@ -18,8 +15,8 @@ namespace features { struct NativeProximityParam : public NativeParamBase { NativeProximityParam() : NativeParamBase(), proximityTable(NULL), revProximityTable(NULL), proximityImportance(0.5) { } - const search::fef::Table * proximityTable; - const search::fef::Table * revProximityTable; + const fef::Table * proximityTable; + const fef::Table * revProximityTable; feature_t proximityImportance; }; @@ -33,7 +30,7 @@ public: /** * Implements the executor for calculating the native proximity score. **/ -class NativeProximityExecutor : public search::fef::FeatureExecutor { +class NativeProximityExecutor : public fef::FeatureExecutor { public: /** * Represents a term pair with connectedness and associated term distance calculator. @@ -68,11 +65,10 @@ private: virtual void handle_bind_match_data(fef::MatchData &md) override; public: - NativeProximityExecutor(const search::fef::IQueryEnvironment & env, - const NativeProximityParams & params); - virtual void execute(uint32_t docId); + NativeProximityExecutor(const fef::IQueryEnvironment & env, const NativeProximityParams & params); + void execute(uint32_t docId) override; - static void generateTermPairs(const search::fef::IQueryEnvironment & env, const QueryTermVector & terms, + static void generateTermPairs(const fef::IQueryEnvironment & env, const QueryTermVector & terms, uint32_t slidingWindow, FieldSetup & setup); bool empty() const { return _setups.empty(); } @@ -82,7 +78,7 @@ public: /** * Implements the blueprint for the native proximity executor. **/ -class NativeProximityBlueprint : public search::fef::Blueprint { +class NativeProximityBlueprint : public fef::Blueprint { private: NativeProximityParams _params; vespalib::string _defaultProximityBoost; @@ -90,29 +86,14 @@ private: public: NativeProximityBlueprint(); - - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment & env, - search::fef::IDumpFeatureVisitor & visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc().field().repeat(); + void visitDumpFeatures(const fef::IIndexEnvironment & env, fef::IDumpFeatureVisitor & visitor) const override; + fef::Blueprint::UP createInstance() const override; + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc().field().repeat(); } - - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; - - /** - * Obtains the parameters used by the executor. - **/ + bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + const NativeProximityParams & getParams() const { return _params; } }; diff --git a/searchlib/src/vespa/searchlib/features/nativerankfeature.h b/searchlib/src/vespa/searchlib/features/nativerankfeature.h index e0c5952f133..e976f181b47 100644 --- a/searchlib/src/vespa/searchlib/features/nativerankfeature.h +++ b/searchlib/src/vespa/searchlib/features/nativerankfeature.h @@ -56,7 +56,7 @@ public: **/ class FieldWrapper { public: - std::vector<const search::fef::FieldInfo *> _fields; + std::vector<const fef::FieldInfo *> _fields; public: /** @@ -66,55 +66,44 @@ public: * @param fieldNames the set of field names to consider. If empty all found in the environment are used. * @param filter the field type this wrapper should let through. **/ - FieldWrapper(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & fields, - const search::fef::FieldType filter); + FieldWrapper(const fef::IIndexEnvironment & env, + const fef::ParameterList & fields, + const fef::FieldType filter); size_t getNumFields() const { return _fields.size(); } - const search::fef::FieldInfo * getField(size_t idx) const { return _fields[idx]; } + const fef::FieldInfo * getField(size_t idx) const { return _fields[idx]; } }; /** * Implements the executor for calculating the native rank score. **/ -class NativeRankExecutor : public search::fef::FeatureExecutor { +class NativeRankExecutor : public fef::FeatureExecutor { private: const NativeRankParams & _params; feature_t _divisor; public: NativeRankExecutor(const NativeRankParams & params); - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; /** * Implements the blueprint for the native rank executor. **/ -class NativeRankBlueprint : public search::fef::Blueprint { +class NativeRankBlueprint : public fef::Blueprint { private: NativeRankParams _params; public: NativeRankBlueprint(); - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment & env, - search::fef::IDumpFeatureVisitor & visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc().field().repeat(); + void visitDumpFeatures(const fef::IIndexEnvironment & env, fef::IDumpFeatureVisitor & visitor) const override; + fef::Blueprint::UP createInstance() const override; + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc().field().repeat(); } - - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; /** * Obtains the parameters used by the executor. @@ -124,10 +113,9 @@ public: /** * Returns whether we should use table normalization for the setup using the given environment. **/ - static bool useTableNormalization(const search::fef::IIndexEnvironment & env); + static bool useTableNormalization(const fef::IIndexEnvironment & env); }; } // namespace features } // namespace search - diff --git a/searchlib/src/vespa/searchlib/features/nowfeature.h b/searchlib/src/vespa/searchlib/features/nowfeature.h index d5322612a56..17faae83e48 100644 --- a/searchlib/src/vespa/searchlib/features/nowfeature.h +++ b/searchlib/src/vespa/searchlib/features/nowfeature.h @@ -1,8 +1,6 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <string> -#include <vector> #include <vespa/searchlib/fef/blueprint.h> #include <vespa/searchlib/fef/featureexecutor.h> @@ -16,7 +14,7 @@ namespace features { * then as days since epoch and seconds within that day (second and third output). * This is due to precision problems when encoding current time as a float. **/ -class NowExecutor : public search::fef::FeatureExecutor { +class NowExecutor : public fef::FeatureExecutor { private: // Current time, in seconds since epoch int64_t _timestamp; @@ -26,34 +24,23 @@ public: * Constructs a new executor. **/ NowExecutor(int64_t timestamp); - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; /** * Implements the blueprint for 'now' feature. */ -class NowBlueprint : public search::fef::Blueprint { +class NowBlueprint : public fef::Blueprint { public: - NowBlueprint() : search::fef::Blueprint("now") { } - - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment &env, - search::fef::IDumpFeatureVisitor &visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc(); + NowBlueprint() : fef::Blueprint("now") { } + void visitDumpFeatures(const fef::IIndexEnvironment &env, fef::IDumpFeatureVisitor &visitor) const override; + fef::Blueprint::UP createInstance() const override; + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc(); } - - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + bool setup(const fef::IIndexEnvironment & env, + const fef::ParameterList & params) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; }; }} diff --git a/searchlib/src/vespa/searchlib/features/proximityfeature.h b/searchlib/src/vespa/searchlib/features/proximityfeature.h index 5d920665de2..16f258b36d2 100644 --- a/searchlib/src/vespa/searchlib/features/proximityfeature.h +++ b/searchlib/src/vespa/searchlib/features/proximityfeature.h @@ -1,8 +1,6 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <string> -#include <vector> #include <vespa/searchlib/fef/blueprint.h> #include <vespa/searchlib/fef/featureexecutor.h> @@ -23,7 +21,7 @@ struct ProximityConfig { /** * Implements the executor for proximity. */ -class ProximityExecutor : public search::fef::FeatureExecutor { +class ProximityExecutor : public fef::FeatureExecutor { public: /** * Constructs an executor for proximity. @@ -31,53 +29,37 @@ public: * @param env The query environment. * @param config The completeness config. */ - ProximityExecutor(const search::fef::IQueryEnvironment &env, + ProximityExecutor(const fef::IQueryEnvironment &env, const ProximityConfig &config); - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; private: const ProximityConfig &_config; // The proximity config. - search::fef::TermFieldHandle _termA; // Handle to the first query term. - search::fef::TermFieldHandle _termB; // Handle to the second query term. + fef::TermFieldHandle _termA; // Handle to the first query term. + fef::TermFieldHandle _termB; // Handle to the second query term. const fef::MatchData *_md; bool findBest(const fef::TermFieldMatchData &matchA, const fef::TermFieldMatchData &matchB); - virtual void handle_bind_match_data(fef::MatchData &md) override; + void handle_bind_match_data(fef::MatchData &md) override; }; /** * Implements the blueprint for proximity. */ -class ProximityBlueprint : public search::fef::Blueprint { +class ProximityBlueprint : public fef::Blueprint { public: - /** - * Constructs a proximity blueprint. - */ ProximityBlueprint(); - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment &env, - search::fef::IDumpFeatureVisitor &visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc().indexField(search::fef::ParameterCollection::ANY).number().number(); + void visitDumpFeatures(const fef::IIndexEnvironment &env, fef::IDumpFeatureVisitor &visitor) const override; + fef::Blueprint::UP createInstance() const override; + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc().indexField(fef::ParameterCollection::ANY).number().number(); } - - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; - + bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; private: ProximityConfig _config; }; }} - diff --git a/searchlib/src/vespa/searchlib/features/querycompletenessfeature.h b/searchlib/src/vespa/searchlib/features/querycompletenessfeature.h index 7ba44c4d205..783a5ad82f5 100644 --- a/searchlib/src/vespa/searchlib/features/querycompletenessfeature.h +++ b/searchlib/src/vespa/searchlib/features/querycompletenessfeature.h @@ -1,8 +1,6 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <string> -#include <vector> #include <vespa/searchlib/fef/blueprint.h> #include <vespa/searchlib/fef/featureexecutor.h> @@ -23,7 +21,7 @@ struct QueryCompletenessConfig { /** * Implements the executor for query completeness. */ -class QueryCompletenessExecutor : public search::fef::FeatureExecutor { +class QueryCompletenessExecutor : public fef::FeatureExecutor { public: /** * Constructs an executor for query completenes. @@ -31,49 +29,35 @@ public: * @param env The query environment. * @param config The completeness config. */ - QueryCompletenessExecutor(const search::fef::IQueryEnvironment &env, + QueryCompletenessExecutor(const fef::IQueryEnvironment &env, const QueryCompletenessConfig &config); - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; private: const QueryCompletenessConfig &_config; - std::vector<search::fef::TermFieldHandle> _fieldHandles; + std::vector<fef::TermFieldHandle> _fieldHandles; const fef::MatchData *_md; - virtual void handle_bind_match_data(fef::MatchData &md) override; + void handle_bind_match_data(fef::MatchData &md) override; }; /** * Implements the blueprint for query completeness. */ -class QueryCompletenessBlueprint : public search::fef::Blueprint { +class QueryCompletenessBlueprint : public fef::Blueprint { public: - /** - * Constructs a completeness blueprint. - */ QueryCompletenessBlueprint(); - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment &env, - search::fef::IDumpFeatureVisitor &visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions(). - desc().indexField(search::fef::ParameterCollection::ANY). - desc().indexField(search::fef::ParameterCollection::ANY).number(). - desc().indexField(search::fef::ParameterCollection::ANY).number().number(); + void visitDumpFeatures(const fef::IIndexEnvironment &env, fef::IDumpFeatureVisitor &visitor) const override; + fef::Blueprint::UP createInstance() const override; + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions(). + desc().indexField(fef::ParameterCollection::ANY). + desc().indexField(fef::ParameterCollection::ANY).number(). + desc().indexField(fef::ParameterCollection::ANY).number().number(); } - - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; private: QueryCompletenessConfig _config; diff --git a/searchlib/src/vespa/searchlib/features/queryfeature.h b/searchlib/src/vespa/searchlib/features/queryfeature.h index fd1c138fcc0..e83c8811798 100644 --- a/searchlib/src/vespa/searchlib/features/queryfeature.h +++ b/searchlib/src/vespa/searchlib/features/queryfeature.h @@ -14,7 +14,7 @@ namespace features { * An executor of this outputs the value of a feature passed down with the query. * This can either be a number or a tensor value. */ -class QueryBlueprint : public search::fef::Blueprint { +class QueryBlueprint : public fef::Blueprint { private: vespalib::string _key; // 'foo' vespalib::string _key2; // '$foo' @@ -22,29 +22,15 @@ private: vespalib::eval::ValueType _valueType; public: - /** - * Constructs a query blueprint. - */ QueryBlueprint(); - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment &env, - search::fef::IDumpFeatureVisitor &visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc().string(); + void visitDumpFeatures(const fef::IIndexEnvironment &env, fef::IDumpFeatureVisitor &visitor) const override; + fef::Blueprint::UP createInstance() const override; + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc().string(); } - - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment &env, - const search::fef::ParameterList ¶ms); - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + bool setup(const fef::IIndexEnvironment &env, const fef::ParameterList ¶ms) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; }; } // namespace features diff --git a/searchlib/src/vespa/searchlib/features/querytermcountfeature.h b/searchlib/src/vespa/searchlib/features/querytermcountfeature.h index f0c2ad1c2bb..8ebfdd5125d 100644 --- a/searchlib/src/vespa/searchlib/features/querytermcountfeature.h +++ b/searchlib/src/vespa/searchlib/features/querytermcountfeature.h @@ -2,8 +2,6 @@ #pragma once -#include <string> -#include <vector> #include <vespa/searchlib/fef/blueprint.h> #include <vespa/searchlib/fef/featureexecutor.h> #include <vespa/searchlib/common/feature.h> @@ -17,29 +15,15 @@ namespace features { class QueryTermCountBlueprint : public search::fef::Blueprint { private: public: - /** - * Constructs a blueprint. - */ QueryTermCountBlueprint(); - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment & env, - search::fef::IDumpFeatureVisitor & visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { + void visitDumpFeatures(const search::fef::IIndexEnvironment & env, search::fef::IDumpFeatureVisitor & visitor) const override; + search::fef::Blueprint::UP createInstance() const override; + search::fef::ParameterDescriptions getDescriptions() const override { return search::fef::ParameterDescriptions().desc(); } - - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment & env, vespalib::Stash &stash) const override; + bool setup(const search::fef::IIndexEnvironment & env, const search::fef::ParameterList & params) override; + search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment & env, vespalib::Stash &stash) const override; }; diff --git a/searchlib/src/vespa/searchlib/features/random_normal_feature.h b/searchlib/src/vespa/searchlib/features/random_normal_feature.h index d8a76a78360..68d8626b28c 100644 --- a/searchlib/src/vespa/searchlib/features/random_normal_feature.h +++ b/searchlib/src/vespa/searchlib/features/random_normal_feature.h @@ -2,8 +2,6 @@ #pragma once -#include <string> -#include <vector> #include <vespa/searchlib/fef/blueprint.h> #include <vespa/searchlib/fef/featureexecutor.h> #include <vespa/searchlib/util/rand48.h> @@ -17,7 +15,7 @@ namespace features { * random number drawn from the Gaussian distribution with the * two arguments 'mean' and 'stddev'. **/ -class RandomNormalExecutor : public search::fef::FeatureExecutor { +class RandomNormalExecutor : public fef::FeatureExecutor { private: Rand48 _rnd; double _mean; @@ -27,39 +25,27 @@ private: double _spare; public: - /** - * Constructs a new executor. - **/ RandomNormalExecutor(uint64_t seed, double mean, double stddev); - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; /** * Implements the blueprint for the random normal feature. */ -class RandomNormalBlueprint : public search::fef::Blueprint { +class RandomNormalBlueprint : public fef::Blueprint { private: uint64_t _seed; double _mean; double _stddev; public: - /** - * Constructs a new blueprint. - */ RandomNormalBlueprint(); - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment & env, - search::fef::IDumpFeatureVisitor & visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions(). + void visitDumpFeatures(const fef::IIndexEnvironment & env, fef::IDumpFeatureVisitor & visitor) const override; + fef::Blueprint::UP createInstance() const override; + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions(). // Can run without parameters: desc(). @@ -75,12 +61,8 @@ public: string(); // in order to name different features } - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; }; diff --git a/searchlib/src/vespa/searchlib/features/randomfeature.h b/searchlib/src/vespa/searchlib/features/randomfeature.h index 8cd9580cc6d..793eb643100 100644 --- a/searchlib/src/vespa/searchlib/features/randomfeature.h +++ b/searchlib/src/vespa/searchlib/features/randomfeature.h @@ -2,8 +2,6 @@ #pragma once -#include <string> -#include <vector> #include <vespa/searchlib/fef/blueprint.h> #include <vespa/searchlib/fef/featureexecutor.h> #include <vespa/searchlib/util/rand48.h> @@ -11,7 +9,6 @@ namespace search { namespace features { - /** * Implements the executor for the random feature outputting a number in the interval [0, 1>. **/ @@ -22,11 +19,8 @@ private: uint64_t _matchSeed; public: - /** - * Constructs a new executor. - **/ RandomExecutor(uint64_t seed, uint64_t matchSeed); - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; @@ -38,34 +32,19 @@ private: uint64_t _seed; public: - /** - * Constructs a new blueprint. - */ RandomBlueprint(); - - // Inherit doc from Blueprint. - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment & env, - search::fef::IDumpFeatureVisitor & visitor) const; - - // Inherit doc from Blueprint. - virtual search::fef::Blueprint::UP createInstance() const; - - // Inherit doc from Blueprint. - virtual search::fef::ParameterDescriptions getDescriptions() const { + void visitDumpFeatures(const search::fef::IIndexEnvironment & env, search::fef::IDumpFeatureVisitor & visitor) const override; + search::fef::Blueprint::UP createInstance() const override; + search::fef::ParameterDescriptions getDescriptions() const override { return search::fef::ParameterDescriptions(). desc(). desc().string(); // in order to name different features } - // Inherit doc from Blueprint. - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); - - // Inherit doc from Blueprint. - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + bool setup(const search::fef::IIndexEnvironment & env, const search::fef::ParameterList & params) override; + search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; }; } // namespace features } // namespace search - diff --git a/searchlib/src/vespa/searchlib/features/rankingexpression/feature_name_extractor.h b/searchlib/src/vespa/searchlib/features/rankingexpression/feature_name_extractor.h index fd9f0643448..640b314e51f 100644 --- a/searchlib/src/vespa/searchlib/features/rankingexpression/feature_name_extractor.h +++ b/searchlib/src/vespa/searchlib/features/rankingexpression/feature_name_extractor.h @@ -13,8 +13,8 @@ namespace rankingexpression { * parsing ranking expressions. **/ struct FeatureNameExtractor : public vespalib::eval::SymbolExtractor { - virtual void extract_symbol(const char *pos_in, const char *end_in, - const char *&pos_out, vespalib::string &symbol_out) const; + void extract_symbol(const char *pos_in, const char *end_in, + const char *&pos_out, vespalib::string &symbol_out) const override; }; } // namespace rankingexpression diff --git a/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.h b/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.h index 16cc740fc2b..5625c495940 100644 --- a/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.h +++ b/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.h @@ -21,7 +21,7 @@ private: public: TensorAttributeExecutor(const search::tensor::TensorAttribute *attribute); - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; } // namespace features diff --git a/searchlib/src/vespa/searchlib/features/valuefeature.h b/searchlib/src/vespa/searchlib/features/valuefeature.h index 3aaeac4074d..c92ad47b02e 100644 --- a/searchlib/src/vespa/searchlib/features/valuefeature.h +++ b/searchlib/src/vespa/searchlib/features/valuefeature.h @@ -11,28 +11,28 @@ namespace search { namespace features { -class ValueExecutor : public search::fef::FeatureExecutor +class ValueExecutor : public fef::FeatureExecutor { private: std::vector<feature_t> _values; public: ValueExecutor(const std::vector<feature_t> & values); - virtual bool isPure() { return true; } - virtual void execute(uint32_t docId); + bool isPure() override { return true; } + void execute(uint32_t docId) override; const std::vector<feature_t> & getValues() const { return _values; } }; -class SingleZeroValueExecutor : public search::fef::FeatureExecutor +class SingleZeroValueExecutor : public fef::FeatureExecutor { public: SingleZeroValueExecutor() : FeatureExecutor() {} - virtual bool isPure() { return true; } - virtual void execute(uint32_t docId); + bool isPure() override { return true; } + void execute(uint32_t docId) override; }; -class ValueBlueprint : public search::fef::Blueprint +class ValueBlueprint : public fef::Blueprint { private: std::vector<feature_t> _values; @@ -40,15 +40,15 @@ private: public: ValueBlueprint(); - virtual void visitDumpFeatures(const search::fef::IIndexEnvironment & indexEnv, - search::fef::IDumpFeatureVisitor & visitor) const; - virtual search::fef::Blueprint::UP createInstance() const { return Blueprint::UP(new ValueBlueprint()); } - virtual search::fef::ParameterDescriptions getDescriptions() const { - return search::fef::ParameterDescriptions().desc().number().number().repeat(); + void visitDumpFeatures(const fef::IIndexEnvironment & indexEnv, + fef::IDumpFeatureVisitor & visitor) const override; + fef::Blueprint::UP createInstance() const override { return Blueprint::UP(new ValueBlueprint()); } + fef::ParameterDescriptions getDescriptions() const override { + return fef::ParameterDescriptions().desc().number().number().repeat(); } - virtual bool setup(const search::fef::IIndexEnvironment & env, - const search::fef::ParameterList & params); - virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &queryEnv, vespalib::Stash &stash) const override; + bool setup(const fef::IIndexEnvironment & env, + const fef::ParameterList & params) override; + fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &queryEnv, vespalib::Stash &stash) const override; }; } // namespace features diff --git a/searchlib/src/vespa/searchlib/fef/blueprintfactory.h b/searchlib/src/vespa/searchlib/fef/blueprintfactory.h index 8d9924d67a8..86e88da3e3c 100644 --- a/searchlib/src/vespa/searchlib/fef/blueprintfactory.h +++ b/searchlib/src/vespa/searchlib/fef/blueprintfactory.h @@ -2,11 +2,9 @@ #pragma once -#include <string> -#include <set> -#include <map> #include "blueprint.h" #include "iblueprintregistry.h" +#include <map> namespace search { namespace fef { @@ -31,8 +29,7 @@ public: **/ BlueprintFactory(); - // inherit doc - virtual void addPrototype(Blueprint::SP proto); + void addPrototype(Blueprint::SP proto) override; /** * This method will visit features to be dumped by forwarding the diff --git a/searchlib/src/vespa/searchlib/fef/filetablefactory.h b/searchlib/src/vespa/searchlib/fef/filetablefactory.h index 74e0a09e6dd..9cf541e5091 100644 --- a/searchlib/src/vespa/searchlib/fef/filetablefactory.h +++ b/searchlib/src/vespa/searchlib/fef/filetablefactory.h @@ -26,7 +26,7 @@ public: * The numbers in the file should be separated with ' ' or '\n'. * Table::SP(NULL) is returned if the file 'path/name' is not found. **/ - virtual Table::SP createTable(const vespalib::string & name) const; + Table::SP createTable(const vespalib::string & name) const override; }; } // namespace fef diff --git a/searchlib/src/vespa/searchlib/fef/functiontablefactory.h b/searchlib/src/vespa/searchlib/fef/functiontablefactory.h index 10a610f3c04..6dc3c5e8304 100644 --- a/searchlib/src/vespa/searchlib/fef/functiontablefactory.h +++ b/searchlib/src/vespa/searchlib/fef/functiontablefactory.h @@ -46,7 +46,7 @@ public: /** * Creates a table where the given name specifies the function and arguments to use. **/ - virtual Table::SP createTable(const vespalib::string & name) const; + Table::SP createTable(const vespalib::string & name) const override; /** * Parses the given function name and returns true if success. diff --git a/searchlib/src/vespa/searchlib/fef/objectstore.h b/searchlib/src/vespa/searchlib/fef/objectstore.h index 457371c4ebf..8ba3d6f58f9 100644 --- a/searchlib/src/vespa/searchlib/fef/objectstore.h +++ b/searchlib/src/vespa/searchlib/fef/objectstore.h @@ -25,9 +25,9 @@ class ObjectStore : public IObjectStore { public: ObjectStore(); - virtual ~ObjectStore(); - virtual void add(const vespalib::string & key, Anything::UP value); - virtual const Anything * get(const vespalib::string & key) const; + ~ObjectStore(); + void add(const vespalib::string & key, Anything::UP value) override; + const Anything * get(const vespalib::string & key) const override; private: typedef vespalib::hash_map<vespalib::string, Anything *> ObjectMap; ObjectMap _objectMap; diff --git a/searchlib/src/vespa/searchlib/fef/phrasesplitter.h b/searchlib/src/vespa/searchlib/fef/phrasesplitter.h index 6e41535c1bd..9984ae7de3a 100644 --- a/searchlib/src/vespa/searchlib/fef/phrasesplitter.h +++ b/searchlib/src/vespa/searchlib/fef/phrasesplitter.h @@ -89,18 +89,9 @@ public: * Update the underlying TermFieldMatchData objects based on the bound MatchData object. **/ void update(); + uint32_t getNumTerms() const override { return _termIdxMap.size(); } - /** - * Inherit doc from IQueryEnvironment. - **/ - virtual uint32_t getNumTerms() const { - return _termIdxMap.size(); - } - - /** - * Inherit doc from IQueryEnvironment. - **/ - virtual const ITermData * getTerm(uint32_t idx) const { + const ITermData * getTerm(uint32_t idx) const override { if (idx >= _termIdxMap.size()) { return NULL; } @@ -118,26 +109,10 @@ public: return handle < _skipHandles ? _matchData->resolveTermField(handle) : resolveSplittedTermField(handle); } - /** - * Inherit doc from IQueryEnvironment. - **/ - virtual const Properties & getProperties() const { return _queryEnv.getProperties(); } - - /** - * Inherit doc from IQueryEnvironment. - **/ - virtual const Location & getLocation() const { return _queryEnv.getLocation(); } - - /** - * Inherit doc from IQueryEnvironment. - **/ - virtual const attribute::IAttributeContext & getAttributeContext() const { return _queryEnv.getAttributeContext(); } - - /** - * Inherit doc from IQueryEnvironment. - **/ - virtual const IIndexEnvironment & getIndexEnvironment() const { return _queryEnv.getIndexEnvironment(); } - + const Properties & getProperties() const override { return _queryEnv.getProperties(); } + const Location & getLocation() const override { return _queryEnv.getLocation(); } + const attribute::IAttributeContext & getAttributeContext() const override { return _queryEnv.getAttributeContext(); } + const IIndexEnvironment & getIndexEnvironment() const override { return _queryEnv.getIndexEnvironment(); } void bind_match_data(const fef::MatchData &md) { _matchData = &md; } }; diff --git a/searchlib/src/vespa/searchlib/fef/rank_program.cpp b/searchlib/src/vespa/searchlib/fef/rank_program.cpp index df16396aa8a..16051e018d4 100644 --- a/searchlib/src/vespa/searchlib/fef/rank_program.cpp +++ b/searchlib/src/vespa/searchlib/fef/rank_program.cpp @@ -1,12 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/fastos/fastos.h> -#include <vespa/log/log.h> -LOG_SETUP(".fef.rank_program"); #include "rank_program.h" #include "featureoverrider.h" -#include <algorithm> -#include <set> using vespalib::Stash; @@ -40,8 +35,8 @@ struct OverrideVisitor : public IPropertiesVisitor std::vector<Override> &overrides_out) : feature_map(feature_map_in), overrides(overrides_out) {} - virtual void visitProperty(const Property::Value & key, - const Property & values) + void visitProperty(const Property::Value & key, + const Property & values) override { auto pos = feature_map.find(key); if (pos != feature_map.end()) { diff --git a/searchlib/src/vespa/searchlib/fef/ranksetup.cpp b/searchlib/src/vespa/searchlib/fef/ranksetup.cpp index d3262a7d2d8..9d295f35cf5 100644 --- a/searchlib/src/vespa/searchlib/fef/ranksetup.cpp +++ b/searchlib/src/vespa/searchlib/fef/ranksetup.cpp @@ -14,7 +14,7 @@ class VisitorAdapter : public search::fef::IDumpFeatureVisitor public: VisitorAdapter(search::fef::BlueprintResolver &resolver) : _resolver(resolver) {} - virtual void visitDumpFeature(const vespalib::string &name) { + void visitDumpFeature(const vespalib::string &name) override { _resolver.addSeed(name); } }; diff --git a/searchlib/src/vespa/searchlib/fef/simpletermfielddata.h b/searchlib/src/vespa/searchlib/fef/simpletermfielddata.h index 190ae8e80d2..91e6e7a64bf 100644 --- a/searchlib/src/vespa/searchlib/fef/simpletermfielddata.h +++ b/searchlib/src/vespa/searchlib/fef/simpletermfielddata.h @@ -52,7 +52,7 @@ public: * * @return match handle **/ - virtual TermFieldHandle getHandle() const { + TermFieldHandle getHandle() const override { return _handle; } diff --git a/searchlib/src/vespa/searchlib/fef/tablemanager.h b/searchlib/src/vespa/searchlib/fef/tablemanager.h index e69c05b1dce..e919ad0c7df 100644 --- a/searchlib/src/vespa/searchlib/fef/tablemanager.h +++ b/searchlib/src/vespa/searchlib/fef/tablemanager.h @@ -42,7 +42,7 @@ public: * The first table that is successfully created is added it to the cache and returned. * 3. Return NULL. **/ - virtual const Table * getTable(const vespalib::string & name) const; + const Table * getTable(const vespalib::string & name) const override; }; } // namespace fef diff --git a/searchlib/src/vespa/searchlib/fef/test/ftlib.h b/searchlib/src/vespa/searchlib/fef/test/ftlib.h index 245d8bb4998..a88edc56eab 100644 --- a/searchlib/src/vespa/searchlib/fef/test/ftlib.h +++ b/searchlib/src/vespa/searchlib/fef/test/ftlib.h @@ -1,18 +1,18 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once +#include "featuretest.h" +#include "indexenvironment.h" +#include "indexenvironmentbuilder.h" +#include "matchdatabuilder.h" +#include "queryenvironment.h" +#include "queryenvironmentbuilder.h" +#include "rankresult.h" +#include <vespa/vespalib/testkit/testapp.h> +#include <vespa/searchlib/common/feature.h> #include <vespa/searchlib/query/weight.h> #include <vespa/searchlib/features/fieldmatch/params.h> #include <vespa/searchlib/fef/fef.h> -#include <vespa/searchlib/fef/test/featuretest.h> -#include <vespa/searchlib/fef/test/indexenvironment.h> -#include <vespa/searchlib/fef/test/indexenvironmentbuilder.h> -#include <vespa/searchlib/fef/test/matchdatabuilder.h> -#include <vespa/searchlib/fef/test/queryenvironment.h> -#include <vespa/searchlib/fef/test/queryenvironmentbuilder.h> -#include <vespa/searchlib/fef/test/rankresult.h> -#include <vespa/vespalib/testkit/testapp.h> -#include <vespa/searchlib/common/feature.h> using search::feature_t; @@ -90,7 +90,7 @@ private: public: FtDumpFeatureVisitor(); - virtual void visitDumpFeature(const vespalib::string & name) { _features.push_back(name); } + void visitDumpFeature(const vespalib::string & name) override { _features.push_back(name); } const std::vector<vespalib::string> & features() const { return _features; } }; diff --git a/searchlib/src/vespa/searchlib/fef/test/plugin/cfgvalue.h b/searchlib/src/vespa/searchlib/fef/test/plugin/cfgvalue.h index 35ab0523076..0ef5a03df3c 100644 --- a/searchlib/src/vespa/searchlib/fef/test/plugin/cfgvalue.h +++ b/searchlib/src/vespa/searchlib/fef/test/plugin/cfgvalue.h @@ -2,8 +2,6 @@ #pragma once -#include <string> -#include <vector> #include <vespa/searchlib/features/valuefeature.h> #include <vespa/searchlib/fef/blueprint.h> #include <vespa/searchlib/fef/featureexecutor.h> @@ -19,13 +17,12 @@ private: public: CfgValueBlueprint(); - virtual void visitDumpFeatures(const IIndexEnvironment & indexEnv, IDumpFeatureVisitor & visitor) const; - virtual Blueprint::UP createInstance() const { return Blueprint::UP(new CfgValueBlueprint()); } - virtual bool setup(const IIndexEnvironment & indexEnv, const StringVector & params); - virtual FeatureExecutor &createExecutor(const IQueryEnvironment & queryEnv, vespalib::Stash &stash) const override; + void visitDumpFeatures(const IIndexEnvironment & indexEnv, IDumpFeatureVisitor & visitor) const override; + Blueprint::UP createInstance() const override { return Blueprint::UP(new CfgValueBlueprint()); } + bool setup(const IIndexEnvironment & indexEnv, const StringVector & params) override; + FeatureExecutor &createExecutor(const IQueryEnvironment & queryEnv, vespalib::Stash &stash) const override; }; } // namespace test } // namespace fef } // namespace search - diff --git a/searchlib/src/vespa/searchlib/fef/test/plugin/chain.h b/searchlib/src/vespa/searchlib/fef/test/plugin/chain.h index 6d73d37b8d6..52bfb7c3768 100644 --- a/searchlib/src/vespa/searchlib/fef/test/plugin/chain.h +++ b/searchlib/src/vespa/searchlib/fef/test/plugin/chain.h @@ -2,8 +2,6 @@ #pragma once -#include <string> -#include <vector> #include <vespa/searchlib/fef/blueprint.h> #include <vespa/searchlib/fef/featureexecutor.h> @@ -15,7 +13,7 @@ class ChainExecutor : public FeatureExecutor { public: ChainExecutor(); - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; @@ -23,10 +21,10 @@ class ChainBlueprint : public Blueprint { public: ChainBlueprint(); - virtual void visitDumpFeatures(const IIndexEnvironment &, IDumpFeatureVisitor &) const {} - virtual Blueprint::UP createInstance() const { return Blueprint::UP(new ChainBlueprint()); } - virtual bool setup(const IIndexEnvironment & indexEnv, const StringVector & params); - virtual FeatureExecutor &createExecutor(const IQueryEnvironment & queryEnv, vespalib::Stash &stash) const; + void visitDumpFeatures(const IIndexEnvironment &, IDumpFeatureVisitor &) const override {} + Blueprint::UP createInstance() const override { return Blueprint::UP(new ChainBlueprint()); } + bool setup(const IIndexEnvironment & indexEnv, const StringVector & params) override; + FeatureExecutor &createExecutor(const IQueryEnvironment & queryEnv, vespalib::Stash &stash) const override; }; } // namespace test diff --git a/searchlib/src/vespa/searchlib/fef/test/plugin/double.h b/searchlib/src/vespa/searchlib/fef/test/plugin/double.h index 460581a9d92..9a0c1fac6e1 100644 --- a/searchlib/src/vespa/searchlib/fef/test/plugin/double.h +++ b/searchlib/src/vespa/searchlib/fef/test/plugin/double.h @@ -2,8 +2,6 @@ #pragma once -#include <string> -#include <vector> #include <vespa/searchlib/fef/blueprint.h> #include <vespa/searchlib/fef/featureexecutor.h> @@ -17,7 +15,7 @@ private: size_t _cnt; public: DoubleExecutor(size_t cnt) : _cnt(cnt) {} - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; @@ -27,10 +25,10 @@ private: size_t _cnt; public: DoubleBlueprint(); - virtual void visitDumpFeatures(const IIndexEnvironment & indexEnv, IDumpFeatureVisitor & visitor) const; - virtual Blueprint::UP createInstance() const { return Blueprint::UP(new DoubleBlueprint()); } - virtual bool setup(const IIndexEnvironment & indexEnv, const StringVector & params); - virtual FeatureExecutor &createExecutor(const IQueryEnvironment &queryEnv, vespalib::Stash &stash) const override; + void visitDumpFeatures(const IIndexEnvironment & indexEnv, IDumpFeatureVisitor & visitor) const override; + Blueprint::UP createInstance() const override { return Blueprint::UP(new DoubleBlueprint()); } + bool setup(const IIndexEnvironment & indexEnv, const StringVector & params) override; + FeatureExecutor &createExecutor(const IQueryEnvironment &queryEnv, vespalib::Stash &stash) const override; }; } // namespace test diff --git a/searchlib/src/vespa/searchlib/fef/test/plugin/query.h b/searchlib/src/vespa/searchlib/fef/test/plugin/query.h index 23f9392d2f8..e533901b73f 100644 --- a/searchlib/src/vespa/searchlib/fef/test/plugin/query.h +++ b/searchlib/src/vespa/searchlib/fef/test/plugin/query.h @@ -2,8 +2,6 @@ #pragma once -#include <string> -#include <vector> #include <vespa/searchlib/fef/blueprint.h> #include <vespa/searchlib/fef/featureexecutor.h> @@ -18,10 +16,10 @@ private: public: QueryBlueprint(); - virtual void visitDumpFeatures(const IIndexEnvironment &, IDumpFeatureVisitor &) const {}; - virtual Blueprint::UP createInstance() const { return Blueprint::UP(new QueryBlueprint()); } - virtual bool setup(const IIndexEnvironment &indexEnv, const StringVector ¶ms); - virtual FeatureExecutor &createExecutor(const IQueryEnvironment &queryEnv, vespalib::Stash &stash) const override; + void visitDumpFeatures(const IIndexEnvironment &, IDumpFeatureVisitor &) const override {} + Blueprint::UP createInstance() const override { return Blueprint::UP(new QueryBlueprint()); } + bool setup(const IIndexEnvironment &indexEnv, const StringVector ¶ms) override; + FeatureExecutor &createExecutor(const IQueryEnvironment &queryEnv, vespalib::Stash &stash) const override; }; } // namespace test diff --git a/searchlib/src/vespa/searchlib/fef/test/plugin/staticrank.h b/searchlib/src/vespa/searchlib/fef/test/plugin/staticrank.h index 38f931caa6b..64503980ecc 100644 --- a/searchlib/src/vespa/searchlib/fef/test/plugin/staticrank.h +++ b/searchlib/src/vespa/searchlib/fef/test/plugin/staticrank.h @@ -2,8 +2,6 @@ #pragma once -#include <string> -#include <vector> #include <vespa/searchlib/fef/blueprint.h> #include <vespa/searchlib/fef/featureexecutor.h> @@ -18,7 +16,7 @@ private: public: StaticRankExecutor(const search::attribute::IAttributeVector * attribute); - virtual void execute(uint32_t docId); + void execute(uint32_t docId) override; }; @@ -29,10 +27,10 @@ private: public: StaticRankBlueprint(); - virtual void visitDumpFeatures(const IIndexEnvironment &, IDumpFeatureVisitor &) const {} - virtual Blueprint::UP createInstance() const { return Blueprint::UP(new StaticRankBlueprint()); } - virtual bool setup(const IIndexEnvironment & indexEnv, const StringVector & params); - virtual FeatureExecutor &createExecutor(const IQueryEnvironment &queryEnv, vespalib::Stash &stash) const override; + void visitDumpFeatures(const IIndexEnvironment &, IDumpFeatureVisitor &) const override {} + Blueprint::UP createInstance() const override { return Blueprint::UP(new StaticRankBlueprint()); } + bool setup(const IIndexEnvironment & indexEnv, const StringVector & params) override; + FeatureExecutor &createExecutor(const IQueryEnvironment &queryEnv, vespalib::Stash &stash) const override; }; } // namespace test diff --git a/searchlib/src/vespa/searchlib/fef/test/plugin/sum.h b/searchlib/src/vespa/searchlib/fef/test/plugin/sum.h index fecc168238e..37e56f9fe87 100644 --- a/searchlib/src/vespa/searchlib/fef/test/plugin/sum.h +++ b/searchlib/src/vespa/searchlib/fef/test/plugin/sum.h @@ -2,8 +2,6 @@ #pragma once -#include <string> -#include <vector> #include <vespa/searchlib/fef/blueprint.h> #include <vespa/searchlib/fef/featureexecutor.h> @@ -14,8 +12,8 @@ namespace test { class SumExecutor : public FeatureExecutor { public: - virtual bool isPure() { return true; } - virtual void execute(uint32_t docId); + bool isPure() override { return true; } + void execute(uint32_t docId) override; }; @@ -23,10 +21,10 @@ class SumBlueprint : public Blueprint { public: SumBlueprint(); - virtual void visitDumpFeatures(const IIndexEnvironment & indexEnv, IDumpFeatureVisitor & visitor) const; - virtual Blueprint::UP createInstance() const { return Blueprint::UP(new SumBlueprint()); } - virtual bool setup(const IIndexEnvironment & indexEnv, const StringVector & params); - virtual FeatureExecutor &createExecutor(const IQueryEnvironment & queryEnv, vespalib::Stash &stash) const override; + void visitDumpFeatures(const IIndexEnvironment & indexEnv, IDumpFeatureVisitor & visitor) const override; + Blueprint::UP createInstance() const override { return Blueprint::UP(new SumBlueprint()); } + bool setup(const IIndexEnvironment & indexEnv, const StringVector & params) override; + FeatureExecutor &createExecutor(const IQueryEnvironment & queryEnv, vespalib::Stash &stash) const override; }; } // namespace test diff --git a/searchlib/src/vespa/searchlib/fef/test/queryenvironment.h b/searchlib/src/vespa/searchlib/fef/test/queryenvironment.h index 6c797dc5934..5cd37e9df9a 100644 --- a/searchlib/src/vespa/searchlib/fef/test/queryenvironment.h +++ b/searchlib/src/vespa/searchlib/fef/test/queryenvironment.h @@ -1,11 +1,11 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once +#include "indexenvironment.h" #include <vespa/searchcommon/attribute/iattributecontext.h> #include <vespa/searchlib/fef/iqueryenvironment.h> #include <vespa/searchlib/fef/location.h> #include <vespa/searchlib/fef/simpletermdata.h> -#include "indexenvironment.h" namespace search { namespace fef { @@ -35,23 +35,12 @@ public: QueryEnvironment(IndexEnvironment *indexEnv = NULL); ~QueryEnvironment(); - // Inherit doc from IQueryEnvironment. - virtual const Properties &getProperties() const { return _properties; } - - // Inherit doc from IQueryEnvironment. - virtual uint32_t getNumTerms() const { return _terms.size(); } - - // Inherit doc from IQueryEnvironment. - virtual const ITermData *getTerm(uint32_t idx) const { return idx < _terms.size() ? &_terms[idx] : NULL; } - - // Inherit doc from IQueryEnvironment. - virtual const Location & getLocation() const { return _location; } - - // Inherit doc from IQueryEnvironment. - virtual const search::attribute::IAttributeContext &getAttributeContext() const { return *_attrCtx; } - - // Inherit doc from IQueryEnvironment. - virtual const IIndexEnvironment &getIndexEnvironment() const { assert(_indexEnv != NULL); return *_indexEnv; } + const Properties &getProperties() const override { return _properties; } + uint32_t getNumTerms() const override { return _terms.size(); } + const ITermData *getTerm(uint32_t idx) const override { return idx < _terms.size() ? &_terms[idx] : NULL; } + const Location & getLocation() const override { return _location; } + const search::attribute::IAttributeContext &getAttributeContext() const override { return *_attrCtx; } + const IIndexEnvironment &getIndexEnvironment() const override { assert(_indexEnv != NULL); return *_indexEnv; } /** Returns a reference to the index environment of this. */ IndexEnvironment *getIndexEnv() { return _indexEnv; } diff --git a/searchlib/src/vespa/searchlib/index/dictionaryfile.cpp b/searchlib/src/vespa/searchlib/index/dictionaryfile.cpp index 9915e2c56e1..6b6e354d4ab 100644 --- a/searchlib/src/vespa/searchlib/index/dictionaryfile.cpp +++ b/searchlib/src/vespa/searchlib/index/dictionaryfile.cpp @@ -1,34 +1,29 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/fastos/fastos.h> -#include <vespa/log/log.h> -LOG_SETUP(".index.dictionaryfile"); #include "dictionaryfile.h" +#include <vespa/fastos/file.h> -namespace search -{ - -namespace index -{ +namespace search { +namespace index { -DictionaryFileSeqRead::~DictionaryFileSeqRead(void) +DictionaryFileSeqRead::~DictionaryFileSeqRead() { } -DictionaryFileSeqWrite::~DictionaryFileSeqWrite(void) +DictionaryFileSeqWrite::~DictionaryFileSeqWrite() { } -DictionaryFileRandRead::DictionaryFileRandRead(void) +DictionaryFileRandRead::DictionaryFileRandRead() : _memoryMapped(false) { } -DictionaryFileRandRead::~DictionaryFileRandRead(void) +DictionaryFileRandRead::~DictionaryFileRandRead() { } diff --git a/searchlib/src/vespa/searchlib/index/dictionaryfile.h b/searchlib/src/vespa/searchlib/index/dictionaryfile.h index b89fefce354..846a0f3b461 100644 --- a/searchlib/src/vespa/searchlib/index/dictionaryfile.h +++ b/searchlib/src/vespa/searchlib/index/dictionaryfile.h @@ -21,7 +21,7 @@ class DictionaryFileSeqRead : public PostingListCountFileSeqRead { public: DictionaryFileSeqRead() { } - virtual ~DictionaryFileSeqRead(); + ~DictionaryFileSeqRead(); /** * Read word and counts. Only nonzero counts are returned. If at @@ -29,11 +29,6 @@ public: */ virtual void readWord(vespalib::string &word, uint64_t &wordNum, PostingListCounts &counts) = 0; - /** - * Open dictionary file for sequential read. - */ - virtual bool open(const vespalib::string &name, const TuneFileSeqRead &tuneFileRead) = 0; - static uint64_t noWordNum() { return 0u; } static uint64_t noWordNumHigh() { @@ -49,7 +44,7 @@ class DictionaryFileSeqWrite : public PostingListCountFileSeqWrite protected: public: DictionaryFileSeqWrite() { } - virtual ~DictionaryFileSeqWrite(); + ~DictionaryFileSeqWrite(); /** * Write word and counts. Only nonzero counts should be supplied. @@ -93,4 +88,3 @@ protected: } // namespace index } // namespace search - diff --git a/searchlib/src/vespa/searchlib/index/docbuilder.h b/searchlib/src/vespa/searchlib/index/docbuilder.h index 8bb5f08d722..5b82725daf9 100644 --- a/searchlib/src/vespa/searchlib/index/docbuilder.h +++ b/searchlib/src/vespa/searchlib/index/docbuilder.h @@ -46,69 +46,48 @@ private: virtual void endElement() { throw Error("Function not supported"); } virtual void addStr(const vespalib::string & val) { (void) val; throw Error("Function not supported"); } - virtual void - addSpace(void) - { + virtual void addSpace() { throw Error("Function not supported"); } - virtual void - addNoWordStr(const vespalib::string & val) - { + virtual void addNoWordStr(const vespalib::string & val) { (void) val; throw Error("Function not supported"); } - virtual void - addTokenizedString(const vespalib::string &val, - bool urlMode) - { + virtual void addTokenizedString(const vespalib::string &val, bool urlMode) { (void) val; (void) urlMode; throw Error("Function not supported"); } - virtual void - addSpan(size_t start, size_t len) - { + virtual void addSpan(size_t start, size_t len) { (void) start; (void) len; throw Error("Function not supported"); } - virtual void - addSpan(void) - { + virtual void addSpan() { throw Error("Function not supported"); } - virtual void - addSpaceTokenAnnotation(void) - { + virtual void addSpaceTokenAnnotation() { throw Error("Function not supported"); } - virtual void - addNumericTokenAnnotation(void) - { + virtual void addNumericTokenAnnotation() { throw Error("Function not supported"); } - virtual void - addAlphabeticTokenAnnotation(void) - { + virtual void addAlphabeticTokenAnnotation() { throw Error("Function not supported"); } - virtual void - addTermAnnotation(void) - { + virtual void addTermAnnotation() { throw Error("Function not supported"); } - virtual void - addTermAnnotation(const vespalib::string &val) - { + virtual void addTermAnnotation(const vespalib::string &val) { (void) val; throw Error("Function not supported"); } @@ -124,56 +103,37 @@ private: const document::FieldValue::UP & getValue() const { return _value; } const Schema::Field & getField() const { return _sfield; } - virtual void - onEndElement(void) - { - } - - virtual void - onEndField(void) - { - } + virtual void onEndElement() {} + virtual void onEndField() {} - virtual void - setAutoAnnotate(bool autoAnnotate) - { + virtual void setAutoAnnotate(bool autoAnnotate) { (void) autoAnnotate; throw Error("Function not supported"); } - virtual void - setAutoSpace(bool autoSpace) - { + virtual void setAutoSpace(bool autoSpace) { (void) autoSpace; throw Error("Function not supported"); } - virtual void - addPosition(int32_t xpos, int32_t ypos) - { + virtual void addPosition(int32_t xpos, int32_t ypos) { (void) xpos; (void) ypos; throw Error("Function not supported"); } - virtual void - addRaw(const void *buf, size_t len) - { + virtual void addRaw(const void *buf, size_t len) { (void) buf; (void) len; throw Error("Function not supported"); } - virtual void - startSubField(const vespalib::string &subField) - { + virtual void startSubField(const vespalib::string &subField) { (void) subField; throw Error("Function not supported"); } - virtual void - endSubField(void) - { + virtual void endSubField() { throw Error("Function not supported"); } }; @@ -186,8 +146,8 @@ private: int32_t _elementWeight; public: CollectionFieldHandle(const document::Field & dfield, const Schema::Field & sfield); - virtual void startElement(int32_t weight); - virtual void endElement(); + void startElement(int32_t weight) override; + void endElement() override; }; /** @@ -208,67 +168,31 @@ private: vespalib::string _subField; const document::FixedTypeRepo & _repo; - void - append(const vespalib::string &val); + void append(const vespalib::string &val); public: IndexFieldHandle(const document::FixedTypeRepo & repo, const document::Field &dfield, const Schema::Field &sfield); - virtual void addStr(const vespalib::string & val); - - virtual void - addSpace(void); - - virtual void - addNoWordStr(const vespalib::string & val); - - void - addTokenizedString(const vespalib::string &val, - bool urlMode); - - virtual void - addSpan(size_t start, size_t len); - - virtual void - addSpan(void); - - virtual void - addSpaceTokenAnnotation(void); - - virtual void - addNumericTokenAnnotation(void); - - virtual void - addAlphabeticTokenAnnotation(void); - - virtual void - addTermAnnotation(void); - - virtual void - addTermAnnotation(const vespalib::string &val); - - virtual void - onEndElement(void); - - virtual void - onEndField(void); - - void - startAnnotate(void); - - virtual void - setAutoAnnotate(bool autoAnnotate); - - virtual void - setAutoSpace(bool autoSpace); - - virtual void - startSubField(const vespalib::string &subField); - - virtual void - endSubField(void); + void addStr(const vespalib::string & val) override; + void addSpace() override; + void addNoWordStr(const vespalib::string & val) override; + void addTokenizedString(const vespalib::string &val, bool urlMode) override; + void addSpan(size_t start, size_t len) override; + void addSpan() override; + void addSpaceTokenAnnotation() override; + void addNumericTokenAnnotation() override; + void addAlphabeticTokenAnnotation() override; + void addTermAnnotation() override; + void addTermAnnotation(const vespalib::string &val) override; + void onEndElement() override; + void onEndField() override; + void startAnnotate(); + void setAutoAnnotate(bool autoAnnotate) override; + void setAutoSpace(bool autoSpace) override; + void startSubField(const vespalib::string &subField) override; + void endSubField() override; }; /** @@ -278,15 +202,12 @@ private: { public: AttributeFieldHandle(const document::Field & dfield, const Schema::Field & sfield); - virtual void addStr(const vespalib::string & val); - virtual void addInt(int64_t val); - virtual void addFloat(double val); - virtual void addPredicate(std::unique_ptr<vespalib::Slime> val); - virtual void addTensor(std::unique_ptr<vespalib::tensor::Tensor> val) - override; - - virtual void - addPosition(int32_t xpos, int32_t ypos); + void addStr(const vespalib::string & val) override; + void addInt(int64_t val) override; + void addFloat(double val) override; + void addPredicate(std::unique_ptr<vespalib::Slime> val) override; + void addTensor(std::unique_ptr<vespalib::tensor::Tensor> val) override; + void addPosition(int32_t xpos, int32_t ypos) override; }; /** @@ -295,12 +216,10 @@ private: class SummaryFieldHandle : public CollectionFieldHandle { public: SummaryFieldHandle(const document::Field & dfield, const Schema::Field & sfield); - virtual void addStr(const vespalib::string & val); - virtual void addInt(int64_t val); - virtual void addFloat(double val); - - virtual void - addRaw(const void *buf, size_t len); + void addStr(const vespalib::string & val) override; + void addInt(int64_t val) override; + void addFloat(double val) override; + void addRaw(const void *buf, size_t len) override; }; /** @@ -326,9 +245,7 @@ private: void startSummaryField(const Schema::Field & sfield) { _fieldHandle.reset(new SummaryFieldHandle(_type->getField(sfield.getName()), sfield)); } - void - endField() - { + void endField() { _fieldHandle->onEndField(); _doc->setValue(_type->getField(_fieldHandle->getField().getName()), *_fieldHandle->getValue()); _fieldHandle.reset(static_cast<FieldHandle *>(NULL)); @@ -357,76 +274,36 @@ public: DocBuilder & startAttributeField(const vespalib::string & name); DocBuilder & startSummaryField(const vespalib::string & name); DocBuilder & endField(); - DocBuilder & startElement(int32_t weight = 1); DocBuilder & endElement(); - DocBuilder & addStr(const vespalib::string & val); - DocBuilder & addSpace(void); + DocBuilder & addSpace(); DocBuilder & addNoWordStr(const vespalib::string & val); DocBuilder & addInt(int64_t val); DocBuilder & addFloat(double val); DocBuilder & addPredicate(std::unique_ptr<vespalib::Slime> val); DocBuilder & addTensor(std::unique_ptr<vespalib::tensor::Tensor> val); - - DocBuilder & - addTokenizedString(const vespalib::string &val); - - DocBuilder & - addUrlTokenizedString(const vespalib::string &val); - - DocBuilder & - addSpan(size_t start, size_t len); - - DocBuilder & - addSpan(void); - - DocBuilder & - addSpaceTokenAnnotation(void); - - DocBuilder & - addNumericTokenAnnotation(void); - - DocBuilder & - addAlphabeticTokenAnnotation(void); - - DocBuilder& - addTermAnnotation(void); - - DocBuilder & - addTermAnnotation(const vespalib::string &val); - - DocBuilder & - setAutoAnnotate(bool autoAnnotate); - - DocBuilder & - setAutoSpace(bool autoSpace); - - DocBuilder & - addPosition(int32_t xpos, int32_t ypos); - - DocBuilder & - addRaw(const void *buf, size_t len); - - DocBuilder & - startSubField(const vespalib::string &subField); - - DocBuilder & - endSubField(void); - - static bool - hasAnnotations(void) - { - return true; - } + DocBuilder &addTokenizedString(const vespalib::string &val); + DocBuilder &addUrlTokenizedString(const vespalib::string &val); + DocBuilder &addSpan(size_t start, size_t len); + DocBuilder &addSpan(); + DocBuilder &addSpaceTokenAnnotation(); + DocBuilder &addNumericTokenAnnotation(); + DocBuilder &addAlphabeticTokenAnnotation(); + DocBuilder &addTermAnnotation(); + DocBuilder &addTermAnnotation(const vespalib::string &val); + DocBuilder &setAutoAnnotate(bool autoAnnotate); + DocBuilder &setAutoSpace(bool autoSpace); + DocBuilder &addPosition(int32_t xpos, int32_t ypos); + DocBuilder &addRaw(const void *buf, size_t len); + DocBuilder &startSubField(const vespalib::string &subField); + DocBuilder &endSubField(); + static bool hasAnnotations() { return true; } const document::DocumentType &getDocumentType() const { return _docType; } - const document::DocumentTypeRepo::SP &getDocumentTypeRepo() const - { return _repo; } - document::DocumenttypesConfig getDocumenttypesConfig() const - { return _doctypes_config; } + const document::DocumentTypeRepo::SP &getDocumentTypeRepo() const { return _repo; } + document::DocumenttypesConfig getDocumenttypesConfig() const { return _doctypes_config; } }; } // namespace search::index } // namespace search - diff --git a/searchlib/src/vespa/searchlib/index/dummyfileheadercontext.h b/searchlib/src/vespa/searchlib/index/dummyfileheadercontext.h index c7270dcf61e..8e659f90d4a 100644 --- a/searchlib/src/vespa/searchlib/index/dummyfileheadercontext.h +++ b/searchlib/src/vespa/searchlib/index/dummyfileheadercontext.h @@ -3,18 +3,10 @@ #include <vespa/searchlib/common/fileheadercontext.h> -namespace vespalib -{ - -class GenericHeader; - -} +namespace vespalib { class GenericHeader; } -namespace search -{ - -namespace index -{ +namespace search { +namespace index { class DummyFileHeaderContext : public common::FileHeaderContext { @@ -24,24 +16,13 @@ class DummyFileHeaderContext : public common::FileHeaderContext static vespalib::string _creator; public: - DummyFileHeaderContext(void); - - virtual - ~DummyFileHeaderContext(void); - - void - disableFileName(void); - - virtual void - addTags(vespalib::GenericHeader &header, - const vespalib::string &name) const; - - static void - setCreator(const vespalib::string &creator); + DummyFileHeaderContext(); + ~DummyFileHeaderContext(); + void disableFileName(); + void addTags(vespalib::GenericHeader &header, const vespalib::string &name) const override; + static void setCreator(const vespalib::string &creator); }; - } // namespace index } // namespace search - diff --git a/searchlib/src/vespa/searchlib/index/postinglistcountfile.h b/searchlib/src/vespa/searchlib/index/postinglistcountfile.h index f9b1c66bf9c..217bb10b214 100644 --- a/searchlib/src/vespa/searchlib/index/postinglistcountfile.h +++ b/searchlib/src/vespa/searchlib/index/postinglistcountfile.h @@ -1,30 +1,17 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/index/postinglistparams.h> +#include "postinglistparams.h" #include "postinglistcounts.h" #include <vespa/searchlib/common/tunefileinfo.h> -#include <string> -namespace vespalib -{ - -class nbostream; - -} - -namespace search -{ - -namespace common -{ +namespace vespalib { class nbostream; } -class FileHeaderContext; +namespace search { -} +namespace common { class FileHeaderContext; } -namespace index -{ +namespace index { class PostingListCounts; class PostingListHandle; @@ -42,10 +29,9 @@ class PostingListHandle; class PostingListCountFileSeqRead { public: - PostingListCountFileSeqRead(void); + PostingListCountFileSeqRead(); - virtual - ~PostingListCountFileSeqRead(void); + virtual ~PostingListCountFileSeqRead(); /** * Checkpoint write. Used at semi-regular intervals during indexing @@ -53,43 +39,36 @@ public: * flush from memory to disk, and possibly also sync to permanent * storage media. */ - virtual void - checkPointWrite(vespalib::nbostream &out) = 0; + virtual void checkPointWrite(vespalib::nbostream &out) = 0; /** * Checkpoint read. Used when resuming indexing after an interrupt. */ - virtual void - checkPointRead(vespalib::nbostream &in) = 0; + virtual void checkPointRead(vespalib::nbostream &in) = 0; /** * Open posting list count file for sequential read. */ - virtual bool - open(const vespalib::string &name, - const TuneFileSeqRead &tuneFileRead) = 0; + virtual bool open(const vespalib::string &name, const TuneFileSeqRead &tuneFileRead) = 0; /** * Close posting list count file. */ - virtual bool - close(void) = 0; + virtual bool close() = 0; /* * Get current parameters. */ - virtual void - getParams(PostingListParams ¶ms); + virtual void getParams(PostingListParams ¶ms); }; class PostingListCountFileSeqWrite { public: - PostingListCountFileSeqWrite(void); + PostingListCountFileSeqWrite(); - virtual - ~PostingListCountFileSeqWrite(void); + virtual ~PostingListCountFileSeqWrite(); /** * Checkpoint write. Used at semi-regular intervals during indexing @@ -97,40 +76,34 @@ public: * flush from memory to disk, and possibly also sync to permanent * storage media. */ - virtual void - checkPointWrite(vespalib::nbostream &out) = 0; + virtual void checkPointWrite(vespalib::nbostream &out) = 0; /** * Checkpoint read. Used when resuming indexing after an interrupt. */ - virtual void - checkPointRead(vespalib::nbostream &in) = 0; + virtual void checkPointRead(vespalib::nbostream &in) = 0; /** * Open posting list count file for sequential write. */ - virtual bool - open(const vespalib::string &name, - const TuneFileSeqWrite &tuneFileWrite, - const common::FileHeaderContext &fileHeaderContext) = 0; + virtual bool open(const vespalib::string &name, + const TuneFileSeqWrite &tuneFileWrite, + const common::FileHeaderContext &fileHeaderContext) = 0; /** * Close posting list count file. */ - virtual bool - close(void) = 0; + virtual bool close() = 0; /* * Set parameters. */ - virtual void - setParams(const PostingListParams ¶ms); + virtual void setParams(const PostingListParams ¶ms); /* * Get current parameters. */ - virtual void - getParams(PostingListParams ¶ms); + virtual void getParams(PostingListParams ¶ms); }; diff --git a/searchlib/src/vespa/searchlib/index/postinglistfile.h b/searchlib/src/vespa/searchlib/index/postinglistfile.h index bcf5427a386..1fe82277de7 100644 --- a/searchlib/src/vespa/searchlib/index/postinglistfile.h +++ b/searchlib/src/vespa/searchlib/index/postinglistfile.h @@ -1,9 +1,9 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/index/postinglistcounts.h> -#include <vespa/searchlib/index/postinglisthandle.h> -#include <vespa/searchlib/index/postinglistparams.h> +#include "postinglistcounts.h" +#include "postinglisthandle.h" +#include "postinglistparams.h" #include <vespa/searchlib/common/tunefileinfo.h> class FastOS_FileInterface; @@ -251,23 +251,19 @@ protected: public: PostingListFileRandReadPassThrough(PostingListFileRandRead *lower, bool ownLower); - virtual~PostingListFileRandReadPassThrough(); + ~PostingListFileRandReadPassThrough(); - virtual search::queryeval::SearchIterator * + search::queryeval::SearchIterator * createIterator(const PostingListCounts &counts, const PostingListHandle &handle, const search::fef::TermFieldMatchDataArray &matchData, - bool usebitVector) const; - - virtual void - readPostingList(const PostingListCounts &counts, - uint32_t firstSegment, - uint32_t numSegments, - PostingListHandle &handle); + bool usebitVector) const override; - virtual bool open(const vespalib::string &name, const TuneFileRandRead &tuneFileRead); + void readPostingList(const PostingListCounts &counts, uint32_t firstSegment, + uint32_t numSegments, PostingListHandle &handle) override; - virtual bool close(); + bool open(const vespalib::string &name, const TuneFileRandRead &tuneFileRead) override; + bool close() override; }; diff --git a/searchlib/src/vespa/searchlib/memoryindex/memoryindex.cpp b/searchlib/src/vespa/searchlib/memoryindex/memoryindex.cpp index 616c2b7631a..34021ebeab6 100644 --- a/searchlib/src/vespa/searchlib/memoryindex/memoryindex.cpp +++ b/searchlib/src/vespa/searchlib/memoryindex/memoryindex.cpp @@ -166,9 +166,8 @@ public: setEstimate(estimate); } - virtual SearchIterator::UP - createLeafSearch(const TermFieldMatchDataArray &tfmda, bool) const - { + SearchIterator::UP + createLeafSearch(const TermFieldMatchDataArray &tfmda, bool) const override { SearchIterator::UP search(new PostingIterator(_pitr, _featureStore, _fieldId, tfmda)); if (_useBitVector) { LOG(debug, "Return BooleanMatchIteratorWrapper: fieldId(%u), docCount(%zu)", @@ -218,16 +217,16 @@ public: _field, _fieldId, useBitVector))); } - virtual void visit(LocationTerm &n) { visitTerm(n); } - virtual void visit(PrefixTerm &n) { visitTerm(n); } - virtual void visit(RangeTerm &n) { visitTerm(n); } - virtual void visit(StringTerm &n) { visitTerm(n); } - virtual void visit(SubstringTerm &n) { visitTerm(n); } - virtual void visit(SuffixTerm &n) { visitTerm(n); } - virtual void visit(RegExpTerm &n) { visitTerm(n); } - virtual void visit(PredicateQuery &) { } + void visit(LocationTerm &n) override { visitTerm(n); } + void visit(PrefixTerm &n) override { visitTerm(n); } + void visit(RangeTerm &n) override { visitTerm(n); } + void visit(StringTerm &n) override { visitTerm(n); } + void visit(SubstringTerm &n) override { visitTerm(n); } + void visit(SuffixTerm &n) override { visitTerm(n); } + void visit(RegExpTerm &n) override { visitTerm(n); } + void visit(PredicateQuery &) override { } - virtual void visit(NumberTerm &n) { + void visit(NumberTerm &n) override { handleNumberTermAsText(n); } diff --git a/searchlib/src/vespa/searchlib/memoryindex/memoryindex.h b/searchlib/src/vespa/searchlib/memoryindex/memoryindex.h index 8f1b4896fb6..10ab298bd80 100644 --- a/searchlib/src/vespa/searchlib/memoryindex/memoryindex.h +++ b/searchlib/src/vespa/searchlib/memoryindex/memoryindex.h @@ -137,15 +137,15 @@ public: void dump(index::IndexBuilder &indexBuilder); // implements Searchable - virtual queryeval::Blueprint::UP + queryeval::Blueprint::UP createBlueprint(const queryeval::IRequestContext & requestContext, const queryeval::FieldSpec &field, - const query::Node &term); + const query::Node &term) override; - virtual queryeval::Blueprint::UP + queryeval::Blueprint::UP createBlueprint(const queryeval::IRequestContext & requestContext, const queryeval::FieldSpecList &fields, - const query::Node &term) { + const query::Node &term) override { return queryeval::Searchable::createBlueprint(requestContext, fields, term); } diff --git a/searchlib/src/vespa/searchlib/predicate/predicate_index.cpp b/searchlib/src/vespa/searchlib/predicate/predicate_index.cpp index ef7bde8ac87..60d4e6f9846 100644 --- a/searchlib/src/vespa/searchlib/predicate/predicate_index.cpp +++ b/searchlib/src/vespa/searchlib/predicate/predicate_index.cpp @@ -55,8 +55,7 @@ class IntervalSerializer : public PostingSerializer<EntryRef> { const PredicateIntervalStore &_store; public: IntervalSerializer(const PredicateIntervalStore &store) : _store(store) {} - virtual void serialize(const EntryRef &ref, - vespalib::DataBuffer &buffer) const { + void serialize(const EntryRef &ref, vespalib::DataBuffer &buffer) const override { uint32_t size; IntervalT single_buf; const IntervalT *interval = _store.get(ref, size, &single_buf); @@ -74,7 +73,7 @@ class IntervalDeserializer : public PostingDeserializer<EntryRef> { PredicateIntervalStore &_store; public: IntervalDeserializer(PredicateIntervalStore &store) : _store(store) {} - virtual EntryRef deserialize(vespalib::DataBuffer &buffer) { + EntryRef deserialize(vespalib::DataBuffer &buffer) override { std::vector<IntervalT> intervals; size_t size = buffer.readInt16(); for (uint32_t i = 0; i < size; ++i) { diff --git a/searchlib/src/vespa/searchlib/query/query.h b/searchlib/src/vespa/searchlib/query/query.h index 6be1e1867c5..82d849fe44d 100644 --- a/searchlib/src/vespa/searchlib/query/query.h +++ b/searchlib/src/vespa/searchlib/query/query.h @@ -17,20 +17,17 @@ class QueryConnector : public QueryNode, public QueryNodeList public: QueryConnector(const char * opName); ~QueryConnector(); - virtual const HitList & evaluateHits(HitList & hl) const; - /// Will clear the results from the querytree. - virtual void reset(); - /// Will get all leafnodes. - virtual void getLeafs(QueryTermList & tl); - virtual void getLeafs(ConstQueryTermList & tl) const; - /// Gives you all phrases of this tree. - virtual void getPhrases(QueryNodeRefList & tl); - virtual void getPhrases(ConstQueryNodeRefList & tl) const; - virtual size_t depth() const; - virtual size_t width() const; + const HitList & evaluateHits(HitList & hl) const override; + void reset() override; + void getLeafs(QueryTermList & tl) override; + void getLeafs(ConstQueryTermList & tl) const override; + void getPhrases(QueryNodeRefList & tl) override; + void getPhrases(ConstQueryNodeRefList & tl) const override; + size_t depth() const override; + size_t width() const override; virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; - virtual void setIndex(const vespalib::string & index) { _index = index; } - virtual const vespalib::string & getIndex() const { return _index; } + void setIndex(const vespalib::string & index) override { _index = index; } + const vespalib::string & getIndex() const override { return _index; } static QueryConnector * create(ParseItem::ItemType type); virtual bool isFlattenable(ParseItem::ItemType type) const { (void) type; return false; } private: @@ -45,7 +42,7 @@ class TrueNode : public QueryConnector { public: TrueNode() : QueryConnector("AND") { } - virtual bool evaluate() const; + bool evaluate() const override; }; /** @@ -56,8 +53,8 @@ class AndQueryNode : public QueryConnector public: AndQueryNode() : QueryConnector("AND") { } AndQueryNode(const char * opName) : QueryConnector(opName) { } - virtual bool evaluate() const; - virtual bool isFlattenable(ParseItem::ItemType type) const { return type == ParseItem::ITEM_AND; } + bool evaluate() const override; + bool isFlattenable(ParseItem::ItemType type) const override { return type == ParseItem::ITEM_AND; } }; /** @@ -67,8 +64,8 @@ class AndNotQueryNode : public QueryConnector { public: AndNotQueryNode() : QueryConnector("ANDNOT") { } - virtual bool evaluate() const; - virtual bool isFlattenable(ParseItem::ItemType type) const { return type == ParseItem::ITEM_NOT; } + bool evaluate() const override; + bool isFlattenable(ParseItem::ItemType type) const override { return type == ParseItem::ITEM_NOT; } }; /** @@ -79,8 +76,8 @@ class OrQueryNode : public QueryConnector public: OrQueryNode() : QueryConnector("OR") { } OrQueryNode(const char * opName) : QueryConnector(opName) { } - virtual bool evaluate() const; - virtual bool isFlattenable(ParseItem::ItemType type) const { + bool evaluate() const override; + bool isFlattenable(ParseItem::ItemType type) const override { return (type == ParseItem::ITEM_OR) || (type == ParseItem::ITEM_DOT_PRODUCT) || (type == ParseItem::ITEM_WAND) || @@ -95,8 +92,8 @@ class EquivQueryNode : public OrQueryNode { public: EquivQueryNode() : OrQueryNode("EQUIV") { } - virtual bool evaluate() const; - virtual bool isFlattenable(ParseItem::ItemType type) const { + bool evaluate() const override; + bool isFlattenable(ParseItem::ItemType type) const override { return (type == ParseItem::ITEM_EQUIV) || (type == ParseItem::ITEM_WEIGHTED_SET); } @@ -110,13 +107,13 @@ class PhraseQueryNode : public AndQueryNode { public: PhraseQueryNode() : AndQueryNode("PHRASE"), _fieldInfo(32) { } - virtual bool evaluate() const; - virtual const HitList & evaluateHits(HitList & hl) const; - virtual void getPhrases(QueryNodeRefList & tl); - virtual void getPhrases(ConstQueryNodeRefList & tl) const; + bool evaluate() const override; + const HitList & evaluateHits(HitList & hl) const override; + void getPhrases(QueryNodeRefList & tl) override; + void getPhrases(ConstQueryNodeRefList & tl) const override; const QueryTerm::FieldInfo & getFieldInfo(size_t fid) const { return _fieldInfo[fid]; } size_t getFieldInfoSize() const { return _fieldInfo.size(); } - virtual bool isFlattenable(ParseItem::ItemType type) const { return type == ParseItem::ITEM_NOT; } + bool isFlattenable(ParseItem::ItemType type) const override { return type == ParseItem::ITEM_NOT; } private: mutable std::vector<QueryTerm::FieldInfo> _fieldInfo; void updateFieldInfo(size_t fid, size_t offset, size_t fieldLength) const; @@ -133,7 +130,7 @@ class NotQueryNode : public QueryConnector { public: NotQueryNode() : QueryConnector("NOT") { } - virtual bool evaluate() const; + bool evaluate() const override; }; /** @@ -144,11 +141,11 @@ class NearQueryNode : public AndQueryNode public: NearQueryNode() : AndQueryNode("NEAR"), _distance(0) { } NearQueryNode(const char * opName) : AndQueryNode(opName), _distance(0) { } - virtual bool evaluate() const; + bool evaluate() const override; void distance(size_t dist) { _distance = dist; } size_t distance() const { return _distance; } - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; - virtual bool isFlattenable(ParseItem::ItemType type) const { return type == ParseItem::ITEM_NOT; } + void visitMembers(vespalib::ObjectVisitor &visitor) const override; + bool isFlattenable(ParseItem::ItemType type) const override { return type == ParseItem::ITEM_NOT; } private: size_t _distance; }; @@ -161,8 +158,8 @@ class ONearQueryNode : public NearQueryNode { public: ONearQueryNode() : NearQueryNode("ONEAR") { } - virtual ~ONearQueryNode() { } - virtual bool evaluate() const; + ~ONearQueryNode() { } + bool evaluate() const override; }; /** @@ -199,4 +196,3 @@ private: }; } - diff --git a/searchlib/src/vespa/searchlib/query/queryterm.h b/searchlib/src/vespa/searchlib/query/queryterm.h index 5d275dc1d07..793b6b20596 100644 --- a/searchlib/src/vespa/searchlib/query/queryterm.h +++ b/searchlib/src/vespa/searchlib/query/queryterm.h @@ -103,7 +103,7 @@ public: size_t getTermLen() const { return _cachedTermLen; } size_t term(const char * & t) const { t = getTerm(); return _cachedTermLen; } UCS4StringT getUCS4Term() const; - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; + void visitMembers(vespalib::ObjectVisitor &visitor) const override; size_t term(const ucs4_t * & t) { if (_termUCS4.empty()) { _termUCS4 = getUCS4Term(); @@ -162,16 +162,16 @@ public: QueryTerm & operator = (const QueryTerm &) = default; QueryTerm(QueryTerm &&) = default; QueryTerm & operator = (QueryTerm &&) = default; - virtual ~QueryTerm(); - virtual bool evaluate() const; - virtual const HitList & evaluateHits(HitList & hl) const; - virtual void reset(); - virtual void getLeafs(QueryTermList & tl); - virtual void getLeafs(ConstQueryTermList & tl) const; + ~QueryTerm(); + bool evaluate() const override; + const HitList & evaluateHits(HitList & hl) const override; + void reset() override; + void getLeafs(QueryTermList & tl) override; + void getLeafs(ConstQueryTermList & tl) const override; /// Gives you all phrases of this tree. - virtual void getPhrases(QueryNodeRefList & tl); + void getPhrases(QueryNodeRefList & tl) override; /// Gives you all phrases of this tree. Indicating that they are all const. - virtual void getPhrases(ConstQueryNodeRefList & tl) const; + void getPhrases(ConstQueryNodeRefList & tl) const override; void add(unsigned pos, unsigned context, int32_t weight); EncodingBitMap encoding() const { return _encoding; } @@ -187,9 +187,9 @@ public: size_t getFieldInfoSize() const { return _fieldInfo.size(); } QueryNodeResultBase & getQueryItem() { return *_result; } const HitList & getHitList() const { return _hitList; } - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; - virtual void setIndex(const string & index_) { _index = index_; } - virtual const string & getIndex() const { return _index; } + void visitMembers(vespalib::ObjectVisitor &visitor) const override; + void setIndex(const string & index_) override { _index = index_; } + const string & getIndex() const override { return _index; } protected: using QueryNodeResultBaseContainer = vespalib::CloneablePtr<QueryNodeResultBase>; string _index; diff --git a/searchlib/src/vespa/searchlib/query/tree/querynodemixin.h b/searchlib/src/vespa/searchlib/query/tree/querynodemixin.h index 7fbcb45d742..6e7aebc779e 100644 --- a/searchlib/src/vespa/searchlib/query/tree/querynodemixin.h +++ b/searchlib/src/vespa/searchlib/query/tree/querynodemixin.h @@ -2,7 +2,7 @@ #pragma once -#include <vespa/searchlib/query/tree/queryvisitor.h> +#include "queryvisitor.h" namespace search { namespace query { @@ -11,8 +11,8 @@ template <typename T, typename Base> struct QueryNodeMixin : Base { typedef QueryNodeMixin<T, Base> QueryNodeMixinType; - virtual ~QueryNodeMixin() = 0; - virtual void accept(QueryVisitor &visitor) { + ~QueryNodeMixin() = 0; + void accept(QueryVisitor &visitor) override { visitor.visit(static_cast<T &>(*this)); } diff --git a/searchlib/src/vespa/searchlib/query/tree/stackdumpcreator.cpp b/searchlib/src/vespa/searchlib/query/tree/stackdumpcreator.cpp index 4dc5976b35d..3deefa35bec 100644 --- a/searchlib/src/vespa/searchlib/query/tree/stackdumpcreator.cpp +++ b/searchlib/src/vespa/searchlib/query/tree/stackdumpcreator.cpp @@ -3,12 +3,10 @@ #include "stackdumpcreator.h" #include "intermediatenodes.h" -#include "queryvisitor.h" #include "termnodes.h" #include <vespa/vespalib/objects/nbo.h> #include <vespa/vespalib/stllike/asciistream.h> #include <vespa/searchlib/parsequery/parse.h> -#include <vespa/searchlib/util/rawbuf.h> using vespalib::string; using std::vector; @@ -90,35 +88,35 @@ class QueryNodeConverter : public QueryVisitor { visitNodes(node.getChildren()); } - virtual void visit(And &node) { + void visit(And &node) override { createIntermediate(node, ParseItem::ITEM_AND); } - virtual void visit(AndNot &node) { + void visit(AndNot &node) override { createIntermediate(node, ParseItem::ITEM_NOT); } - virtual void visit(Near &node) { + void visit(Near &node) override { createIntermediate(node, ParseItem::ITEM_NEAR, node.getDistance()); } - virtual void visit(ONear &node) { + void visit(ONear &node) override { createIntermediate(node, ParseItem::ITEM_ONEAR, node.getDistance()); } - virtual void visit(Or &node) { + void visit(Or &node) override { createIntermediate(node, ParseItem::ITEM_OR); } - virtual void visit(WeakAnd &node) { + void visit(WeakAnd &node) override { createIntermediate(node, ParseItem::ITEM_WEAK_AND, node.getMinHits(), node.getView()); } - virtual void visit(Equiv &node) { + void visit(Equiv &node) override { createIntermediate(node, ParseItem::ITEM_EQUIV); } - virtual void visit(Phrase &node) { + void visit(Phrase &node) override { uint8_t typefield = (ParseItem::ITEM_PHRASE | ParseItem::IF_WEIGHT); uint8_t flags = 0; if (!node.isRanked()) { @@ -163,17 +161,17 @@ class QueryNodeConverter : public QueryVisitor { appendString(node.getView()); } - virtual void visit(WeightedSetTerm &node) { + void visit(WeightedSetTerm &node) override { createWeightedSet(node, ParseItem::ITEM_WEIGHTED_SET | ParseItem::IF_WEIGHT); visitNodes(node.getChildren()); } - virtual void visit(DotProduct &node) { + void visit(DotProduct &node) override { createWeightedSet(node, ParseItem::ITEM_DOT_PRODUCT | ParseItem::IF_WEIGHT); visitNodes(node.getChildren()); } - virtual void visit(WandTerm &node) { + void visit(WandTerm &node) override { createWeightedSet(node, ParseItem::ITEM_WAND | ParseItem::IF_WEIGHT); appendCompressedPositiveNumber(node.getTargetNumHits()); appendDouble(node.getScoreThreshold()); @@ -181,7 +179,7 @@ class QueryNodeConverter : public QueryVisitor { visitNodes(node.getChildren()); } - virtual void visit(Rank &node) { + void visit(Rank &node) override { createIntermediate(node, ParseItem::ITEM_RANK); } @@ -212,39 +210,39 @@ class QueryNodeConverter : public QueryVisitor { appendTerm(node); } - virtual void visit(NumberTerm &node) { + void visit(NumberTerm &node) override { createTerm(node, ParseItem::ITEM_NUMTERM); } - virtual void visit(LocationTerm &node) { + void visit(LocationTerm &node) override { createTerm(node, ParseItem::ITEM_NUMTERM); } - virtual void visit(PrefixTerm &node) { + void visit(PrefixTerm &node) override { createTerm(node, ParseItem::ITEM_PREFIXTERM); } - virtual void visit(RangeTerm &node) { + void visit(RangeTerm &node) override { createTerm(node, ParseItem::ITEM_NUMTERM); } - virtual void visit(StringTerm &node) { + void visit(StringTerm &node) override { createTerm(node, ParseItem::ITEM_TERM); } - virtual void visit(SubstringTerm &node) { + void visit(SubstringTerm &node) override { createTerm(node, ParseItem::ITEM_SUBSTRINGTERM); } - virtual void visit(SuffixTerm &node) { + void visit(SuffixTerm &node) override { createTerm(node, ParseItem::ITEM_SUFFIXTERM); } - virtual void visit(PredicateQuery &node) { + void visit(PredicateQuery &node) override { createTerm(node, ParseItem::ITEM_PREDICATE_QUERY); } - virtual void visit(RegExpTerm &node) { + void visit(RegExpTerm &node) override { createTerm(node, ParseItem::ITEM_REGEXP); } diff --git a/searchlib/src/vespa/searchlib/queryeval/andnotsearch.h b/searchlib/src/vespa/searchlib/queryeval/andnotsearch.h index f6ff22cc81f..3d5af860585 100644 --- a/searchlib/src/vespa/searchlib/queryeval/andnotsearch.h +++ b/searchlib/src/vespa/searchlib/queryeval/andnotsearch.h @@ -93,8 +93,8 @@ private: } } } - virtual void doSeek(uint32_t docid); - virtual void doUnpack(uint32_t docid); + void doSeek(uint32_t docid) override; + void doUnpack(uint32_t docid) override; }; } // namespace queryeval diff --git a/searchlib/src/vespa/searchlib/queryeval/andsearchnostrict.h b/searchlib/src/vespa/searchlib/queryeval/andsearchnostrict.h index b42359bf760..9329a5c79fb 100644 --- a/searchlib/src/vespa/searchlib/queryeval/andsearchnostrict.h +++ b/searchlib/src/vespa/searchlib/queryeval/andsearchnostrict.h @@ -39,16 +39,16 @@ protected: } Trinary is_strict() const override { return Trinary::False; } - virtual void doUnpack(uint32_t docid) { + void doUnpack(uint32_t docid) override { _unpacker.unpack(docid, *this); } - virtual void onRemove(size_t index) { + void onRemove(size_t index) override { _unpacker.onRemove(index); } - virtual void onInsert(size_t index) { + void onInsert(size_t index) override { _unpacker.onInsert(index); } - virtual bool needUnpack(size_t index) const { + bool needUnpack(size_t index) const override { return _unpacker.needUnpack(index); } diff --git a/searchlib/src/vespa/searchlib/queryeval/booleanmatchiteratorwrapper.h b/searchlib/src/vespa/searchlib/queryeval/booleanmatchiteratorwrapper.h index 52b28330998..9e7680a6d1a 100644 --- a/searchlib/src/vespa/searchlib/queryeval/booleanmatchiteratorwrapper.h +++ b/searchlib/src/vespa/searchlib/queryeval/booleanmatchiteratorwrapper.h @@ -52,7 +52,7 @@ public: BooleanMatchIteratorWrapper(SearchIterator::UP search, const fef::TermFieldMatchDataArray &matchData); - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; + void visitMembers(vespalib::ObjectVisitor &visitor) const override; }; } // namespace queryeval diff --git a/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.h b/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.h index 1e19264e9cb..a5ca13d2cbc 100644 --- a/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.h +++ b/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.h @@ -4,8 +4,6 @@ #include "searchable.h" #include <vespa/searchlib/fef/matchdatalayout.h> -#include <memory> -#include <vector> namespace search { namespace fef { class TermFieldMatchData; } @@ -24,7 +22,7 @@ class DotProductBlueprint : public ComplexLeafBlueprint public: DotProductBlueprint(const FieldSpec &field); - virtual ~DotProductBlueprint(); + ~DotProductBlueprint(); // used by create visitor FieldSpec getNextChildField(const FieldSpec &outer); @@ -32,14 +30,12 @@ public: // used by create visitor void addTerm(Blueprint::UP term, int32_t weight); - virtual SearchIterator::UP + SearchIterator::UP createLeafSearch(const search::fef::TermFieldMatchDataArray &tfmda, - bool strict) const; + bool strict) const override; - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; - - virtual void - fetchPostings(bool strict); + void visitMembers(vespalib::ObjectVisitor &visitor) const override; + void fetchPostings(bool strict) override; }; } // namespace search::queryeval diff --git a/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.h b/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.h index bd01be98ef2..9f577297f94 100644 --- a/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.h +++ b/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.h @@ -5,8 +5,6 @@ #include "blueprint.h" #include "searchable.h" #include <vespa/searchlib/queryeval/multisearch.h> -#include <vector> -#include <map> namespace search { namespace queryeval { @@ -19,17 +17,17 @@ class AndNotBlueprint : public IntermediateBlueprint { public: bool supports_termwise_children() const override { return true; } - virtual HitEstimate combine(const std::vector<HitEstimate> &data) const; - virtual FieldSpecBaseList exposeFields() const; - virtual void optimize_self() override; - virtual Blueprint::UP get_replacement() override; - virtual void sort(std::vector<Blueprint*> &children) const; - virtual bool inheritStrict(size_t i) const; - virtual SearchIterator::UP + HitEstimate combine(const std::vector<HitEstimate> &data) const override; + FieldSpecBaseList exposeFields() const override; + void optimize_self() override; + Blueprint::UP get_replacement() override; + void sort(std::vector<Blueprint*> &children) const override; + bool inheritStrict(size_t i) const override; + SearchIterator::UP createIntermediateSearch(const MultiSearch::Children &subSearches, - bool strict, search::fef::MatchData &md) const; + bool strict, fef::MatchData &md) const override; private: - virtual bool isPositive(size_t index) const { return index == 0; } + bool isPositive(size_t index) const override { return index == 0; } }; //----------------------------------------------------------------------------- @@ -38,15 +36,15 @@ class AndBlueprint : public IntermediateBlueprint { public: bool supports_termwise_children() const override { return true; } - virtual HitEstimate combine(const std::vector<HitEstimate> &data) const; - virtual FieldSpecBaseList exposeFields() const; - virtual void optimize_self() override; - virtual Blueprint::UP get_replacement() override; - virtual void sort(std::vector<Blueprint*> &children) const; - virtual bool inheritStrict(size_t i) const; - virtual SearchIterator::UP + HitEstimate combine(const std::vector<HitEstimate> &data) const override; + FieldSpecBaseList exposeFields() const override; + void optimize_self() override; + Blueprint::UP get_replacement() override; + void sort(std::vector<Blueprint*> &children) const override; + bool inheritStrict(size_t i) const override; + SearchIterator::UP createIntermediateSearch(const MultiSearch::Children &subSearches, - bool strict, search::fef::MatchData &md) const; + bool strict, fef::MatchData &md) const override; }; //----------------------------------------------------------------------------- @@ -55,15 +53,15 @@ class OrBlueprint : public IntermediateBlueprint { public: bool supports_termwise_children() const override { return true; } - virtual HitEstimate combine(const std::vector<HitEstimate> &data) const; - virtual FieldSpecBaseList exposeFields() const; - virtual void optimize_self() override; - virtual Blueprint::UP get_replacement() override; - virtual void sort(std::vector<Blueprint*> &children) const; - virtual bool inheritStrict(size_t i) const; - virtual SearchIterator::UP + HitEstimate combine(const std::vector<HitEstimate> &data) const override; + FieldSpecBaseList exposeFields() const override; + void optimize_self() override; + Blueprint::UP get_replacement() override; + void sort(std::vector<Blueprint*> &children) const override; + bool inheritStrict(size_t i) const override; + SearchIterator::UP createIntermediateSearch(const MultiSearch::Children &subSearches, - bool strict, search::fef::MatchData &md) const; + bool strict, fef::MatchData &md) const override; }; //----------------------------------------------------------------------------- @@ -75,13 +73,13 @@ private: std::vector<uint32_t> _weights; public: - virtual HitEstimate combine(const std::vector<HitEstimate> &data) const; - virtual FieldSpecBaseList exposeFields() const; - virtual void sort(std::vector<Blueprint*> &children) const; - virtual bool inheritStrict(size_t i) const; - virtual SearchIterator::UP + HitEstimate combine(const std::vector<HitEstimate> &data) const override; + FieldSpecBaseList exposeFields() const override; + void sort(std::vector<Blueprint*> &children) const override; + bool inheritStrict(size_t i) const override; + SearchIterator::UP createIntermediateSearch(const MultiSearch::Children &subSearches, - bool strict, search::fef::MatchData &md) const; + bool strict, fef::MatchData &md) const override; WeakAndBlueprint(uint32_t n) : _n(n) {} void addTerm(Blueprint::UP bp, uint32_t weight) { @@ -100,14 +98,14 @@ private: uint32_t _window; public: - virtual HitEstimate combine(const std::vector<HitEstimate> &data) const; - virtual FieldSpecBaseList exposeFields() const; - virtual bool should_optimize_children() const override { return false; } - virtual void sort(std::vector<Blueprint*> &children) const; - virtual bool inheritStrict(size_t i) const; - virtual SearchIterator::UP + HitEstimate combine(const std::vector<HitEstimate> &data) const override; + FieldSpecBaseList exposeFields() const override; + bool should_optimize_children() const override { return false; } + void sort(std::vector<Blueprint*> &children) const override; + bool inheritStrict(size_t i) const override; + SearchIterator::UP createIntermediateSearch(const MultiSearch::Children &subSearches, - bool strict, search::fef::MatchData &md) const; + bool strict, fef::MatchData &md) const override; NearBlueprint(uint32_t window) : _window(window) {} }; @@ -120,14 +118,14 @@ private: uint32_t _window; public: - virtual HitEstimate combine(const std::vector<HitEstimate> &data) const; - virtual FieldSpecBaseList exposeFields() const; - virtual bool should_optimize_children() const override { return false; } - virtual void sort(std::vector<Blueprint*> &children) const; - virtual bool inheritStrict(size_t i) const; - virtual SearchIterator::UP + HitEstimate combine(const std::vector<HitEstimate> &data) const override; + FieldSpecBaseList exposeFields() const override; + bool should_optimize_children() const override { return false; } + void sort(std::vector<Blueprint*> &children) const override; + bool inheritStrict(size_t i) const override; + SearchIterator::UP createIntermediateSearch(const MultiSearch::Children &subSearches, - bool strict, search::fef::MatchData &md) const; + bool strict, fef::MatchData &md) const override; ONearBlueprint(uint32_t window) : _window(window) {} }; @@ -137,15 +135,15 @@ public: class RankBlueprint : public IntermediateBlueprint { public: - virtual HitEstimate combine(const std::vector<HitEstimate> &data) const; - virtual FieldSpecBaseList exposeFields() const; - virtual void optimize_self() override; - virtual Blueprint::UP get_replacement() override; - virtual void sort(std::vector<Blueprint*> &children) const; - virtual bool inheritStrict(size_t i) const; - virtual SearchIterator::UP + HitEstimate combine(const std::vector<HitEstimate> &data) const override; + FieldSpecBaseList exposeFields() const override; + void optimize_self() override; + Blueprint::UP get_replacement() override; + void sort(std::vector<Blueprint*> &children) const override; + bool inheritStrict(size_t i) const override; + SearchIterator::UP createIntermediateSearch(const MultiSearch::Children &subSearches, - bool strict, search::fef::MatchData &md) const; + bool strict, fef::MatchData &md) const override; }; //----------------------------------------------------------------------------- @@ -157,19 +155,19 @@ private: public: SourceBlenderBlueprint(const ISourceSelector &selector); - virtual HitEstimate combine(const std::vector<HitEstimate> &data) const; - virtual FieldSpecBaseList exposeFields() const; - virtual void sort(std::vector<Blueprint*> &children) const; - virtual bool inheritStrict(size_t i) const; + HitEstimate combine(const std::vector<HitEstimate> &data) const override; + FieldSpecBaseList exposeFields() const override; + void sort(std::vector<Blueprint*> &children) const override; + bool inheritStrict(size_t i) const override; /** * Will return the index matching the given sourceId. * @param sourceId The sourceid to find. * @return The index to the child representing the sourceId. -1 if not found. */ ssize_t findSource(uint32_t sourceId) const; - virtual SearchIterator::UP + SearchIterator::UP createIntermediateSearch(const MultiSearch::Children &subSearches, - bool strict, search::fef::MatchData &md) const; + bool strict, fef::MatchData &md) const override; /** check if this blueprint has the same source selector as the other */ bool isCompatibleWith(const SourceBlenderBlueprint &other) const; @@ -177,4 +175,3 @@ public: } } - diff --git a/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.h b/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.h index eca464c846d..90c59d0f674 100644 --- a/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.h +++ b/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.h @@ -16,9 +16,9 @@ namespace queryeval { class EmptyBlueprint : public SimpleLeafBlueprint { protected: - virtual SearchIterator::UP + SearchIterator::UP createLeafSearch(const search::fef::TermFieldMatchDataArray &tfmda, - bool strict) const; + bool strict) const override; public: EmptyBlueprint(const FieldSpecBaseList &fields); @@ -35,9 +35,9 @@ private: SimpleResult _result; protected: - virtual SearchIterator::UP + SearchIterator::UP createLeafSearch(const search::fef::TermFieldMatchDataArray &tfmda, - bool strict) const; + bool strict) const override; public: SimpleBlueprint(const SimpleResult &result); @@ -56,9 +56,9 @@ private: FakeResult _result; protected: - virtual SearchIterator::UP + SearchIterator::UP createLeafSearch(const fef::TermFieldMatchDataArray &tfmda, - bool strict) const; + bool strict) const override; public: FakeBlueprint(const FieldSpec &field, diff --git a/searchlib/src/vespa/searchlib/queryeval/multisearch.h b/searchlib/src/vespa/searchlib/queryeval/multisearch.h index ef8b6dc0577..13a01777fb0 100644 --- a/searchlib/src/vespa/searchlib/queryeval/multisearch.h +++ b/searchlib/src/vespa/searchlib/queryeval/multisearch.h @@ -38,7 +38,7 @@ public: void initRange(uint32_t beginId, uint32_t endId) override; protected: void doUnpack(uint32_t docid) override; - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; + void visitMembers(vespalib::ObjectVisitor &visitor) const override; private: /** * Call back when children are removed / inserted after the Iterator has been constructed. @@ -48,7 +48,7 @@ private: virtual void onRemove(size_t index) { (void) index; } virtual void onInsert(size_t index) { (void) index; } - virtual bool isMultiSearch() const { return true; } + bool isMultiSearch() const override { return true; } size_t deactivate(size_t index); Children _children; }; diff --git a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.h b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.h index fc1fde7e2c6..9bf6fe884ba 100644 --- a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.h +++ b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.h @@ -3,10 +3,8 @@ #pragma once #include "searchable.h" +#include "irequestcontext.h" #include <vespa/searchlib/fef/matchdatalayout.h> -#include <vespa/searchlib/queryeval/irequestcontext.h> -#include <memory> -#include <vector> namespace search { namespace fef { class TermFieldMatchData; } @@ -27,7 +25,7 @@ private: public: SimplePhraseBlueprint(const FieldSpec &field, const IRequestContext & requestContext); - virtual ~SimplePhraseBlueprint(); + ~SimplePhraseBlueprint(); // used by create visitor FieldSpec getNextChildField(const FieldSpec &outer); @@ -35,14 +33,11 @@ public: // used by create visitor void addTerm(Blueprint::UP term); - virtual SearchIterator::UP + SearchIterator::UP createLeafSearch(const search::fef::TermFieldMatchDataArray &tfmda, - bool strict) const; - - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; - - virtual void - fetchPostings(bool strict); + bool strict) const override; + void visitMembers(vespalib::ObjectVisitor &visitor) const override; + void fetchPostings(bool strict) override; }; } // namespace search::queryeval diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.h b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.h index bae74c046cb..a6e1c337f3d 100644 --- a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.h +++ b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.h @@ -1,9 +1,9 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/queryeval/blueprint.h> #include "wand_parts.h" #include "weak_and_heap.h" +#include <vespa/searchlib/queryeval/blueprint.h> #include <vespa/searchlib/fef/matchdatalayout.h> #include <vespa/searchlib/fef/termfieldmatchdataarray.h> #include <memory> @@ -59,17 +59,11 @@ public: // Used by create visitor void addTerm(Blueprint::UP term, int32_t weight); - // Override doc from blueprint::Leaf. - virtual SearchIterator::UP - createLeafSearch(const search::fef::TermFieldMatchDataArray &tfmda, - bool strict) const; - - // Override doc from blueprint::Leaf. - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; - - virtual void fetchPostings(bool strict); + SearchIterator::UP createLeafSearch(const fef::TermFieldMatchDataArray &tfmda, bool strict) const override; + void visitMembers(vespalib::ObjectVisitor &visitor) const override; + void fetchPostings(bool strict) override; }; -} // namespace search::queryeval +} // namespace queryeval } // namespace search diff --git a/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.h b/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.h index cc9a4911384..c0b8aa341d5 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.h +++ b/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.h @@ -1,8 +1,8 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/vespalib/objects/serializer.h> -#include <vespa/vespalib/objects/deserializer.h> +#include "serializer.h" +#include "deserializer.h" namespace vespalib { @@ -11,14 +11,14 @@ class asciistream; class AsciiSerializer : public Serializer { public: AsciiSerializer(asciistream &stream) : _stream(stream) { } - virtual AsciiSerializer &put(const IFieldBase &field, bool value); - virtual AsciiSerializer &put(const IFieldBase &field, uint8_t value); - virtual AsciiSerializer &put(const IFieldBase &field, uint16_t value); - virtual AsciiSerializer &put(const IFieldBase &field, uint32_t value); - virtual AsciiSerializer &put(const IFieldBase &field, uint64_t value); - virtual AsciiSerializer &put(const IFieldBase &field, float value); - virtual AsciiSerializer &put(const IFieldBase &field, double value); - virtual AsciiSerializer &put(const IFieldBase &field, const stringref &val); + 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, const stringref &val) override; const asciistream &getStream() const { return _stream; } asciistream &getStream() { return _stream; } diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/memory/memorystate.cpp b/storageframework/src/vespa/storageframework/defaultimplementation/memory/memorystate.cpp index 022e0fa54fa..125e01db179 100644 --- a/storageframework/src/vespa/storageframework/defaultimplementation/memory/memorystate.cpp +++ b/storageframework/src/vespa/storageframework/defaultimplementation/memory/memorystate.cpp @@ -74,6 +74,11 @@ MemoryState::MemoryState(Clock& clock, uint64_t maxMemory) { } +MemoryState::MemoryState(const MemoryState &) = default; +MemoryState & MemoryState::operator = (const MemoryState &) = default; + +MemoryState::~MemoryState() {} + void MemoryState::addToEntry(const MemoryAllocationType& type, uint64_t memory, uint8_t priority, diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/memory/memorystate.h b/storageframework/src/vespa/storageframework/defaultimplementation/memory/memorystate.h index e84e864d435..4cbc4da1ac5 100644 --- a/storageframework/src/vespa/storageframework/defaultimplementation/memory/memorystate.h +++ b/storageframework/src/vespa/storageframework/defaultimplementation/memory/memorystate.h @@ -8,7 +8,7 @@ #pragma once -#include <vespa/storageframework/defaultimplementation/memory/memorymanager.h> +#include "memorymanager.h" #include <vespa/storageframework/storageframework.h> #include <vespa/vespalib/util/sync.h> @@ -102,6 +102,11 @@ private: public: MemoryState(Clock& clock, uint64_t maxMemory); + MemoryState(const MemoryState &); + MemoryState & operator = (const MemoryState &); + MemoryState(MemoryState &&) = default; + MemoryState & operator = (MemoryState &&) = default; + ~MemoryState(); void print(std::ostream& out, bool verbose, const std::string& indent) const override; diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/memory/nomemorymanager.h b/storageframework/src/vespa/storageframework/defaultimplementation/memory/nomemorymanager.h index 870d735b113..43669eac603 100644 --- a/storageframework/src/vespa/storageframework/defaultimplementation/memory/nomemorymanager.h +++ b/storageframework/src/vespa/storageframework/defaultimplementation/memory/nomemorymanager.h @@ -11,10 +11,10 @@ #pragma once -#include <map> #include <vespa/storageframework/generic/memory/memorymanagerinterface.h> #include <vespa/vespalib/util/printable.h> #include <vespa/vespalib/util/sync.h> +#include <map> namespace storage { namespace framework { @@ -29,9 +29,8 @@ public: SimpleMemoryTokenImpl & operator = (const SimpleMemoryTokenImpl &) = delete; SimpleMemoryTokenImpl(uint64_t allocated) : _allocated(allocated) {} - virtual uint64_t getSize() const { return _allocated; } - virtual bool resize(uint64_t /* min */, uint64_t max) - { _allocated = max; return true; } + uint64_t getSize() const override { return _allocated; } + bool resize(uint64_t /* min */, uint64_t max) override { _allocated = max; return true; } }; class NoMemoryManager : public MemoryManagerInterface @@ -42,29 +41,21 @@ class NoMemoryManager : public MemoryManagerInterface public: typedef std::unique_ptr<NoMemoryManager> UP; - virtual void setMaximumMemoryUsage(uint64_t) {} - - virtual const MemoryAllocationType& - registerAllocationType(const MemoryAllocationType& type); - - virtual const MemoryAllocationType& - getAllocationType(const std::string& name) const; + void setMaximumMemoryUsage(uint64_t) override {} + const MemoryAllocationType & registerAllocationType(const MemoryAllocationType& type) override; + const MemoryAllocationType & getAllocationType(const std::string& name) const override; - MemoryToken::UP allocate( - const MemoryAllocationType&, - uint64_t /* min */, - uint64_t max, - uint8_t /* priority */, - ReduceMemoryUsageInterface* = 0) + MemoryToken::UP allocate(const MemoryAllocationType&, uint64_t /* min */, uint64_t max, + uint8_t /* priority */, ReduceMemoryUsageInterface* = 0) override { return SimpleMemoryTokenImpl::UP(new SimpleMemoryTokenImpl(max)); } - virtual uint64_t getMemorySizeFreeForPriority(uint8_t priority) const { + uint64_t getMemorySizeFreeForPriority(uint8_t priority) const override { (void) priority; return std::numeric_limits<uint64_t>().max(); } - virtual std::vector<const MemoryAllocationType*> getAllocationTypes() const; + std::vector<const MemoryAllocationType*> getAllocationTypes() const override; }; } // defaultimplementation diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/memory/prioritymemorylogic.h b/storageframework/src/vespa/storageframework/defaultimplementation/memory/prioritymemorylogic.h index 0761603a324..c43d6ef7fa9 100644 --- a/storageframework/src/vespa/storageframework/defaultimplementation/memory/prioritymemorylogic.h +++ b/storageframework/src/vespa/storageframework/defaultimplementation/memory/prioritymemorylogic.h @@ -9,7 +9,7 @@ #pragma once -#include <vespa/storageframework/defaultimplementation/memory/simplememorylogic.h> +#include "simplememorylogic.h" #include <vespa/vespalib/util/sync.h> namespace storage { @@ -19,11 +19,8 @@ namespace defaultimplementation { struct PriorityMemoryLogic : public SimpleMemoryLogic { PriorityMemoryLogic(Clock&, uint64_t maxMemory); - - virtual float getNonCacheThreshold(uint8_t priority) const; - - virtual void print(std::ostream& out, bool verbose, - const std::string& indent) const; + float getNonCacheThreshold(uint8_t priority) const override; + void print(std::ostream& out, bool verbose, const std::string& indent) const override; }; } // defaultimplementation diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/memory/simplememorylogic.h b/storageframework/src/vespa/storageframework/defaultimplementation/memory/simplememorylogic.h index aafae3d6a21..5a8df6441f1 100644 --- a/storageframework/src/vespa/storageframework/defaultimplementation/memory/simplememorylogic.h +++ b/storageframework/src/vespa/storageframework/defaultimplementation/memory/simplememorylogic.h @@ -21,8 +21,8 @@ #pragma once -#include <vespa/storageframework/defaultimplementation/memory/memorymanager.h> -#include <vespa/storageframework/defaultimplementation/memory/memorystate.h> +#include "memorymanager.h" +#include "memorystate.h" #include <vespa/vespalib/util/sync.h> namespace storage { @@ -64,26 +64,22 @@ public: return *this; } - virtual void setMaximumMemoryUsage(uint64_t max); + void setMaximumMemoryUsage(uint64_t max) override; void setCacheThreshold(float limit) { _cacheThreshold = limit; } void setNonCacheThreshold(float limit) { _nonCacheThreshold = limit; } MemoryState& getState() { return _state; } // Not threadsafe. Unit testing. + void getState(MemoryState& state, bool resetMax) override; - virtual void getState(MemoryState& state, bool resetMax); + MemoryToken::UP allocate(const MemoryAllocationType&, uint8_t priority, + ReduceMemoryUsageInterface* = 0) override; + bool resize(MemoryToken& token, uint64_t min, uint64_t max, uint32_t allocationCounts) override; - virtual MemoryToken::UP allocate(const MemoryAllocationType&, - uint8_t priority, - ReduceMemoryUsageInterface* = 0); - virtual bool resize(MemoryToken& token, uint64_t min, uint64_t max, - uint32_t allocationCounts); - - virtual void freeToken(MemoryTokenImpl& token); - virtual void print(std::ostream& out, bool verbose, - const std::string& indent) const; + void freeToken(MemoryTokenImpl& token) override; + void print(std::ostream& out, bool verbose, const std::string& indent) const override; - virtual uint64_t getMemorySizeFreeForPriority(uint8_t priority) const; + virtual uint64_t getMemorySizeFreeForPriority(uint8_t priority) const override; private: void handleReduction(MemoryTokenImpl&, uint64_t size, diff --git a/storageframework/src/vespa/storageframework/generic/component/component.h b/storageframework/src/vespa/storageframework/generic/component/component.h index 5f55bb30397..5ce86292f7d 100644 --- a/storageframework/src/vespa/storageframework/generic/component/component.h +++ b/storageframework/src/vespa/storageframework/generic/component/component.h @@ -67,7 +67,7 @@ */ #pragma once -#include <vespa/storageframework/generic/component/managedcomponent.h> +#include "managedcomponent.h" #include <vespa/storageframework/generic/thread/runnable.h> #include <vespa/storageframework/generic/thread/thread.h> #include <vespa/storageframework/generic/clock/clock.h> @@ -107,17 +107,17 @@ class Component : private ManagedComponent // ManagedComponent implementation metrics::Metric* getMetric() override { return _metric; } std::pair<MetricUpdateHook*, SecondTime> getMetricUpdateHook() override { return _metricUpdateHook; } - const StatusReporter* getStatusReporter() { return _status; } - void setMetricRegistrator(MetricRegistrator& mr); - void setMemoryManager(MemoryManagerInterface& mm) { _memoryManager = &mm; } - void setClock(Clock& c) { _clock = &c; } - void setThreadPool(ThreadPool& tp) { _threadPool = &tp; } - void setUpgradeFlag(UpgradeFlags flag) { + const StatusReporter* getStatusReporter() override { return _status; } + void setMetricRegistrator(MetricRegistrator& mr) override; + void setMemoryManager(MemoryManagerInterface& mm) override { _memoryManager = &mm; } + void setClock(Clock& c) override { _clock = &c; } + void setThreadPool(ThreadPool& tp) override { _threadPool = &tp; } + void setUpgradeFlag(UpgradeFlags flag) override { assert(_upgradeFlag.is_lock_free()); _upgradeFlag.store(flag, std::memory_order_relaxed); } - void open(); - void close(); + void open() override; + void close() override; public: typedef std::unique_ptr<Component> UP; @@ -164,7 +164,7 @@ public: vespalib::MonitorGuard getMetricManagerLock(); /** Get the name of the component. Must be a unique name. */ - const vespalib::string& getName() const { return _name; } + const vespalib::string& getName() const override { return _name; } /** * Get the thread pool for this application. Note that this call will fail diff --git a/storageframework/src/vespa/storageframework/generic/status/htmlstatusreporter.h b/storageframework/src/vespa/storageframework/generic/status/htmlstatusreporter.h index c76ec879121..fb9248a97b9 100644 --- a/storageframework/src/vespa/storageframework/generic/status/htmlstatusreporter.h +++ b/storageframework/src/vespa/storageframework/generic/status/htmlstatusreporter.h @@ -16,7 +16,7 @@ #pragma once -#include <vespa/storageframework/generic/status/statusreporter.h> +#include "statusreporter.h" namespace storage { namespace framework { @@ -46,8 +46,8 @@ struct HtmlStatusReporter : public StatusReporter { virtual void reportHtmlFooter(std::ostream&, const HttpUrlPath&) const; // Implementation of StatusReporter interface - virtual vespalib::string getReportContentType(const HttpUrlPath&) const; - virtual bool reportStatus(std::ostream&, const HttpUrlPath&) const; + vespalib::string getReportContentType(const HttpUrlPath&) const override; + bool reportStatus(std::ostream&, const HttpUrlPath&) const override; }; /** @@ -59,7 +59,7 @@ struct PartlyHtmlStatusReporter : public HtmlStatusReporter { PartlyHtmlStatusReporter(const StatusReporter& main) : HtmlStatusReporter(main.getId(), main.getName()) {} - virtual void reportHtmlStatus(std::ostream&, const HttpUrlPath&) const {} + void reportHtmlStatus(std::ostream&, const HttpUrlPath&) const override {} }; } // framework diff --git a/storageframework/src/vespa/storageframework/generic/status/httpurlpath.h b/storageframework/src/vespa/storageframework/generic/status/httpurlpath.h index f73fdc752ed..8c8c24c29dd 100644 --- a/storageframework/src/vespa/storageframework/generic/status/httpurlpath.h +++ b/storageframework/src/vespa/storageframework/generic/status/httpurlpath.h @@ -10,7 +10,6 @@ #include <vespa/vespalib/stllike/string.h> #include <vespa/vespalib/text/stringtokenizer.h> #include <map> -#include <string> namespace storage { namespace framework { @@ -43,15 +42,13 @@ public: template<typename T> T get(const vespalib::string& id, const T& defaultValue = T()) const; - virtual void print(std::ostream& out, bool verbose, - const std::string& indent) const; + void print(std::ostream& out, bool verbose, const std::string& indent) const override; }; template<typename T> T HttpUrlPath::get(const vespalib::string& id, const T& defaultValue) const { - std::map<vespalib::string, vespalib::string>::const_iterator it - = _attributes.find(id); + std::map<vespalib::string, vespalib::string>::const_iterator it = _attributes.find(id); if (it == _attributes.end()) return defaultValue; T val; std::istringstream ist(it->second); diff --git a/storageframework/src/vespa/storageframework/generic/status/xmlstatusreporter.h b/storageframework/src/vespa/storageframework/generic/status/xmlstatusreporter.h index 0516989aaac..98002bf1113 100644 --- a/storageframework/src/vespa/storageframework/generic/status/xmlstatusreporter.h +++ b/storageframework/src/vespa/storageframework/generic/status/xmlstatusreporter.h @@ -17,12 +17,9 @@ #pragma once -#include <vespa/storageframework/generic/status/statusreporter.h> +#include "statusreporter.h" #include <vespa/vespalib/util/xmlserializable.h> -namespace vespalib { -} - namespace storage { namespace framework { @@ -43,8 +40,8 @@ struct XmlStatusReporter : public StatusReporter { const HttpUrlPath&) const; // Implementation of status reporter interface - virtual vespalib::string getReportContentType(const HttpUrlPath&) const; - virtual bool reportStatus(std::ostream&, const HttpUrlPath&) const; + vespalib::string getReportContentType(const HttpUrlPath&) const override; + bool reportStatus(std::ostream&, const HttpUrlPath&) const override; }; /** @@ -71,12 +68,7 @@ public: } vespalib::XmlOutputStream& getStream() { return _xos; } - - virtual vespalib::string reportXmlStatus(vespalib::xml::XmlOutputStream&, - const HttpUrlPath&) const - { - return ""; - } + vespalib::string reportXmlStatus(vespalib::xml::XmlOutputStream&, const HttpUrlPath&) const override { return ""; } template<typename T> PartlyXmlStatusReporter& operator<<(const T& v) { diff --git a/storageframework/src/vespa/storageframework/generic/thread/thread.h b/storageframework/src/vespa/storageframework/generic/thread/thread.h index e30e9b10404..a40a209e980 100644 --- a/storageframework/src/vespa/storageframework/generic/thread/thread.h +++ b/storageframework/src/vespa/storageframework/generic/thread/thread.h @@ -12,9 +12,8 @@ */ #pragma once -#include <memory> +#include "runnable.h" #include <vespa/vespalib/stllike/string.h> -#include <vespa/storageframework/generic/thread/runnable.h> namespace vespalib { class Monitor; @@ -35,7 +34,7 @@ public: virtual const vespalib::string& getId() const { return _id; } /** Check whether thread have been interrupted or not. */ - virtual bool interrupted() const = 0; + virtual bool interrupted() const override = 0; /** Check whether thread have been joined or not. */ virtual bool joined() const = 0; diff --git a/storageframework/src/vespa/storageframework/generic/thread/tickingthread.cpp b/storageframework/src/vespa/storageframework/generic/thread/tickingthread.cpp index d425ff3a1d8..3b6d561b01f 100644 --- a/storageframework/src/vespa/storageframework/generic/thread/tickingthread.cpp +++ b/storageframework/src/vespa/storageframework/generic/thread/tickingthread.cpp @@ -1,12 +1,8 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/storageframework/generic/thread/tickingthread.h> -#include <atomic> -#include <vespa/log/log.h> -#include <sstream> -#include <vespa/storageframework/generic/thread/threadpool.h> +#include "tickingthread.h" +#include "threadpool.h" #include <vespa/vespalib/util/exceptions.h> - -LOG_SETUP(".framework.thread.ticker"); +#include <vespa/vespalib/stllike/asciistream.h> namespace storage { namespace framework { @@ -64,7 +60,7 @@ public: char getState() const { return _state; } private: - virtual void run(ThreadHandle& handle) { + void run(ThreadHandle& handle) override { ThreadWaitInfo info = ThreadWaitInfo::MORE_WORK_ENQUEUED; CycleType cycle = PROCESS_CYCLE; int ticksExecutedAfterWait = 0; @@ -117,26 +113,21 @@ class TickingThreadPoolImpl : public TickingThreadPool { struct FreezeGuard : public TickingLockGuard::Impl { TickingThreadPoolImpl& _pool; - FreezeGuard(TickingThreadPoolImpl& pool) - : _pool(pool) { _pool.freeze(); } - - virtual ~FreezeGuard() { _pool.thaw(); } - - virtual void broadcast() {} + FreezeGuard(TickingThreadPoolImpl& pool) : _pool(pool) { _pool.freeze(); } + ~FreezeGuard() { _pool.thaw(); } + void broadcast() override {} }; struct CriticalGuard : public TickingLockGuard::Impl { vespalib::MonitorGuard _guard; CriticalGuard(vespalib::Monitor& m) : _guard(m) {} - virtual void broadcast() { _guard.broadcast(); } + void broadcast() override { _guard.broadcast(); } }; public: - TickingThreadPoolImpl(vespalib::stringref name, - MilliSecTime waitTime, - int ticksBeforeWait, - MilliSecTime maxProcessTime) + TickingThreadPoolImpl(vespalib::stringref name, MilliSecTime waitTime, + int ticksBeforeWait, MilliSecTime maxProcessTime) : _name(name), _waitTime(waitTime.getTime()), _ticksBeforeWait(ticksBeforeWait), @@ -146,36 +137,31 @@ public: stop(); } - virtual void updateParametersAllThreads( - MilliSecTime waitTime, - MilliSecTime maxProcessTime, - int ticksBeforeWait) { + void updateParametersAllThreads(MilliSecTime waitTime, MilliSecTime maxProcessTime, + int ticksBeforeWait) override { _waitTime.store(waitTime.getTime()); _maxProcessTime.store(maxProcessTime.getTime()); _ticksBeforeWait.store(ticksBeforeWait); // TODO: Add locking so threads not deleted while updating - for (uint32_t i=0; i<_threads.size(); ++i) { - _threads[i]->updateParameters(waitTime.getTime(), - maxProcessTime.getTime(), - ticksBeforeWait); + for (uint32_t i=0; i<_threads.size(); ++i) { + _threads[i]->updateParameters(waitTime.getTime(), maxProcessTime.getTime(), ticksBeforeWait); } } - void addThread(TickingThread& ticker) { + void addThread(TickingThread& ticker) override { ThreadIndex index = _tickers.size(); ticker.newThreadCreated(index); - _tickers.push_back(TickingThreadRunner::SP( - new TickingThreadRunner(_monitor, ticker, index))); + _tickers.push_back(TickingThreadRunner::SP(new TickingThreadRunner(_monitor, ticker, index))); } - void start(ThreadPool& pool) { + void start(ThreadPool& pool) override { if (_tickers.empty()) { throw vespalib::IllegalStateException( "Makes no sense to start threadpool without threads", VESPA_STRLOC); } for (uint32_t i=0; i<_tickers.size(); ++i) { - std::ostringstream ost; + vespalib::asciistream ost; ost << _name.c_str() << " thread " << i; _threads.push_back(std::shared_ptr<Thread>(pool.startThread( *_tickers[i], @@ -186,17 +172,16 @@ public: } } - virtual TickingLockGuard freezeAllTicks() { - return TickingLockGuard(std::unique_ptr<TickingLockGuard::Impl>( - new FreezeGuard(*this))); + TickingLockGuard freezeAllTicks() override { + return TickingLockGuard(std::unique_ptr<TickingLockGuard::Impl>(new FreezeGuard(*this))); } - virtual TickingLockGuard freezeCriticalTicks() { + TickingLockGuard freezeCriticalTicks() override { return TickingLockGuard(std::unique_ptr<TickingLockGuard::Impl>( new CriticalGuard(_monitor))); } - void stop() { + void stop() override { for (uint32_t i=0; i<_threads.size(); ++i) { _threads[i]->interrupt(); } @@ -209,7 +194,7 @@ public: } } - vespalib::string getStatus() { + vespalib::string getStatus() override { vespalib::string result(_tickers.size(), ' '); for (uint32_t i=0, n=_tickers.size(); i<n; ++i) { result[i] = _tickers[i]->getState(); diff --git a/vdslib/src/vespa/vdslib/container/documentlist.h b/vdslib/src/vespa/vdslib/container/documentlist.h index e6817619228..5ac2ce21288 100644 --- a/vdslib/src/vespa/vdslib/container/documentlist.h +++ b/vdslib/src/vespa/vdslib/container/documentlist.h @@ -22,9 +22,9 @@ #pragma once +#include <vespa/vdslib/defs.h> #include <vespa/document/fieldvalue/document.h> #include <vespa/document/repo/documenttyperepo.h> -#include <vespa/vdslib/defs.h> namespace document { class DocumentUpdate; @@ -118,7 +118,7 @@ public: + sizeof(MetaEntry); } - void print(std::ostream& out, bool verbose, const std::string& indent) const; + void print(std::ostream& out, bool verbose, const std::string& indent) const override; bool operator==(const Entry& e) const { return (_start == e._start && _entry == e._entry); } }; @@ -184,7 +184,7 @@ public: } void checkConsistency(bool do_memset = false); - void print(std::ostream& out, bool verbose, const std::string& indent) const; + void print(std::ostream& out, bool verbose, const std::string& indent) const override; const document::DocumentTypeRepo::SP & getTypeRepo() const { return _repo; } protected: diff --git a/vdslib/src/vespa/vdslib/container/parameters.h b/vdslib/src/vespa/vdslib/container/parameters.h index 2a551d6ff39..9ed86333e7a 100644 --- a/vdslib/src/vespa/vdslib/container/parameters.h +++ b/vdslib/src/vespa/vdslib/container/parameters.h @@ -42,9 +42,9 @@ public: private: ParametersMap _parameters; - void onSerialize(document::ByteBuffer& buffer) const; - void onDeserialize(const document::DocumentTypeRepo &repo, document::ByteBuffer& buffer); - void printXml(document::XmlOutputStream& xos) const; + void onSerialize(document::ByteBuffer& buffer) const override; + void onDeserialize(const document::DocumentTypeRepo &repo, document::ByteBuffer& buffer) override; + void printXml(document::XmlOutputStream& xos) const override; public: Parameters(); @@ -53,9 +53,9 @@ public: bool operator==(const Parameters &other) const; - Parameters* clone() const; + Parameters* clone() const override; - size_t getSerializedSize() const; + size_t getSerializedSize() const override; bool hasValue(const KeyT & id) const { return (_parameters.find(id) != _parameters.end()); } unsigned int size() const { return _parameters.size(); } diff --git a/vdslib/src/vespa/vdslib/container/visitorstatistics.h b/vdslib/src/vespa/vdslib/container/visitorstatistics.h index 5812ea25fde..d668b7fa693 100644 --- a/vdslib/src/vespa/vdslib/container/visitorstatistics.h +++ b/vdslib/src/vespa/vdslib/container/visitorstatistics.h @@ -1,8 +1,6 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <string> -#include <stdint.h> #include <vespa/document/util/printable.h> namespace vdslib { @@ -35,7 +33,7 @@ public: uint64_t getSecondPassBytesReturned() const { return _secondPassBytesReturned; } void setSecondPassBytesReturned(uint32_t bytesReturned) { _secondPassBytesReturned = bytesReturned; } - void print(std::ostream& out, bool verbose, const std::string& indent) const; + void print(std::ostream& out, bool verbose, const std::string& indent) const override; private: uint32_t _bucketsVisited; uint64_t _documentsVisited; diff --git a/vdslib/src/vespa/vdslib/defs.h b/vdslib/src/vespa/vdslib/defs.h index da4a4589715..91421787e1b 100644 --- a/vdslib/src/vespa/vdslib/defs.h +++ b/vdslib/src/vespa/vdslib/defs.h @@ -1,5 +1,9 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +#pragma once + +#include <cstdint> + namespace vdslib { typedef uint64_t Timestamp; diff --git a/vdslib/src/vespa/vdslib/distribution/distribution.cpp b/vdslib/src/vespa/vdslib/distribution/distribution.cpp index 0997c9047e1..a75ba591af5 100644 --- a/vdslib/src/vespa/vdslib/distribution/distribution.cpp +++ b/vdslib/src/vespa/vdslib/distribution/distribution.cpp @@ -7,7 +7,6 @@ #include <vespa/vespalib/stllike/asciistream.h> #include <boost/lexical_cast.hpp> #include <vespa/config/config.h> -#include <vespa/config/common/misc.h> #include <vespa/config/print/asciiconfigwriter.h> #include <vespa/config/print/asciiconfigreader.h> #include <vespa/vespalib/util/exceptions.h> diff --git a/vdslib/src/vespa/vdslib/distribution/group.h b/vdslib/src/vespa/vdslib/distribution/group.h index 8e8740ca739..07ba774931a 100644 --- a/vdslib/src/vespa/vdslib/distribution/group.h +++ b/vdslib/src/vespa/vdslib/distribution/group.h @@ -11,17 +11,13 @@ */ #pragma once -#include <map> -#include <vector> +#include "redundancygroupdistribution.h" #include <vespa/vespalib/objects/floatingpointtype.h> -#include <vespa/vdslib/distribution/redundancygroupdistribution.h> #include <vespa/vespalib/util/crc.h> +#include <map> +#include <vector> -namespace vespalib { - -class asciistream; - -} +namespace vespalib { class asciistream; } namespace storage { namespace lib { @@ -64,8 +60,7 @@ public: bool isLeafGroup() const { return _nodes.size() > 0; } bool operator==(const Group& other) const; - virtual void print(std::ostream& out, bool verbose, - const std::string& indent) const; + void print(std::ostream& out, bool verbose, const std::string& indent) const override; vespalib::Double getCapacity() const { return _capacity; } const vespalib::string & getName() const { return _name; } diff --git a/vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.h b/vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.h index 3b45cc3d612..080e5042440 100644 --- a/vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.h +++ b/vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.h @@ -38,7 +38,7 @@ public: bool operator==(const RedundancyGroupDistribution& o) const { return (_values == o._values); } - void print(std::ostream&, bool verbose, const std::string& indent) const; + void print(std::ostream&, bool verbose, const std::string& indent) const override; private: uint16_t getFirstAsterixIndex() const; diff --git a/vdslib/src/vespa/vdslib/state/clusterstate.h b/vdslib/src/vespa/vdslib/state/clusterstate.h index 2d0f73413fd..dcea1308b6b 100644 --- a/vdslib/src/vespa/vdslib/state/clusterstate.h +++ b/vdslib/src/vespa/vdslib/state/clusterstate.h @@ -8,9 +8,9 @@ #pragma once +#include "node.h" +#include "nodestate.h" #include <map> -#include <vespa/vdslib/state/node.h> -#include <vespa/vdslib/state/nodestate.h> namespace storage { namespace lib { @@ -63,8 +63,7 @@ public: void setDescription(const vespalib::stringref & s) { _description = s; } void setDistributionBitCount(uint16_t count) { _distributionBits = count; } - virtual void print(std::ostream& out, bool verbose, - const std::string& indent) const; + void print(std::ostream& out, bool verbose, const std::string& indent) const override; void printStateGroupwise(std::ostream& out, const Distribution&, bool verbose = false, diff --git a/vdslib/src/vespa/vdslib/state/diskstate.h b/vdslib/src/vespa/vdslib/state/diskstate.h index 9a6855efedd..9c92f211b73 100644 --- a/vdslib/src/vespa/vdslib/state/diskstate.h +++ b/vdslib/src/vespa/vdslib/state/diskstate.h @@ -6,8 +6,8 @@ */ #pragma once +#include "state.h" #include <vespa/document/util/printable.h> -#include <vespa/vdslib/state/state.h> #include <vespa/vespalib/objects/floatingpointtype.h> namespace storage { @@ -38,8 +38,7 @@ public: void setCapacity(double capacity); void setDescription(const vespalib::stringref & desc) { _description = desc; } - virtual void print(std::ostream& out, bool verbose, - const std::string& indent) const; + void print(std::ostream& out, bool verbose, const std::string& indent) const override; bool operator==(const DiskState& other) const; bool operator!=(const DiskState& other) const; diff --git a/vdslib/src/vespa/vdslib/state/node.h b/vdslib/src/vespa/vdslib/state/node.h index 4b9718162ab..357f39c6694 100644 --- a/vdslib/src/vespa/vdslib/state/node.h +++ b/vdslib/src/vespa/vdslib/state/node.h @@ -7,8 +7,8 @@ #pragma once +#include "nodetype.h" #include <vespa/vespalib/util/printable.h> -#include <vespa/vdslib/state/nodetype.h> namespace storage { namespace lib { @@ -24,7 +24,7 @@ public: const NodeType& getType() const { return *_type; } uint16_t getIndex() const { return _index; } - void print(vespalib::asciistream&, const PrintProperties&) const; + void print(vespalib::asciistream&, const PrintProperties&) const override; bool operator==(const Node& other) const { return (other._index == _index && *other._type == *_type); } diff --git a/vdslib/src/vespa/vdslib/state/nodestate.h b/vdslib/src/vespa/vdslib/state/nodestate.h index 275e8d5658c..0b5f38ecc92 100644 --- a/vdslib/src/vespa/vdslib/state/nodestate.h +++ b/vdslib/src/vespa/vdslib/state/nodestate.h @@ -10,12 +10,10 @@ */ #pragma once -#include <string> -#include <vector> +#include "diskstate.h" +#include "state.h" +#include "random.h" #include <vespa/document/bucket/bucketidfactory.h> -#include <vespa/vdslib/state/diskstate.h> -#include <vespa/vdslib/state/state.h> -#include <vespa/vdslib/state/random.h> namespace storage { namespace lib { @@ -87,8 +85,8 @@ public: void setDiskCount(uint16_t count); void setDiskState(uint16_t index, const DiskState&); - virtual void print(std::ostream& out, bool verbose, - const std::string& indent) const; + void print(std::ostream& out, bool verbose, + const std::string& indent) const override; bool operator==(const NodeState& other) const; bool operator!=(const NodeState& other) const { return !(operator==(other)); } diff --git a/vdslib/src/vespa/vdslib/state/state.h b/vdslib/src/vespa/vdslib/state/state.h index f42402f687b..27c672f9132 100644 --- a/vdslib/src/vespa/vdslib/state/state.h +++ b/vdslib/src/vespa/vdslib/state/state.h @@ -9,9 +9,9 @@ */ #pragma once +#include "nodetype.h" #include <vespa/vespalib/util/printable.h> #include <vespa/vespalib/stllike/string.h> -#include <vespa/vdslib/state/nodetype.h> #include <vector> namespace storage { @@ -70,8 +70,7 @@ public: return _name; } - virtual void print(std::ostream& out, bool verbose, - const std::string& indent) const; + void print(std::ostream& out, bool verbose, const std::string& indent) const override; bool operator==(const State& other) const { return (&other == this); } bool operator!=(const State& other) const { return (&other != this); } diff --git a/vdslib/src/vespa/vdslib/thread/taskscheduler.h b/vdslib/src/vespa/vdslib/thread/taskscheduler.h index 558ebd46c1e..8e75e488c2b 100644 --- a/vdslib/src/vespa/vdslib/thread/taskscheduler.h +++ b/vdslib/src/vespa/vdslib/thread/taskscheduler.h @@ -97,8 +97,8 @@ private: TaskVector _currentRunningTasks; uint64_t _taskCounter; - virtual void run(); - virtual bool onStop(); + void run() override; + bool onStop() override; }; } // vdslib diff --git a/vespalib/src/vespa/vespalib/util/closure.h b/vespalib/src/vespa/vespalib/util/closure.h index 798ab4ea698..a389bc5deeb 100644 --- a/vespalib/src/vespa/vespalib/util/closure.h +++ b/vespalib/src/vespa/vespalib/util/closure.h @@ -174,8 +174,7 @@ class MemberClosure0_1 : public Closure0<R> { MemFun _mem_fun; T1 _arg1; - virtual R call() - { return ((*_ptr).*_mem_fun)(std::move(_arg1)); } + R call() override { return ((*_ptr).*_mem_fun)(std::move(_arg1)); } public: MemberClosure0_1(Ptr ptr, MemFun mem_fun, T1 arg1) @@ -192,8 +191,7 @@ class MemberClosure0_2 : public Closure0<R> { T1 _arg1; T2 _arg2; - virtual R call() - { return ((*_ptr).*_mem_fun)(std::move(_arg1), std::move(_arg2)); } + R call() override { return ((*_ptr).*_mem_fun)(std::move(_arg1), std::move(_arg2)); } public: MemberClosure0_2(Ptr ptr, MemFun mem_fun, T1 arg1, T2 arg2) |