diff options
author | Arnstein Ressem <aressem@gmail.com> | 2017-03-21 19:53:40 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-21 19:53:40 +0100 |
commit | 98dbd312e170ce25eb3206c2a348f7aa799b42f7 (patch) | |
tree | 0ac01beb58b53c0b1630a2415805361d9f676c37 | |
parent | e36267c66428e0327371a6970fb71ad0a5a1e877 (diff) |
Revert "Change interface to accomodate removing linkedptr later on."
8 files changed, 17 insertions, 24 deletions
diff --git a/searchcore/src/vespa/searchcore/grouping/groupingmanager.cpp b/searchcore/src/vespa/searchcore/grouping/groupingmanager.cpp index 83f81105f25..fe8f67384b4 100644 --- a/searchcore/src/vespa/searchcore/grouping/groupingmanager.cpp +++ b/searchcore/src/vespa/searchcore/grouping/groupingmanager.cpp @@ -49,10 +49,10 @@ GroupingManager::init(const IAttributeContext &attrCtx) for (size_t k = grouping.getFirstLevel(); k <= grouping.getLastLevel() && k < levels.size(); k++) { GroupingLevel & level(levels[k]); - ExpressionNode & en = *level.getExpression().getRoot(); + ExpressionNode::LP en = level.getExpression().getRoot(); - if (en.inherits(AttributeNode::classId)) { - AttributeNode & an = static_cast<AttributeNode &>(en); + if (en->inherits(AttributeNode::classId)) { + AttributeNode & an = static_cast<AttributeNode &>(*en); an.useEnumOptimization(); } } diff --git a/searchlib/src/vespa/searchlib/aggregation/aggregationresult.h b/searchlib/src/vespa/searchlib/aggregation/aggregationresult.h index 87689ae81d6..f78d5cfbea1 100644 --- a/searchlib/src/vespa/searchlib/aggregation/aggregationresult.h +++ b/searchlib/src/vespa/searchlib/aggregation/aggregationresult.h @@ -59,8 +59,8 @@ public: const ResultNode & getResult() const { return onGetRank(); } virtual ResultNode & getResult() { return const_cast<ResultNode &>(onGetRank()); } virtual AggregationResult * clone() const = 0; - const ExpressionNode * getExpression() const { return _expressionTree->getRoot(); } - ExpressionNode * getExpression() { return _expressionTree->getRoot(); } + const ExpressionNode * getExpression() const { return _expressionTree->getRoot().get(); } + ExpressionNode * getExpression() { return _expressionTree->getRoot().get(); } protected: AggregationResult(); private: diff --git a/searchlib/src/vespa/searchlib/aggregation/grouping.cpp b/searchlib/src/vespa/searchlib/aggregation/grouping.cpp index 11b354b4e9b..4c59cad9215 100644 --- a/searchlib/src/vespa/searchlib/aggregation/grouping.cpp +++ b/searchlib/src/vespa/searchlib/aggregation/grouping.cpp @@ -68,7 +68,7 @@ public: const EnumResultNode & er = static_cast<const EnumResultNode &>(group.getId()); const Grouping::GroupingLevelList &gll = _grouping.getLevels(); const GroupingLevel & gl = gll[_level]; - const ExpressionNode * en = gl.getExpression().getRoot(); + const ExpressionNode::LP & en = gl.getExpression().getRoot(); const AttributeNode & an = static_cast<const AttributeNode &>(*en); StringResultNode srn((static_cast<const StringAttribute *>(an.getAttribute()))->getFromEnum(er.getEnum())); group.setId(srn); diff --git a/searchlib/src/vespa/searchlib/aggregation/groupinglevel.h b/searchlib/src/vespa/searchlib/aggregation/groupinglevel.h index 03528965b90..e14be23b889 100644 --- a/searchlib/src/vespa/searchlib/aggregation/groupinglevel.h +++ b/searchlib/src/vespa/searchlib/aggregation/groupinglevel.h @@ -104,7 +104,6 @@ public: bool isFrozen() const { return _frozen; } bool allowMoreGroups(size_t sz) const { return (!_frozen && (!_isOrdered || (sz < (uint64_t)_precision))); } const ExpressionTree & getExpression() const { return _classify; } - ExpressionTree & getExpression() { return _classify; } const Group &getGroupPrototype() const { return _collect; } void prepare(const Grouping * grouping, uint32_t level, bool isOrdered_); diff --git a/searchlib/src/vespa/searchlib/expression/expressionnode.h b/searchlib/src/vespa/searchlib/expression/expressionnode.h index f29630b9fd6..d22601326ca 100644 --- a/searchlib/src/vespa/searchlib/expression/expressionnode.h +++ b/searchlib/src/vespa/searchlib/expression/expressionnode.h @@ -39,6 +39,7 @@ public: DECLARE_ABSTRACT_EXPRESSIONNODE(ExpressionNode); typedef std::unique_ptr<ExpressionNode> UP; typedef vespalib::IdentifiablePtr<ExpressionNode> CP; + typedef vespalib::IdentifiableLinkedPtr<ExpressionNode> LP; virtual const ResultNode & getResult() const = 0; bool execute() const { return onExecute(); } ExpressionNode & prepare(bool preserveAccurateTypes) { onPrepare(preserveAccurateTypes); return *this; } diff --git a/searchlib/src/vespa/searchlib/expression/expressiontree.cpp b/searchlib/src/vespa/searchlib/expression/expressiontree.cpp index ad6090ab53d..ad006005b7f 100644 --- a/searchlib/src/vespa/searchlib/expression/expressiontree.cpp +++ b/searchlib/src/vespa/searchlib/expression/expressiontree.cpp @@ -18,7 +18,7 @@ IMPLEMENT_EXPRESSIONNODE(ExpressionTree, ExpressionNode); void ExpressionTree::Configure::execute(vespalib::Identifiable &obj) { ExpressionTree & e(static_cast<ExpressionTree &>(obj)); - if (e.getRoot()) { + if (e.getRoot().get()) { e.getRoot()->prepare(false); } e.prepare(false); @@ -53,8 +53,8 @@ class Gather : public vespalib::ObjectOperation, public vespalib::ObjectPredicat public: Gather(std::vector<NODE *> &list) : _list(list) { _list.clear(); } - void from(ExpressionNode & root) { - root.select(*this, *this); + void from(ExpressionNode::LP &root) { + root->select(*this, *this); } private: virtual void execute(vespalib::Identifiable &obj) { @@ -76,11 +76,11 @@ void ExpressionTree::onPrepare(bool preserveAccurateTypes) { (void) preserveAccurateTypes; if (_root.get() != NULL) { - gather(_attributeNodes).from(*_root); - gather(_documentAccessorNodes).from(*_root); - gather(_relevanceNodes).from(*_root); - gather(_interpolatedLookupNodes).from(*_root); - gather(_arrayAtLookupNodes).from(*_root); + gather(_attributeNodes).from(_root); + gather(_documentAccessorNodes).from(_root); + gather(_relevanceNodes).from(_root); + gather(_interpolatedLookupNodes).from(_root); + gather(_arrayAtLookupNodes).from(_root); } } diff --git a/searchlib/src/vespa/searchlib/expression/expressiontree.h b/searchlib/src/vespa/searchlib/expression/expressiontree.h index 2a920d421c2..f768ae64eff 100644 --- a/searchlib/src/vespa/searchlib/expression/expressiontree.h +++ b/searchlib/src/vespa/searchlib/expression/expressiontree.h @@ -50,8 +50,7 @@ public: ExpressionTree & operator = (const ExpressionTree & rhs); bool execute(DocId docId, HitRank rank) const; bool execute(const document::Document & doc, HitRank rank) const; - const ExpressionNode * getRoot() const { return _root.get(); } - ExpressionNode * getRoot() { return _root.get(); } + const ExpressionNode::LP & getRoot() const { return _root; } virtual const ResultNode & getResult() const { return _root->getResult(); } friend vespalib::Serializer & operator << (vespalib::Serializer & os, const ExpressionTree & et); friend vespalib::Deserializer & operator >> (vespalib::Deserializer & is, ExpressionTree & et); @@ -68,7 +67,7 @@ private: typedef std::vector<InterpolatedLookup *> InterpolatedLookupList; typedef std::vector<ArrayAtLookup *> ArrayAtLookupList; - vespalib::IdentifiableLinkedPtr<ExpressionNode> _root; + ExpressionNode::LP _root; AttributeNodeList _attributeNodes; DocumentAccessorNodeList _documentAccessorNodes; RelevanceNodeList _relevanceNodes; diff --git a/staging_vespalib/src/vespa/vespalib/objects/identifiable.hpp b/staging_vespalib/src/vespa/vespalib/objects/identifiable.hpp index 283f2ca038e..617d631328b 100644 --- a/staging_vespalib/src/vespa/vespalib/objects/identifiable.hpp +++ b/staging_vespalib/src/vespa/vespalib/objects/identifiable.hpp @@ -73,8 +73,6 @@ public: is.get(Identifiable::hasObjectField, hasObject); if (hasObject) { this->reset(static_cast<T *>(Identifiable::create(is).release())); - } else { - this->reset(); } return is; } @@ -112,8 +110,6 @@ public: is.get(Identifiable::hasObjectField, hasObject); if (hasObject) { reset(static_cast<T *>(Identifiable::create(is).release())); - } else { - this->reset(); } return is; } @@ -151,8 +147,6 @@ public: is.get(Identifiable::hasObjectField, hasObject); if (hasObject) { this->reset(static_cast<T *>(Identifiable::create(is).release())); - } else { - this->reset(); } return is; } |