diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-04-04 00:43:28 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-04-04 16:36:18 +0200 |
commit | 67e9b3bd5b22ae02c079e47e56ec9ad7fb7df402 (patch) | |
tree | 7ad1cac03d3dbe238537e34c75cd465d2c91f5e9 | |
parent | f65d05c33c1ff6654860900c8e464ff36263dcdc (diff) |
Use override
43 files changed, 296 insertions, 457 deletions
diff --git a/config/src/vespa/config/configgen/map_inserter.h b/config/src/vespa/config/configgen/map_inserter.h index 75238df912a..8a061a6759c 100644 --- a/config/src/vespa/config/configgen/map_inserter.h +++ b/config/src/vespa/config/configgen/map_inserter.h @@ -1,10 +1,10 @@ // 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/stllike/string.h> -#include <vespa/vespalib/data/slime/slime.h> #include "value_converter.h" +#include <vespa/vespalib/data/slime/object_traverser.h> +#include <vespa/vespalib/stllike/string.h> + #include <map> namespace config { @@ -15,7 +15,7 @@ template<typename T, typename Converter = config::internal::ValueConverter<T> > class MapInserter : public ::vespalib::slime::ObjectTraverser { public: MapInserter(std::map<vespalib::string, T> & map); - void field(const ::vespalib::Memory & symbol, const ::vespalib::slime::Inspector & inspector); + void field(const ::vespalib::Memory & symbol, const ::vespalib::slime::Inspector & inspector) override; private: std::map<vespalib::string, T> & _map; }; diff --git a/config/src/vespa/config/configgen/vector_inserter.h b/config/src/vespa/config/configgen/vector_inserter.h index 36d324f3555..1de4679714c 100644 --- a/config/src/vespa/config/configgen/vector_inserter.h +++ b/config/src/vespa/config/configgen/vector_inserter.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 <memory> -#include <vespa/vespalib/stllike/string.h> -#include <vespa/vespalib/data/slime/slime.h> #include "value_converter.h" +#include <vespa/vespalib/data/slime/array_traverser.h> +#include <vespa/vespalib/stllike/string.h> namespace config { @@ -14,7 +13,7 @@ template<typename T, typename Converter = ::config::internal::ValueConverter<T> class VectorInserter : public ::vespalib::slime::ArrayTraverser { public: VectorInserter(std::vector<T> & vector); - void entry(size_t idx, const ::vespalib::slime::Inspector & inspector); + void entry(size_t idx, const ::vespalib::slime::Inspector & inspector) override; private: std::vector<T> & _vector; }; diff --git a/config/src/vespa/config/print/fileconfigreader.h b/config/src/vespa/config/print/fileconfigreader.h index 6b5f14b4318..e3221403c1c 100644 --- a/config/src/vespa/config/print/fileconfigreader.h +++ b/config/src/vespa/config/print/fileconfigreader.h @@ -1,10 +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 <vespa/vespalib/stllike/asciistream.h> -#include <vespa/config/common/misc.h> -#include <vespa/config/common/configvalue.h> -#include <vespa/vespalib/util/exceptions.h> #include "configreader.h" namespace config { @@ -15,7 +11,7 @@ public: FileConfigReader(const vespalib::string & fileName); // Implements ConfigReader - std::unique_ptr<ConfigType> read(const ConfigFormatter & formatter); + std::unique_ptr<ConfigType> read(const ConfigFormatter & formatter) override; /** * Read config from this file using old config format. diff --git a/config/src/vespa/config/print/fileconfigreader.hpp b/config/src/vespa/config/print/fileconfigreader.hpp index f5ab49da240..b677e379c28 100644 --- a/config/src/vespa/config/print/fileconfigreader.hpp +++ b/config/src/vespa/config/print/fileconfigreader.hpp @@ -1,6 +1,9 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +#include "fileconfigreader.h" #include <vespa/config/common/exceptions.h> +#include <vespa/config/common/misc.h> +#include <vespa/vespalib/util/exceptions.h> #include <fstream> #include <sstream> diff --git a/configgen/src/main/java/com/yahoo/config/codegen/CppClassBuilder.java b/configgen/src/main/java/com/yahoo/config/codegen/CppClassBuilder.java index 7e0ddcd1270..eb17fab5fdb 100644 --- a/configgen/src/main/java/com/yahoo/config/codegen/CppClassBuilder.java +++ b/configgen/src/main/java/com/yahoo/config/codegen/CppClassBuilder.java @@ -296,7 +296,7 @@ public class CppClassBuilder implements ClassBuilder { void writeHeaderFunctionDeclarations(Writer w, String className, CNode node, String indent) throws IOException { w.write("" + indent + "const vespalib::string & defName() const override { return CONFIG_DEF_NAME; }\n" - + indent + "const vespalib::string & defVersion() const override { return CONFIG_DEF_VERSION; }\n" + + indent + "const vespalib::string & defVersion() const { return CONFIG_DEF_VERSION; }\n" + indent + "const vespalib::string & defMd5() const override { return CONFIG_DEF_MD5; }\n" + indent + "const vespalib::string & defNamespace() const override { return CONFIG_DEF_NAMESPACE; }\n" + indent + "void serialize(::config::ConfigDataBuffer & __buffer) const override;\n"); @@ -560,13 +560,13 @@ public class CppClassBuilder implements ClassBuilder { w.write("#include <" + subdir + "/" + getFileName(root, "h") + ">"); } w.write("\n"); - w.write("#include <set>\n"); w.write("#include <vespa/config/common/configparser.h>\n"); - w.write("#include <vespa/vespalib/data/slime/convenience.h>\n"); - w.write("#include <vespa/vespalib/stllike/asciistream.h>\n"); - w.write("#include <vespa/vespalib/stllike/asciistream.h>\n"); w.write("#include <vespa/config/configgen/vector_inserter.h>\n"); w.write("#include <vespa/config/configgen/map_inserter.h>\n"); + w.write("#include <vespa/vespalib/data/slime/convenience.h>\n"); + w.write("#include <vespa/vespalib/data/slime/slime.h>\n"); + w.write("#include <vespa/vespalib/stllike/asciistream.h>\n"); + w.write("#include <set>\n"); w.write("\n\n"); writeNameSpaceBegin(w, generateCppNameSpace(root)); w.write("\n"); diff --git a/document/src/vespa/document/base/documentid.h b/document/src/vespa/document/base/documentid.h index 858fdf56dde..f64418e5b8f 100644 --- a/document/src/vespa/document/base/documentid.h +++ b/document/src/vespa/document/base/documentid.h @@ -56,7 +56,7 @@ public: vespalib::string toString() const; void print(std::ostream& out, bool verbose, - const std::string& indent) const; + const std::string& indent) const override; bool operator==(const DocumentId& other) const { return *_id == *other._id; } bool operator!=(const DocumentId& other) const { return ! (*_id == *other._id); } diff --git a/document/src/vespa/document/base/fieldpath.h b/document/src/vespa/document/base/fieldpath.h index db009f57e43..c795aa48950 100644 --- a/document/src/vespa/document/base/fieldpath.h +++ b/document/src/vespa/document/base/fieldpath.h @@ -84,7 +84,7 @@ public: FieldValue * getFieldValueToSetPtr() const { return _fillInVal.get(); } FieldValue& getFieldValueToSet() const { return *_fillInVal; } - virtual void visitMembers(vespalib::ObjectVisitor &visitor) const; + void visitMembers(vespalib::ObjectVisitor &visitor) const override; /** * Parses a string of the format {["]escaped string["]} to its unescaped value. * @param key is the incoming value, and contains what is left when done. @@ -156,7 +156,7 @@ public: return _path[i]; } - FieldPath* clone() const { + FieldPath* clone() const override { return new FieldPath(*this); } diff --git a/document/src/vespa/document/base/idstring.h b/document/src/vespa/document/base/idstring.h index 6cdb5f3df52..f1a96974cc9 100644 --- a/document/src/vespa/document/base/idstring.h +++ b/document/src/vespa/document/base/idstring.h @@ -41,8 +41,8 @@ public: static IdString::UP createIdString(const vespalib::stringref & id) { return createIdString(id.c_str(), id.size()); } static IdString::UP createIdString(const char *id, size_t sz); - virtual ~IdString() {} - IdString* clone() const = 0; + ~IdString() {} + IdString* clone() const override = 0; virtual Type getType() const = 0; vespalib::stringref getNamespace() const { return getComponent(0); } @@ -87,15 +87,15 @@ private: vespalib::string _rawId; }; -class NullIdString : public IdString +class NullIdString final : public IdString { public: NullIdString() : IdString(2, 5, "null::") { } private: - IdString* clone() const { return new NullIdString(); } - virtual LocationType getLocation() const { return 0; } - virtual Type getType() const { return NULLID; } - virtual vespalib::stringref getNamespaceSpecific() const { return getComponent(1); } + IdString* clone() const override { return new NullIdString(); } + LocationType getLocation() const override { return 0; } + Type getType() const override { return NULLID; } + vespalib::stringref getNamespaceSpecific() const override { return getComponent(1); } }; /** @@ -108,7 +108,7 @@ private: * as the location of a doc identifier is a hash of the entire URI. * This scheme also contains the DocumentType. */ -class IdIdString : public IdString { +class IdIdString final : public IdString { LocationType _location; uint16_t _groupOffset; bool _has_number; @@ -116,19 +116,20 @@ class IdIdString : public IdString { public: IdIdString(const vespalib::stringref &ns); - virtual bool hasDocType() const { return true; } - virtual vespalib::stringref getDocType() const { return getComponent(1); } - virtual IdIdString* clone() const { return new IdIdString(*this); } - virtual LocationType getLocation() const { return _location; } - virtual bool hasNumber() const { return _has_number; } - virtual uint64_t getNumber() const { return _location; } - virtual bool hasGroup() const { return _groupOffset != 0; } - - virtual vespalib::stringref getGroup() const { return vespalib::stringref(getRawId().c_str() + _groupOffset, offset(3) - _groupOffset - 1); } + bool hasDocType() const override { return true; } + vespalib::stringref getDocType() const override { return getComponent(1); } + IdIdString* clone() const override { return new IdIdString(*this); } + LocationType getLocation() const override { return _location; } + bool hasNumber() const override { return _has_number; } + uint64_t getNumber() const override { return _location; } + bool hasGroup() const override { return _groupOffset != 0; } + vespalib::stringref getGroup() const override { + return vespalib::stringref(getRawId().c_str() + _groupOffset, offset(3) - _groupOffset - 1); + } private: - virtual void validate() const; - virtual Type getType() const { return ID; } - virtual vespalib::stringref getNamespaceSpecific() const { return getComponent(3); } + virtual void validate() const override; + Type getType() const override { return ID; } + vespalib::stringref getNamespaceSpecific() const override { return getComponent(3); } }; /** @@ -140,15 +141,15 @@ private: * By using this scheme, documents will be evenly distributed within VDS, * as the location of a doc identifier is a hash of the entire URI. */ -class DocIdString : public IdString { +class DocIdString final : public IdString { public: DocIdString(const vespalib::stringref & ns, const vespalib::stringref & id); DocIdString(const vespalib::stringref & rawId); private: - virtual DocIdString* clone() const { return new DocIdString(*this); } - virtual Type getType() const { return DOC; } - virtual LocationType getLocation() const; - virtual vespalib::stringref getNamespaceSpecific() const { return getComponent(1); } + DocIdString* clone() const override { return new DocIdString(*this); } + Type getType() const override { return DOC; } + LocationType getLocation() const override; + vespalib::stringref getNamespaceSpecific() const override { return getComponent(1); } }; /** @@ -161,19 +162,19 @@ private: * name "userdoc" is purely syntactical; Vespa does not care what the source * of the number is. */ -class UserDocIdString : public IdString { +class UserDocIdString final : public IdString { public: UserDocIdString(const vespalib::stringref & rawId); virtual int64_t getUserId() const { return _userId; } - virtual bool hasNumber() const { return true; } - uint64_t getNumber() const { return _userId; } - virtual LocationType getLocation() const { return _userId; } + bool hasNumber() const override { return true; } + uint64_t getNumber() const override { return _userId; } + LocationType getLocation() const override { return _userId; } private: - virtual UserDocIdString* clone() const { return new UserDocIdString(*this); } - virtual Type getType() const { return USERDOC; } - virtual vespalib::stringref getNamespaceSpecific() const { return getComponent(2); } + UserDocIdString* clone() const override { return new UserDocIdString(*this); } + Type getType() const override { return USERDOC; } + vespalib::stringref getNamespaceSpecific() const override { return getComponent(2); } int64_t _userId; }; @@ -183,7 +184,7 @@ private: * \ingroup base * \brief Scheme for distributing documents based on a group and a parametrized ordering. */ -class OrderDocIdString : public IdString { +class OrderDocIdString final : public IdString { public: OrderDocIdString(const vespalib::stringref& rawId); @@ -191,18 +192,18 @@ public: uint16_t getWidthBits() const { return _widthBits; } uint16_t getDivisionBits() const { return _divisionBits; } uint64_t getOrdering() const { return _ordering; } - std::pair<int16_t, int64_t> getGidBitsOverride() const; - vespalib::string getSchemeName() const; - virtual bool hasNumber() const { return true; } - uint64_t getNumber() const { return _location; } - virtual bool hasGroup() const { return true; } - virtual vespalib::stringref getGroup() const { return getComponent(1); } + std::pair<int16_t, int64_t> getGidBitsOverride() const override; + vespalib::string getSchemeName() const override; + bool hasNumber() const override { return true; } + uint64_t getNumber() const override { return _location; } + bool hasGroup() const override { return true; } + vespalib::stringref getGroup() const override { return getComponent(1); } private: - virtual LocationType getLocation() const { return _location; } - virtual OrderDocIdString* clone() const { return new OrderDocIdString(*this); } - virtual Type getType() const { return ORDERDOC; } - virtual vespalib::stringref getNamespaceSpecific() const { return getComponent(3); } + LocationType getLocation() const override { return _location; } + OrderDocIdString* clone() const override { return new OrderDocIdString(*this); } + Type getType() const override { return ORDERDOC; } + vespalib::stringref getNamespaceSpecific() const override { return getComponent(3); } LocationType _location; uint16_t _widthBits; @@ -221,9 +222,9 @@ private: class GroupDocIdString : public IdString { public: GroupDocIdString(const vespalib::stringref & rawId); - virtual bool hasGroup() const { return true; } - virtual vespalib::stringref getGroup() const { return getComponent(1); } - virtual LocationType getLocation() const; + bool hasGroup() const override { return true; } + vespalib::stringref getGroup() const override { return getComponent(1); } + LocationType getLocation() const override; /** * Extract the location for the group-specific part of a document ID. @@ -232,9 +233,9 @@ public: static LocationType locationFromGroupName(vespalib::stringref name); private: - virtual vespalib::stringref getNamespaceSpecific() const { return getComponent(2); } - virtual GroupDocIdString* clone() const { return new GroupDocIdString(*this); } - virtual Type getType() const { return GROUPDOC; } + vespalib::stringref getNamespaceSpecific() const override { return getComponent(2); } + GroupDocIdString* clone() const override { return new GroupDocIdString(*this); } + Type getType() const override { return GROUPDOC; } }; } // document diff --git a/document/src/vespa/document/base/testdocrepo.cpp b/document/src/vespa/document/base/testdocrepo.cpp index 2a844950eb0..6b010af383d 100644 --- a/document/src/vespa/document/base/testdocrepo.cpp +++ b/document/src/vespa/document/base/testdocrepo.cpp @@ -1,7 +1,6 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "testdocrepo.h" -#include <vespa/document/config/config-documenttypes.h> #include <vespa/document/datatype/documenttype.h> #include <vespa/document/repo/configbuilder.h> #include <vespa/config/print/fileconfigreader.h> diff --git a/document/src/vespa/document/bucket/bucketidfactory.h b/document/src/vespa/document/bucket/bucketidfactory.h index fb4fc919fed..f163b28efec 100644 --- a/document/src/vespa/document/bucket/bucketidfactory.h +++ b/document/src/vespa/document/bucket/bucketidfactory.h @@ -35,9 +35,7 @@ public: BucketIdFactory(); BucketId getBucketId(const DocumentId&) const; - - 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: void initializeMasks(); diff --git a/document/src/vespa/document/bucket/bucketselector.cpp b/document/src/vespa/document/bucket/bucketselector.cpp index 19aec7d7bf8..8b5e7ada91b 100644 --- a/document/src/vespa/document/bucket/bucketselector.cpp +++ b/document/src/vespa/document/bucket/bucketselector.cpp @@ -3,13 +3,11 @@ #include "bucketselector.h" #include "bucketidfactory.h" #include <vespa/document/base/documentid.h> -#include <vespa/document/base/idstring.h> #include <vespa/document/select/node.h> #include <vespa/document/select/valuenode.h> #include <vespa/document/select/visitor.h> #include <vespa/document/select/branch.h> #include <vespa/document/select/compare.h> -#include <algorithm> namespace document { @@ -31,7 +29,7 @@ using namespace document::select; BucketVisitor(const BucketIdFactory& factory) : _factory(factory), _buckets(), _unknown(true) {} - void visitAndBranch(const document::select::And& node) { + void visitAndBranch(const document::select::And& node) override { BucketVisitor left(_factory); node.getLeft().visit(left); node.getRight().visit(*this); @@ -53,7 +51,7 @@ using namespace document::select; return; } - void visitOrBranch(const document::select::Or& node) { + void visitOrBranch(const document::select::Or& node) override { BucketVisitor left(_factory); node.getLeft().visit(left); node.getRight().visit(*this); @@ -70,7 +68,7 @@ using namespace document::select; _buckets.swap(result); } - void visitNotBranch(const document::select::Not&) { + void visitNotBranch(const document::select::Not&) override { // Since selected locations doesn't include everything at that // location, we can't reverse the selection. Any NOT branch must // end up specifying all @@ -158,7 +156,7 @@ using namespace document::select; } } - void visitComparison(const document::select::Compare& node) { + void visitComparison(const document::select::Compare& node) override { if (node.getOperator() != document::select::FunctionOperator::EQ && node.getOperator() != document::select::GlobOperator::GLOB) { @@ -181,76 +179,21 @@ using namespace document::select; } } - 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/datatype/annotationreferencedatatype.h b/document/src/vespa/document/datatype/annotationreferencedatatype.h index 498c931f715..b340a3199ab 100644 --- a/document/src/vespa/document/datatype/annotationreferencedatatype.h +++ b/document/src/vespa/document/datatype/annotationreferencedatatype.h @@ -3,8 +3,7 @@ #pragma once #include "annotationtype.h" -#include <memory> -#include <vespa/document/datatype/datatype.h> +#include "datatype.h" namespace document { @@ -18,11 +17,10 @@ public: AnnotationReferenceDataType(const AnnotationType &type, int id); const AnnotationType &getAnnotationType() const; - virtual void print(std::ostream &out, bool verbose, - const std::string &indent) const; - virtual AnnotationReferenceDataType *clone() const; - virtual std::unique_ptr<FieldValue> createFieldValue() const; - virtual FieldPath::UP onBuildFieldPath(const vespalib::stringref &remainFieldName) const; + void print(std::ostream &out, bool verbose, const std::string &indent) const override; + AnnotationReferenceDataType *clone() const override; + std::unique_ptr<FieldValue> createFieldValue() const override; + FieldPath::UP onBuildFieldPath(const vespalib::stringref &remainFieldName) const override; DECLARE_IDENTIFIABLE(AnnotationReferenceDataType); }; diff --git a/document/src/vespa/document/datatype/collectiondatatype.h b/document/src/vespa/document/datatype/collectiondatatype.h index 59fbe2c6d5a..e4f40bc93c4 100644 --- a/document/src/vespa/document/datatype/collectiondatatype.h +++ b/document/src/vespa/document/datatype/collectiondatatype.h @@ -26,10 +26,9 @@ protected: const DataType &nestedType, int32_t id); public: - virtual ~CollectionDataType(); - - bool operator==(const DataType&) const; + ~CollectionDataType(); + bool operator==(const DataType&) const override; const DataType &getNestedType() const { return *_nestedType; } DECLARE_IDENTIFIABLE_ABSTRACT(CollectionDataType); diff --git a/document/src/vespa/document/datatype/datatype.h b/document/src/vespa/document/datatype/datatype.h index fbcfd767b0c..19e8998fd96 100644 --- a/document/src/vespa/document/datatype/datatype.h +++ b/document/src/vespa/document/datatype/datatype.h @@ -110,7 +110,7 @@ public: * Create a field value using this datatype. */ virtual std::unique_ptr<FieldValue> createFieldValue() const = 0; - virtual DataType* clone() const = 0; + virtual DataType* clone() const override = 0; /** * Whether another datatype is a supertype of this one. Document types may diff --git a/document/src/vespa/document/datatype/mapdatatype.h b/document/src/vespa/document/datatype/mapdatatype.h index d48f2d80f38..c3bcf6479a9 100644 --- a/document/src/vespa/document/datatype/mapdatatype.h +++ b/document/src/vespa/document/datatype/mapdatatype.h @@ -7,7 +7,7 @@ */ #pragma once -#include <vespa/document/datatype/datatype.h> +#include "datatype.h" namespace document { @@ -23,14 +23,13 @@ public: const DataType& getKeyType() const { return *_keyType; } const DataType& getValueType() const { return *_valueType; } - 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 MapDataType* clone() const { return new MapDataType(*this); } + 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; + MapDataType* clone() const override { return new MapDataType(*this); } FieldPath::UP onBuildFieldPath( - const vespalib::stringref &remainFieldName) const; + const vespalib::stringref &remainFieldName) const override; static FieldPath::UP buildFieldPathImpl( const DataType& dataType, const vespalib::stringref &remainFieldName, diff --git a/document/src/vespa/document/datatype/numericdatatype.h b/document/src/vespa/document/datatype/numericdatatype.h index cde5ac108ba..02cf037fa78 100644 --- a/document/src/vespa/document/datatype/numericdatatype.h +++ b/document/src/vespa/document/datatype/numericdatatype.h @@ -11,7 +11,7 @@ */ #pragma once -#include <vespa/document/datatype/primitivedatatype.h> +#include "primitivedatatype.h" namespace document { @@ -19,11 +19,8 @@ class NumericDataType : public PrimitiveDataType { public: NumericDataType(Type type); - // Implementation of PrimitiveDataType - virtual NumericDataType* clone() const - { return new NumericDataType(*this); } - virtual void print(std::ostream&, bool verbose, - const std::string& indent) const; + NumericDataType* clone() const override { return new NumericDataType(*this); } + void print(std::ostream&, bool verbose, const std::string& indent) const override; DECLARE_IDENTIFIABLE_ABSTRACT(NumericDataType); }; diff --git a/document/src/vespa/document/datatype/primitivedatatype.h b/document/src/vespa/document/datatype/primitivedatatype.h index e3b105a8597..7212ac0c797 100644 --- a/document/src/vespa/document/datatype/primitivedatatype.h +++ b/document/src/vespa/document/datatype/primitivedatatype.h @@ -15,21 +15,18 @@ */ #pragma once -#include <vespa/document/datatype/datatype.h> +#include "datatype.h" namespace document { class PrimitiveDataType : public DataType { - virtual FieldPath::UP onBuildFieldPath( - const vespalib::stringref & remainFieldName) const; + FieldPath::UP onBuildFieldPath(const vespalib::stringref & remainFieldName) const override; public: PrimitiveDataType(Type _type); - // Implementation of DataType - virtual std::unique_ptr<FieldValue> createFieldValue() const; - virtual PrimitiveDataType* clone() const - { return new PrimitiveDataType(*this); } - virtual void print(std::ostream&, bool verbose, const std::string& indent) const; + std::unique_ptr<FieldValue> createFieldValue() const override; + PrimitiveDataType* clone() const override { return new PrimitiveDataType(*this); } + void print(std::ostream&, bool verbose, const std::string& indent) const override; DECLARE_IDENTIFIABLE_ABSTRACT(PrimitiveDataType); }; diff --git a/document/src/vespa/document/datatype/structureddatatype.h b/document/src/vespa/document/datatype/structureddatatype.h index 5e93c1da73d..2c7956a8cb9 100644 --- a/document/src/vespa/document/datatype/structureddatatype.h +++ b/document/src/vespa/document/datatype/structureddatatype.h @@ -10,8 +10,8 @@ */ #pragma once +#include "datatype.h" #include <vespa/document/base/field.h> -#include <vespa/document/datatype/datatype.h> namespace document { @@ -38,9 +38,8 @@ public: virtual Field::Set getFieldSet() const = 0; - // Implementation of DataType - virtual StructuredDataType* clone() const = 0; - virtual bool operator==(const DataType& type) const; + virtual StructuredDataType* clone() const override = 0; + bool operator==(const DataType& type) const override; static int32_t createId(const vespalib::stringref &name); @@ -49,4 +48,3 @@ public: }; } - diff --git a/document/src/vespa/document/datatype/weightedsetdatatype.cpp b/document/src/vespa/document/datatype/weightedsetdatatype.cpp index 96dcca60976..f27c2cd01ad 100644 --- a/document/src/vespa/document/datatype/weightedsetdatatype.cpp +++ b/document/src/vespa/document/datatype/weightedsetdatatype.cpp @@ -1,7 +1,6 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "weightedsetdatatype.h" - #include "primitivedatatype.h" #include <vespa/document/fieldvalue/weightedsetfieldvalue.h> #include <vespa/vespalib/stllike/asciistream.h> diff --git a/document/src/vespa/document/datatype/weightedsetdatatype.h b/document/src/vespa/document/datatype/weightedsetdatatype.h index fcb8b982463..0d4954d1d80 100644 --- a/document/src/vespa/document/datatype/weightedsetdatatype.h +++ b/document/src/vespa/document/datatype/weightedsetdatatype.h @@ -11,7 +11,7 @@ */ #pragma once -#include <vespa/document/datatype/collectiondatatype.h> +#include "collectiondatatype.h" namespace document { @@ -21,10 +21,8 @@ class WeightedSetDataType : public CollectionDataType { public: WeightedSetDataType() {} - WeightedSetDataType(const DataType& nestedType, - bool createIfNonExistent, bool removeIfZero); - WeightedSetDataType(const DataType& nestedType, - bool createIfNonExistent, bool removeIfZero, int id); + WeightedSetDataType(const DataType& nestedType, bool createIfNonExistent, bool removeIfZero); + WeightedSetDataType(const DataType& nestedType, bool createIfNonExistent, bool removeIfZero, int id); /** * @return Whether values of this datatype will autogenerate entries if @@ -38,15 +36,11 @@ public: */ bool removeIfZero() const { return _removeIfZero; }; - // 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 WeightedSetDataType* clone() const - { return new WeightedSetDataType(*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; + WeightedSetDataType* clone() const override { return new WeightedSetDataType(*this); } + FieldPath::UP onBuildFieldPath(const vespalib::stringref &remainFieldName) const override; DECLARE_IDENTIFIABLE(WeightedSetDataType); }; diff --git a/document/src/vespa/document/fieldset/fieldsets.h b/document/src/vespa/document/fieldset/fieldsets.h index 1212b10d0b1..5b34ae9e979 100644 --- a/document/src/vespa/document/fieldset/fieldsets.h +++ b/document/src/vespa/document/fieldset/fieldsets.h @@ -5,97 +5,46 @@ namespace document { -class AllFields : public FieldSet +class AllFields final : public FieldSet { public: - virtual bool contains(const FieldSet&) const { - return true; - } - - /** - * @return Returns the type of field set this is. - */ - virtual Type getType() const { - return ALL; - } - - virtual FieldSet* clone() const { - return new AllFields(); - } + bool contains(const FieldSet&) const override { return true; } + Type getType() const override { return ALL; } + FieldSet* clone() const override { return new AllFields(); } }; -class NoFields : public FieldSet +class NoFields final : public FieldSet { public: - virtual bool contains(const FieldSet& f) const { - return f.getType() == NONE; - } - - /** - * @return Returns the type of field set this is. - */ - virtual Type getType() const { - return NONE; - } - - virtual FieldSet* clone() const { - return new NoFields(); - } + bool contains(const FieldSet& f) const override { return f.getType() == NONE; } + Type getType() const override { return NONE; } + FieldSet* clone() const override { return new NoFields(); } }; -class DocIdOnly : public FieldSet +class DocIdOnly final : public FieldSet { public: - virtual bool contains(const FieldSet& fields) const { + bool contains(const FieldSet& fields) const override { return fields.getType() == DOCID || fields.getType() == NONE; } - - /** - * @return Returns the type of field set this is. - */ - virtual Type getType() const { - return DOCID; - } - - virtual FieldSet* clone() const { - return new DocIdOnly(); - } - + Type getType() const override { return DOCID; } + FieldSet* clone() const override { return new DocIdOnly(); } }; -class HeaderFields : public FieldSet +class HeaderFields final : public FieldSet { public: - virtual bool contains(const FieldSet& fields) const; - - /** - * @return Returns the type of field set this is. - */ - virtual Type getType() const { - return HEADER; - } - - virtual FieldSet* clone() const { - return new HeaderFields(); - } - + bool contains(const FieldSet& fields) const override; + Type getType() const override { return HEADER; } + FieldSet* clone() const override { return new HeaderFields(); } }; -class BodyFields : public FieldSet +class BodyFields final : public FieldSet { public: - virtual bool contains(const FieldSet& fields) const; - - /** - * @return Returns the type of field set this is. - */ - virtual Type getType() const { - return BODY; - } - - virtual FieldSet* clone() const { - return new BodyFields(); - } + bool contains(const FieldSet& fields) const override; + Type getType() const override { return BODY; } + FieldSet* clone() const override { return new BodyFields(); } }; class FieldCollection : public FieldSet @@ -103,19 +52,11 @@ class FieldCollection : public FieldSet public: typedef std::unique_ptr<FieldCollection> UP; - FieldCollection(const DocumentType& docType) - : _docType(docType) {}; - + FieldCollection(const DocumentType& docType) : _docType(docType) {}; FieldCollection(const DocumentType& docType, const Field::Set& set); - virtual bool contains(const FieldSet& fields) const; - - /** - * @return Returns the type of field set this is. - */ - virtual Type getType() const { - return SET; - } + bool contains(const FieldSet& fields) const override; + Type getType() const override { return SET; } /** * @return Returns the document type the collection is associated with. @@ -139,15 +80,11 @@ public: */ const Field::Set& getFields() const { return _set; } - virtual FieldSet* clone() const { - return new FieldCollection(*this); - } + FieldSet* clone() const override { return new FieldCollection(*this); } private: Field::Set _set; const DocumentType& _docType; }; - } - diff --git a/document/src/vespa/document/fieldvalue/annotationreferencefieldvalue.h b/document/src/vespa/document/fieldvalue/annotationreferencefieldvalue.h index e6c9e329792..bdfc3a5c2ce 100644 --- a/document/src/vespa/document/fieldvalue/annotationreferencefieldvalue.h +++ b/document/src/vespa/document/fieldvalue/annotationreferencefieldvalue.h @@ -25,13 +25,12 @@ public: int32_t getAnnotationIndex() const { return _annotation_index; } - virtual int compare(const FieldValue& other) const; - virtual void print(std::ostream &out, bool verbose, - const std::string &indent) const; - virtual AnnotationReferenceFieldValue *clone() const; - virtual const DataType *getDataType() const { return _type; } - virtual void printXml(XmlOutputStream &out) const; - virtual bool hasChanged() const; + int compare(const FieldValue& other) const override; + void print(std::ostream &out, bool verbose, const std::string &indent) const override; + AnnotationReferenceFieldValue *clone() const override; + const DataType *getDataType() const override { return _type; } + void printXml(XmlOutputStream &out) const override; + bool hasChanged() const override; }; } // namespace document diff --git a/document/src/vespa/document/fieldvalue/arrayfieldvalue.cpp b/document/src/vespa/document/fieldvalue/arrayfieldvalue.cpp index bc507316e19..d71d841f851 100644 --- a/document/src/vespa/document/fieldvalue/arrayfieldvalue.cpp +++ b/document/src/vespa/document/fieldvalue/arrayfieldvalue.cpp @@ -1,18 +1,9 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/document/fieldvalue/arrayfieldvalue.h> -#include <vespa/document/fieldvalue/intfieldvalue.h> -#include <vespa/document/fieldvalue/floatfieldvalue.h> -#include <vespa/document/fieldvalue/stringfieldvalue.h> -#include <vespa/document/fieldvalue/rawfieldvalue.h> -#include <vespa/document/fieldvalue/longfieldvalue.h> -#include <vespa/document/fieldvalue/doublefieldvalue.h> -#include <vespa/document/fieldvalue/bytefieldvalue.h> -#include <vespa/document/fieldvalue/predicatefieldvalue.h> - -#include <vespa/document/util/bytebuffer.h> -#include <vespa/document/util/serializable.h> +#include "arrayfieldvalue.h" +#include "intfieldvalue.h" +#include "stringfieldvalue.h" +#include "predicatefieldvalue.h" #include <vespa/document/util/serializableexceptions.h> -#include <vespa/vespalib/util/exceptions.h> #include <vespa/log/log.h> LOG_SETUP(".document.fieldvalue.array"); @@ -297,8 +288,8 @@ class FieldValueFactory : public ComplexArrayT<FieldValue>::Factory { public: FieldValueFactory(DataType::UP dataType) : _dataType(dataType.release()) { } - FieldValue * create() { return _dataType->createFieldValue().release(); } - virtual FieldValueFactory * clone() const { return new FieldValueFactory(*this); } + FieldValue * create() override { return _dataType->createFieldValue().release(); } + FieldValueFactory * clone() const override { return new FieldValueFactory(*this); } private: DataType::CP _dataType; }; diff --git a/document/src/vespa/document/fieldvalue/arrayfieldvalue.h b/document/src/vespa/document/fieldvalue/arrayfieldvalue.h index 203b053812f..0ee300e75db 100644 --- a/document/src/vespa/document/fieldvalue/arrayfieldvalue.h +++ b/document/src/vespa/document/fieldvalue/arrayfieldvalue.h @@ -12,8 +12,8 @@ */ #pragma once +#include "collectionfieldvalue.h" #include <vespa/document/datatype/arraydatatype.h> -#include <vespa/document/fieldvalue/collectionfieldvalue.h> namespace document { @@ -21,17 +21,17 @@ class ArrayFieldValue : public CollectionFieldValue { private: IArray::UP _array; - virtual bool addValue(const FieldValue&); - virtual bool containsValue(const FieldValue& val) const; - virtual bool removeValue(const FieldValue& val); + bool addValue(const FieldValue&) override; + bool containsValue(const FieldValue& val) const override; + bool removeValue(const FieldValue& val) override; IteratorHandler::ModificationStatus iterateSubset( int startPos, int endPos, const vespalib::stringref & variable, FieldPath::const_iterator nextPos, FieldPath::const_iterator end_, IteratorHandler& handler) const; - virtual IteratorHandler::ModificationStatus onIterateNested( + IteratorHandler::ModificationStatus onIterateNested( FieldPath::const_iterator start, FieldPath::const_iterator end, - IteratorHandler & handler) const; + IteratorHandler & handler) const override; public: typedef IArray::const_iterator const_iterator; typedef IArray::iterator iterator; @@ -44,7 +44,7 @@ public: */ ArrayFieldValue(const DataType &arrayType); ArrayFieldValue(const ArrayFieldValue&); - virtual ~ArrayFieldValue(); + ~ArrayFieldValue(); ArrayFieldValue& operator=(const ArrayFieldValue&); @@ -58,22 +58,18 @@ public: void remove(uint32_t index); bool remove(const FieldValue& val) { return removeValue(val); } - // CollectionFieldValue implementation - virtual bool isEmpty() const { return _array->empty(); } - virtual size_t size() const { return _array->size(); } - virtual void clear() { _array->clear(); } + bool isEmpty() const override { return _array->empty(); } + size_t size() const override { return _array->size(); } + void clear() override { _array->clear(); } void reserve(size_t sz) { _array->reserve(sz); } void resize(size_t sz) { _array->resize(sz); } - // FieldValue implementation - virtual FieldValue& assign(const FieldValue&); - virtual ArrayFieldValue* clone() const - { return new ArrayFieldValue(*this); } - virtual int compare(const FieldValue&) const; - virtual void printXml(XmlOutputStream& out) const; - virtual void print(std::ostream& out, bool verbose, - const std::string& indent) const; - virtual bool hasChanged() const; + FieldValue& assign(const FieldValue&) override; + ArrayFieldValue* clone() const override { return new ArrayFieldValue(*this); } + int compare(const FieldValue&) const override; + void printXml(XmlOutputStream& out) const override; + void print(std::ostream& out, bool verbose, const std::string& indent) const override; + bool hasChanged() const override; void swap(ArrayFieldValue & other) { _array.swap(other._array); } // Iterator functionality diff --git a/document/src/vespa/document/fieldvalue/bytefieldvalue.h b/document/src/vespa/document/fieldvalue/bytefieldvalue.h index 84102ab1350..6d5f7f14a83 100644 --- a/document/src/vespa/document/fieldvalue/bytefieldvalue.h +++ b/document/src/vespa/document/fieldvalue/bytefieldvalue.h @@ -7,8 +7,8 @@ */ #pragma once +#include "numericfieldvalue.h" #include <vespa/document/datatype/numericdatatype.h> -#include <vespa/document/fieldvalue/numericfieldvalue.h> namespace document { @@ -22,11 +22,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::BYTE; } - - virtual ByteFieldValue* clone() const { return new ByteFieldValue(*this); } - + const DataType *getDataType() const override { return DataType::BYTE; } + ByteFieldValue* clone() const override { return new ByteFieldValue(*this); } using NumericFieldValue<Number>::operator=; DECLARE_IDENTIFIABLE(ByteFieldValue); diff --git a/document/src/vespa/document/fieldvalue/collectionfieldvalue.h b/document/src/vespa/document/fieldvalue/collectionfieldvalue.h index 3524b67afab..4be3768b58e 100644 --- a/document/src/vespa/document/fieldvalue/collectionfieldvalue.h +++ b/document/src/vespa/document/fieldvalue/collectionfieldvalue.h @@ -10,8 +10,8 @@ */ #pragma once +#include "fieldvalue.h" #include <vespa/document/datatype/collectiondatatype.h> -#include <vespa/document/fieldvalue/fieldvalue.h> namespace document { @@ -38,7 +38,7 @@ public: return *this; } - virtual const DataType *getDataType() const { return _type; } + const DataType *getDataType() const override { return _type; } FieldValue::UP createNested() const { return getNestedType().createFieldValue(); diff --git a/document/src/vespa/document/fieldvalue/numericfieldvalue.h b/document/src/vespa/document/fieldvalue/numericfieldvalue.h index 1d3b373fdfc..38abb8c2d8b 100644 --- a/document/src/vespa/document/fieldvalue/numericfieldvalue.h +++ b/document/src/vespa/document/fieldvalue/numericfieldvalue.h @@ -10,7 +10,7 @@ */ #pragma once -#include <vespa/document/fieldvalue/fieldvalue.h> +#include "fieldvalue.h" #include <vespa/vespalib/stllike/hash_fun.h> namespace document { @@ -19,7 +19,7 @@ class NumericFieldValueBase : public FieldValue { public: DECLARE_IDENTIFIABLE_ABSTRACT(NumericFieldValueBase); - virtual void printXml(XmlOutputStream& out) const; + void printXml(XmlOutputStream& out) const override; }; template<typename Number> @@ -44,7 +44,7 @@ public: FieldValue& operator=(int64_t) override; FieldValue& operator=(float) override; FieldValue& operator=(double) override; - size_t hash() const { return vespalib::hash<Number>()(_value); } + size_t hash() const override { return vespalib::hash<Number>()(_value); } char getAsByte() const override; int32_t getAsInt() const override; @@ -54,7 +54,7 @@ public: vespalib::string getAsString() const override; void print(std::ostream& out, bool verbose, const std::string& indent) const override; - virtual bool hasChanged() const override { return _altered; } + bool hasChanged() const override { return _altered; } }; } // document diff --git a/document/src/vespa/document/predicate/predicate.cpp b/document/src/vespa/document/predicate/predicate.cpp index 75648fcb4ba..aa6c1f4e337 100644 --- a/document/src/vespa/document/predicate/predicate.cpp +++ b/document/src/vespa/document/predicate/predicate.cpp @@ -98,7 +98,7 @@ class InsertFromArray : public ArrayTraverser { public: InsertFromArray(InsertIt it) : _it(it) {} ArrayTraverser &ref() { return *this; } - virtual void entry(size_t, const Inspector &inspector) { + void entry(size_t, const Inspector &inspector) override { *_it++ = inspector.asString().make_string(); } }; diff --git a/document/src/vespa/document/predicate/predicate_builder.h b/document/src/vespa/document/predicate/predicate_builder.h index 31bf9eb60fd..3854eaacc66 100644 --- a/document/src/vespa/document/predicate/predicate_builder.h +++ b/document/src/vespa/document/predicate/predicate_builder.h @@ -12,16 +12,16 @@ class PredicateNode; class PredicateBuilder : private PredicateSlimeVisitor { std::vector<PredicateNode *>_nodes; - virtual void visitFeatureSet(const vespalib::slime::Inspector &i); - virtual void visitFeatureRange(const vespalib::slime::Inspector &i); - virtual void visitNegation(const vespalib::slime::Inspector &i); - virtual void visitConjunction(const vespalib::slime::Inspector &i); - virtual void visitDisjunction(const vespalib::slime::Inspector &i); - virtual void visitTrue(const vespalib::slime::Inspector &i); - virtual void visitFalse(const vespalib::slime::Inspector &i); + void visitFeatureSet(const Inspector &i) override; + void visitFeatureRange(const Inspector &i) override; + void visitNegation(const Inspector &i) override; + void visitConjunction(const Inspector &i) override; + void visitDisjunction(const Inspector &i) override; + void visitTrue(const Inspector &i) override; + void visitFalse(const Inspector &i) override; public: - std::unique_ptr<PredicateNode> build(const vespalib::slime::Inspector &i); + std::unique_ptr<PredicateNode> build(const Inspector &i); }; } // namespace document diff --git a/document/src/vespa/document/predicate/predicate_printer.h b/document/src/vespa/document/predicate/predicate_printer.h index b4e4e133ae3..09ef7254a58 100644 --- a/document/src/vespa/document/predicate/predicate_printer.h +++ b/document/src/vespa/document/predicate/predicate_printer.h @@ -16,13 +16,13 @@ class PredicatePrinter : PredicateSlimeVisitor { std::unique_ptr<vespalib::asciistream> _out; bool _negated; - virtual void visitFeatureSet(const vespalib::slime::Inspector &i); - virtual void visitFeatureRange(const vespalib::slime::Inspector &i); - virtual void visitNegation(const vespalib::slime::Inspector &i); - virtual void visitConjunction(const vespalib::slime::Inspector &i); - virtual void visitDisjunction(const vespalib::slime::Inspector &i); - virtual void visitTrue(const vespalib::slime::Inspector &i); - virtual void visitFalse(const vespalib::slime::Inspector &i); + void visitFeatureSet(const Inspector &i) override; + void visitFeatureRange(const Inspector &i) override; + void visitNegation(const Inspector &i) override; + void visitConjunction(const Inspector &i) override; + void visitDisjunction(const Inspector &i) override; + void visitTrue(const Inspector &i) override; + void visitFalse(const Inspector &i) override; vespalib::string str() const; diff --git a/document/src/vespa/document/predicate/predicate_slime_visitor.h b/document/src/vespa/document/predicate/predicate_slime_visitor.h index c35a9adb666..3d7ef1aa25a 100644 --- a/document/src/vespa/document/predicate/predicate_slime_visitor.h +++ b/document/src/vespa/document/predicate/predicate_slime_visitor.h @@ -9,21 +9,23 @@ namespace slime { class Inspector; } namespace document { class PredicateSlimeVisitor { - virtual void visitFeatureSet(const vespalib::slime::Inspector &i) = 0; - virtual void visitFeatureRange(const vespalib::slime::Inspector &i) = 0; - virtual void visitNegation(const vespalib::slime::Inspector &i) = 0; - virtual void visitConjunction(const vespalib::slime::Inspector &i) = 0; - virtual void visitDisjunction(const vespalib::slime::Inspector &i) = 0; - virtual void visitTrue(const vespalib::slime::Inspector &i) = 0; - virtual void visitFalse(const vespalib::slime::Inspector &i) = 0; +protected: + using Inspector = vespalib::slime::Inspector; + virtual void visitFeatureSet(const Inspector &i) = 0; + virtual void visitFeatureRange(const Inspector &i) = 0; + virtual void visitNegation(const Inspector &i) = 0; + virtual void visitConjunction(const Inspector &i) = 0; + virtual void visitDisjunction(const Inspector &i) = 0; + virtual void visitTrue(const Inspector &i) = 0; + virtual void visitFalse(const Inspector &i) = 0; protected: - void visitChildren(const vespalib::slime::Inspector &i); + void visitChildren(const Inspector &i); public: virtual ~PredicateSlimeVisitor() {} - void visit(const vespalib::slime::Inspector &i); + void visit(const Inspector &i); }; } // namespace document diff --git a/document/src/vespa/document/select/branch.h b/document/src/vespa/document/select/branch.h index 7d5de0e8d51..d80eb2a14d1 100644 --- a/document/src/vespa/document/select/branch.h +++ b/document/src/vespa/document/select/branch.h @@ -24,7 +24,7 @@ class Branch : public Node public: Branch(const vespalib::stringref & name) : Node(name) {} - virtual bool isLeafNode() const { return false; } + bool isLeafNode() const override { return false; } }; class And : public Branch @@ -35,20 +35,18 @@ public: And(std::unique_ptr<Node> left, std::unique_ptr<Node> right, const char* name = 0); - virtual ResultList contains(const Context& context) const - { return (_left->contains(context) && _right->contains(context)); } - virtual ResultList trace(const Context&, std::ostream& trace) const; - virtual void visit(Visitor &v) const; - virtual void print(std::ostream& out, bool verbose, - const std::string& indent) const; + ResultList contains(const Context& context) const override { + return (_left->contains(context) && _right->contains(context)); + } + ResultList trace(const Context&, std::ostream& trace) const override; + void visit(Visitor &v) const override; + void print(std::ostream& out, bool verbose, const std::string& indent) const override; const Node& getLeft() const { return *_left; } const Node& getRight() const { return *_right; } - Node::UP clone() const { - return wrapParens(new And(_left->clone(), - _right->clone(), - _name.c_str())); + Node::UP clone() const override{ + return wrapParens(new And(_left->clone(), _right->clone(), _name.c_str())); } }; @@ -60,20 +58,18 @@ public: Or(std::unique_ptr<Node> left, std::unique_ptr<Node> right, const char* name = 0); - virtual ResultList contains(const Context& context) const - { return (_left->contains(context) || _right->contains(context)); } - virtual ResultList trace(const Context&, std::ostream& trace) const; - virtual void visit(Visitor &v) const; - virtual void print(std::ostream& out, bool verbose, - const std::string& indent) const; + ResultList contains(const Context& context) const override { + return (_left->contains(context) || _right->contains(context)); + } + ResultList trace(const Context&, std::ostream& trace) const override; + void visit(Visitor &v) const override; + void print(std::ostream& out, bool verbose, const std::string& indent) const override; const Node& getLeft() const { return *_left; } const Node& getRight() const { return *_right; } - Node::UP clone() const { - return wrapParens(new Or(_left->clone(), - _right->clone(), - _name.c_str())); + Node::UP clone() const override { + return wrapParens(new Or(_left->clone(), _right->clone(), _name.c_str())); } }; @@ -83,16 +79,14 @@ class Not : public Branch public: Not(std::unique_ptr<Node> child, const char* name = 0); - virtual ResultList contains(const Context& context) const - { return !_child->contains(context); } - virtual ResultList trace(const Context&, std::ostream& trace) const; - virtual void visit(Visitor &v) const; - virtual void print(std::ostream& out, bool verbose, - const std::string& indent) const; + ResultList contains(const Context& context) const override { return !_child->contains(context); } + ResultList trace(const Context&, std::ostream& trace) const override; + void visit(Visitor &v) const override; + void print(std::ostream& out, bool verbose, const std::string& indent) const override; const Node& getChild() const { return *_child; } - Node::UP clone() const { + Node::UP clone() const override { return wrapParens(new Not(_child->clone(), _name.c_str())); } }; diff --git a/document/src/vespa/document/select/result.h b/document/src/vespa/document/select/result.h index 98e6195e11f..ae7b0fdcabf 100644 --- a/document/src/vespa/document/select/result.h +++ b/document/src/vespa/document/select/result.h @@ -31,8 +31,7 @@ public: static Result False; static Result True; - 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 Result& o) const { return (&o == this); } bool operator!=(const Result& o) const { return (&o != this); } diff --git a/document/src/vespa/document/select/resultlist.h b/document/src/vespa/document/select/resultlist.h index c33151ca496..6a3cc1f78d1 100644 --- a/document/src/vespa/document/select/resultlist.h +++ b/document/src/vespa/document/select/resultlist.h @@ -32,7 +32,7 @@ public: ResultList operator||(const ResultList& other) const; ResultList operator!() const; - 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 isEmpty() const { return _results.empty(); } diff --git a/metrics/src/vespa/metrics/printutils.h b/metrics/src/vespa/metrics/printutils.h index 93f7264c245..93c0750a2e3 100644 --- a/metrics/src/vespa/metrics/printutils.h +++ b/metrics/src/vespa/metrics/printutils.h @@ -10,8 +10,8 @@ #pragma once +#include "metricmanager.h" #include <vespa/vespalib/text/stringtokenizer.h> -#include <vespa/metrics/metricmanager.h> #include <vespa/vespalib/util/exceptions.h> namespace metrics { diff --git a/slobrok/src/vespa/slobrok/server/remote_check.h b/slobrok/src/vespa/slobrok/server/remote_check.h index aa0326c5fbf..44962b1654d 100644 --- a/slobrok/src/vespa/slobrok/server/remote_check.h +++ b/slobrok/src/vespa/slobrok/server/remote_check.h @@ -1,8 +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/fnet/fnet.h> -#include <vespa/fnet/frt/frt.h> +#include <vespa/fnet/task.h> namespace slobrok { diff --git a/slobrok/src/vespa/slobrok/server/sbenv.cpp b/slobrok/src/vespa/slobrok/server/sbenv.cpp index a766c6cfdf8..0cc0b2467e2 100644 --- a/slobrok/src/vespa/slobrok/server/sbenv.cpp +++ b/slobrok/src/vespa/slobrok/server/sbenv.cpp @@ -1,15 +1,9 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "sbenv.h" -#include "rpchooks.h" #include "selfcheck.h" #include "remote_check.h" -#include <vespa/fnet/fnet.h> -#include <vespa/fnet/frt/frt.h> -#include <memory> -#include <string> #include <sstream> -#include <vespa/vespalib/util/exception.h> #include <vespa/vespalib/net/state_server.h> #include <vespa/vespalib/util/host_name.h> #include <vespa/vespalib/stllike/asciistream.h> diff --git a/slobrok/src/vespa/slobrok/server/slobrokserver.h b/slobrok/src/vespa/slobrok/server/slobrokserver.h index a87902d0aa1..2b62f62956c 100644 --- a/slobrok/src/vespa/slobrok/server/slobrokserver.h +++ b/slobrok/src/vespa/slobrok/server/slobrokserver.h @@ -5,12 +5,9 @@ #include "configshim.h" #include <vespa/vespalib/util/thread.h> #include <vespa/vespalib/util/runnable.h> -#include <vespa/config/config.h> -#include <vespa/config-slobroks.h> namespace slobrok { - class SlobrokServer : public vespalib::Runnable { private: diff --git a/staging_vespalib/src/vespa/vespalib/objects/identifiable.h b/staging_vespalib/src/vespa/vespalib/objects/identifiable.h index 5d68c781046..93953847814 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/identifiable.h +++ b/staging_vespalib/src/vespa/vespalib/objects/identifiable.h @@ -16,11 +16,6 @@ * */ -#include <string> -#include <vector> -#include <memory> -#include <typeinfo> - #define CID_Identifiable 1 #include "ids.h" @@ -34,12 +29,19 @@ #define IDENTIFIABLE_CLASSID_NS2(ns1, ns2, cclass) CID_##ns1##_##ns2##_##cclass #define IDENTIFIABLE_CLASSID_NS3(ns1, ns2, ns3, cclass) CID_##ns1##_##ns2##_##ns3##_##cclass -#define DECLARE_IDENTIFIABLE_BASE_COMMON(cclass) \ +#define DECLARE_IDENTIFIABLE_STATIC_BASE_COMMON(cclass) \ static vespalib::Identifiable::RuntimeInfo _RTInfo; \ static vespalib::Identifiable::RuntimeClass _RTClass; \ static const std::type_info & typeId() { return typeid(cclass); } \ static bool tryCast(const vespalib::Identifiable * v) { return dynamic_cast<const cclass *>(v) != NULL; } \ - static cclass *identifyClassAsIdentifiable() { return NULL; } /* no implementation */ \ + static cclass *identifyClassAsIdentifiable() { return NULL; } /* no implementation */ + +#define DECLARE_IDENTIFIABLE_BASE_COMMON(cclass) \ + DECLARE_IDENTIFIABLE_STATIC_BASE_COMMON(cclass) \ + const vespalib::Identifiable::RuntimeClass & getClass() const override; + +#define DECLARE_IDENTIFIABLE_BASE_COMMON_ROOT(cclass) \ + DECLARE_IDENTIFIABLE_STATIC_BASE_COMMON(cclass) \ virtual const vespalib::Identifiable::RuntimeClass & getClass() const; #define DECLARE_IDENTIFIABLE_BASE(cclass, classid) \ @@ -47,20 +49,36 @@ enum { classId=classid }; \ DECLARE_IDENTIFIABLE_BASE_COMMON(cclass) +#define DECLARE_IDENTIFIABLE_BASE_ROOT(cclass, classid) \ + public: \ + enum { classId=classid }; \ + DECLARE_IDENTIFIABLE_BASE_COMMON_ROOT(cclass) + #define DECLARE_IDENTIFIABLE_ABSTRACT(cclass) DECLARE_IDENTIFIABLE_BASE(cclass, IDENTIFIABLE_CLASSID(cclass)) #define DECLARE_IDENTIFIABLE_ABSTRACT_NS(ns, cclass) DECLARE_IDENTIFIABLE_BASE(ns::cclass, IDENTIFIABLE_CLASSID_NS(ns, cclass)) #define DECLARE_IDENTIFIABLE_ABSTRACT_NS2(ns1, ns2, cclass) DECLARE_IDENTIFIABLE_BASE(ns1::ns2::cclass, IDENTIFIABLE_CLASSID_NS2(ns1, ns2, cclass)) #define DECLARE_IDENTIFIABLE_ABSTRACT_NS3(ns1, ns2, ns3, cclass) DECLARE_IDENTIFIABLE_BASE(ns1::ns2::ns3::cclass, IDENTIFIABLE_CLASSID_NS3(ns1, ns2, ns3, cclass)) -#define DECLARE_IDENTIFIABLE_COMMON(cclass) \ - virtual void assign(const vespalib::Identifiable & rhs); \ +#define DECLARE_IDENTIFIABLE_STATIC_COMMON(cclass) \ static cclass * create() { return new cclass(); } \ static Identifiable * createAsIdentifiable() { return cclass::create(); } +#define DECLARE_IDENTIFIABLE_COMMON(cclass) \ + void assign(const vespalib::Identifiable & rhs) override; \ + DECLARE_IDENTIFIABLE_STATIC_COMMON(cclass) + +#define DECLARE_IDENTIFIABLE_COMMON_ROOT(cclass) \ + virtual void assign(const vespalib::Identifiable & rhs); \ + DECLARE_IDENTIFIABLE_STATIC_COMMON(cclass) + #define DECLARE_IDENTIFIABLE(cclass) \ DECLARE_IDENTIFIABLE_BASE(cclass, IDENTIFIABLE_CLASSID(cclass)) \ DECLARE_IDENTIFIABLE_COMMON(cclass) +#define DECLARE_IDENTIFIABLE_ROOT(cclass) \ + DECLARE_IDENTIFIABLE_BASE_ROOT(cclass, IDENTIFIABLE_CLASSID(cclass)) \ + DECLARE_IDENTIFIABLE_COMMON_ROOT(cclass) + #define DECLARE_IDENTIFIABLE_NS(ns, cclass) \ DECLARE_IDENTIFIABLE_BASE(ns::cclass, IDENTIFIABLE_CLASSID_NS(ns, cclass)) \ DECLARE_IDENTIFIABLE_COMMON(ns::cclass) @@ -171,7 +189,7 @@ public: stringref getName() const override { return stringref(_rt->_name); } RuntimeInfo * _rt; }; - DECLARE_IDENTIFIABLE(Identifiable); + DECLARE_IDENTIFIABLE_ROOT(Identifiable); Identifiable() { } Identifiable(Identifiable &&) = default; Identifiable & operator = (Identifiable &&) = default; diff --git a/staging_vespalib/src/vespa/vespalib/util/polymorphicarrays.h b/staging_vespalib/src/vespa/vespalib/util/polymorphicarrays.h index f57cd84c91a..696c55f9ae3 100644 --- a/staging_vespalib/src/vespa/vespalib/util/polymorphicarrays.h +++ b/staging_vespalib/src/vespa/vespalib/util/polymorphicarrays.h @@ -109,10 +109,10 @@ public: virtual ~Factory() { } }; explicit ComplexArrayT(typename Factory::UP factory) : _array(), _factory(factory.release()) { } - virtual ~ComplexArrayT() { } - virtual const B & operator [] (size_t i) const { return *_array[i]; } - virtual B & operator [] (size_t i) { return *_array[i]; } - virtual void resize(size_t sz) { + ~ComplexArrayT() { } + const B & operator [] (size_t i) const override { return *_array[i]; } + B & operator [] (size_t i) override { return *_array[i]; } + void resize(size_t sz) override { _array.resize(sz); for (auto & cp : _array) { if ( cp.get() == nullptr) { @@ -120,12 +120,12 @@ public: } } } - virtual void reserve(size_t sz) { _array.reserve(sz); } - virtual void clear() { _array.clear(); } - virtual IArrayT<B> * clone() const { return new ComplexArrayT<B>(*this); } - virtual size_t size() const { return _array.size(); } - virtual iterator erase(iterator it) { _array.erase(_array.begin() + (it - this->begin())); return it; } - virtual void push_back(const B & v) { _array.push_back(v.clone()); } + void reserve(size_t sz) override { _array.reserve(sz); } + void clear() override { _array.clear(); } + IArrayT<B> * clone() const override { return new ComplexArrayT<B>(*this); } + size_t size() const override { return _array.size(); } + iterator erase(iterator it) override { _array.erase(_array.begin() + (it - this->begin())); return it; } + void push_back(const B & v) override { _array.push_back(v.clone()); } private: typedef vespalib::CloneablePtr<B> CP; std::vector<CP> _array; diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.h b/storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.h index 8c3ff58b4db..36381e958a1 100644 --- a/storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.h +++ b/storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.h @@ -68,8 +68,8 @@ public: return *_metricManager; } - virtual void registerComponent(ManagedComponent&); - virtual void requestShutdown(vespalib::stringref reason); + void registerComponent(ManagedComponent&) override; + void requestShutdown(vespalib::stringref reason) override; void setMetricManager(metrics::MetricManager&); void setMemoryManager(MemoryManagerInterface&); @@ -77,13 +77,13 @@ public: void setThreadPool(ThreadPool&); void setUpgradeFlag(UpgradeFlags flag); - const StatusReporter* getStatusReporter(vespalib::stringref id); - std::vector<const StatusReporter*> getStatusReporters(); + const StatusReporter* getStatusReporter(vespalib::stringref id) override; + std::vector<const StatusReporter*> getStatusReporters() override; - void registerMetric(metrics::Metric&); + void registerMetric(metrics::Metric&) override; void registerUpdateHook(vespalib::stringref name, MetricUpdateHook& hook, - SecondTime period); + SecondTime period) override; vespalib::MonitorGuard getMetricManagerLock() override; void registerShutdownListener(ShutdownListener&); diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/memory/memorymanager.h b/storageframework/src/vespa/storageframework/defaultimplementation/memory/memorymanager.h index 0db8b7ab4b0..7eea530e229 100644 --- a/storageframework/src/vespa/storageframework/defaultimplementation/memory/memorymanager.h +++ b/storageframework/src/vespa/storageframework/defaultimplementation/memory/memorymanager.h @@ -57,19 +57,19 @@ public: uint8_t priority, ReduceMemoryUsageInterface* = 0); - virtual ~MemoryTokenImpl(); + ~MemoryTokenImpl(); - uint64_t getSize() const { return _currentlyAllocated; } + uint64_t getSize() const override { return _currentlyAllocated; } uint64_t getAllocationCount() const { return _allocCount; } const MemoryAllocationType& getType() const { return _type; } ReduceMemoryUsageInterface* getReducer() const { return _reducer; } uint8_t getPriority() const { return _priority; } - virtual bool resize(uint64_t min, uint64_t max); + bool resize(uint64_t min, uint64_t max) override; - 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; }; class AllocationLogic : public vespalib::Printable diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/thread/threadimpl.h b/storageframework/src/vespa/storageframework/defaultimplementation/thread/threadimpl.h index f5dfb4237d5..b31b4be3ce9 100644 --- a/storageframework/src/vespa/storageframework/defaultimplementation/thread/threadimpl.h +++ b/storageframework/src/vespa/storageframework/defaultimplementation/thread/threadimpl.h @@ -18,7 +18,7 @@ class ThreadImpl : public Thread struct BackendThread : public document::Runnable { ThreadImpl& _impl; BackendThread(ThreadImpl& impl) : _impl(impl) {} - virtual void run() { _impl.run(); } + void run() override { _impl.run(); } }; /** @@ -59,32 +59,28 @@ public: int ticksBeforeWait); ~ThreadImpl(); - virtual bool interrupted() const; - virtual bool joined() const; - virtual void interrupt(); - virtual void join(); - virtual void registerTick(CycleType, MilliSecTime); - virtual uint64_t getWaitTime() const { + bool interrupted() const override; + bool joined() const override; + void interrupt() override; + void join() override; + void registerTick(CycleType, MilliSecTime) override; + uint64_t getWaitTime() const override { return _properties.getWaitTime(); } - virtual int getTicksBeforeWait() const { + int getTicksBeforeWait() const override { return _properties.getTicksBeforeWait(); } - virtual uint64_t getMaxProcessTime() const { + uint64_t getMaxProcessTime() const override { return _properties.getMaxProcessTime(); } - virtual void updateParameters(uint64_t waitTime, - uint64_t maxProcessTime, - int ticksBeforeWait); + void updateParameters(uint64_t waitTime, uint64_t maxProcessTime, int ticksBeforeWait) override; void setTickData(const ThreadTickData&); ThreadTickData getTickData() const; - const ThreadProperties& getProperties() const - { return _properties; } + const ThreadProperties& getProperties() const { return _properties; } }; } // defaultimplementation } // framework } // storage - |