[core] Move non-polymorphic Interpolate methods to base

This commit is contained in:
John Firebaugh
2018-06-28 07:47:28 -07:00
parent bc771ee02e
commit b2f6acca61
2 changed files with 17 additions and 19 deletions

View File

@@ -55,7 +55,23 @@ public:
);
}
bool operator==(const Expression& e) const override {
if (auto rhs = dynamic_cast<const InterpolateBase*>(&e)) {
if (interpolator != rhs->interpolator ||
*input != *(rhs->input) ||
stops.size() != rhs->stops.size())
{
return false;
}
return Expression::childrenEqual(stops, rhs->stops);
}
return false;
}
std::vector<optional<Value>> possibleOutputs() const override;
mbgl::Value serialize() const override;
std::string getOperator() const override { return "interpolate"; }
protected:
const Interpolator interpolator;
@@ -130,23 +146,6 @@ public:
return util::interpolate(lower->get<T>(), upper->get<T>(), t);
}
}
bool operator==(const Expression& e) const override {
if (auto rhs = dynamic_cast<const Interpolate*>(&e)) {
if (interpolator != rhs->interpolator ||
*input != *(rhs->input) ||
stops.size() != rhs->stops.size())
{
return false;
}
return Expression::childrenEqual(stops, rhs->stops);
}
return false;
}
mbgl::Value serialize() const override;
std::string getOperator() const override { return "interpolate"; }
};
} // namespace expression

View File

@@ -189,8 +189,7 @@ std::vector<optional<Value>> InterpolateBase::possibleOutputs() const {
return result;
}
template <typename T>
mbgl::Value Interpolate<T>::serialize() const {
mbgl::Value InterpolateBase::serialize() const {
std::vector<mbgl::Value> serialized;
serialized.emplace_back(getOperator());