aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnstein Ressem <aressem@gmail.com>2017-03-21 19:53:40 +0100
committerGitHub <noreply@github.com>2017-03-21 19:53:40 +0100
commit98dbd312e170ce25eb3206c2a348f7aa799b42f7 (patch)
tree0ac01beb58b53c0b1630a2415805361d9f676c37
parente36267c66428e0327371a6970fb71ad0a5a1e877 (diff)
Revert "Change interface to accomodate removing linkedptr later on."
-rw-r--r--searchcore/src/vespa/searchcore/grouping/groupingmanager.cpp6
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/aggregationresult.h4
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/grouping.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/groupinglevel.h1
-rw-r--r--searchlib/src/vespa/searchlib/expression/expressionnode.h1
-rw-r--r--searchlib/src/vespa/searchlib/expression/expressiontree.cpp16
-rw-r--r--searchlib/src/vespa/searchlib/expression/expressiontree.h5
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/identifiable.hpp6
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;
}