1#pragma once
2
3#include <mbgl/style/expression/expression.hpp>
4#include <mbgl/style/conversion.hpp>
5#include <memory>
6
7namespace mbgl {
8namespace style {
9namespace expression {
10
11class At : public Expression {
12public:
13 At(std::unique_ptr<Expression> index_, std::unique_ptr<Expression> input_) :
14 Expression(Kind::At, input_->getType().get<type::Array>().itemType),
15 index(std::move(index_)),
16 input(std::move(input_))
17 {}
18
19 static ParseResult parse(const mbgl::style::conversion::Convertible& value, ParsingContext& ctx);
20
21 EvaluationResult evaluate(const EvaluationContext& params) const override;
22 void eachChild(const std::function<void(const Expression&)>&) const override;
23
24 bool operator==(const Expression& e) const override {
25 if (e.getKind() == Kind::At) {
26 auto rhs = static_cast<const At*>(&e);
27 return *index == *(rhs->index) && *input == *(rhs->input);
28 }
29 return false;
30 }
31
32 std::vector<optional<Value>> possibleOutputs() const override {
33 return { nullopt };
34 }
35
36 std::string getOperator() const override { return "at"; }
37
38private:
39 std::unique_ptr<Expression> index;
40 std::unique_ptr<Expression> input;
41};
42
43} // namespace expression
44} // namespace style
45} // namespace mbgl
46

source code of qtlocation/src/3rdparty/mapbox-gl-native/include/mbgl/style/expression/at.hpp