16 namespace expression {
24 std::unique_ptr<Expression> input_,
25 std::map<
double, std::unique_ptr<Expression>> stops_);
32 for (
const auto& stop :
stops) {
38 for (
const auto& stop :
stops) {
39 visit(stop.first, *stop.second);
50 [&](
const auto& interp) {
return interp.interpolationFactor(inputLevels, inputValue); }
58 *
input != *(rhs->input) ||
59 stops.size() != rhs->stops.size())
75 const std::unique_ptr<Expression>
input;
76 const std::map<double, std::unique_ptr<Expression>>
stops;
81 std::unique_ptr<Expression> input,
82 std::map<
double, std::unique_ptr<Expression>> stops,
static bool childrenEqual(const T &lhs, const T &rhs)
const std::map< double, std::unique_ptr< Expression > > stops
std::string getOperator() const override
Interpolate(const type::Type &type_, Interpolator interpolator_, std::unique_ptr< Expression > input_, std::map< double, std::unique_ptr< Expression >> stops_)
const Interpolator & getInterpolator() const
void eachChild(const std::function< void(const Expression &)> &visit) const override
const std::unique_ptr< Expression > input
mbgl::Value serialize() const override
Range< float > getCoveringStops(const double lower, const double upper) const
const std::unique_ptr< Expression > & getInput() const
double interpolationFactor(const Range< double > &inputLevels, const double inputValue) const
void eachStop(const std::function< void(double, const Expression &)> &visit) const
bool operator==(const Expression &e) const override
std::vector< std::optional< Value > > possibleOutputs() const override
const Interpolator interpolator
std::unique_ptr< Expression > string(std::unique_ptr< Expression >, std::unique_ptr< Expression > def=nullptr)
variant< NullType, NumberType, BooleanType, StringType, ColorType, ObjectType, ValueType, mapbox::util::recursive_wrapper< Array >, CollatorType, FormattedType, ErrorType, ImageType > Type
variant< ExponentialInterpolator, CubicBezierInterpolator > Interpolator
Range< float > getCoveringStops(const std::map< double, std::unique_ptr< Expression >> &stops, double lower, double upper)
Return the smallest range of stops that covers the interval [lower, upper].
std::optional< std::unique_ptr< Expression > > ParseResult
ParseResult createInterpolate(type::Type type, Interpolator interpolator, std::unique_ptr< Expression > input, std::map< double, std::unique_ptr< Expression >> stops, ParsingContext &ctx)
ParseResult parseInterpolate(const mbgl::style::conversion::Convertible &value, ParsingContext &ctx)
mapbox::base::Value Value