#pragma once #include #include #include #include namespace mbgl { namespace style { namespace expression { class Literal : public Expression { public: Literal(const Value& value_) : Expression(Kind::Literal, typeOf(value_)), value(value_) {} Literal(const type::Array& type_, std::vector value_) : Expression(Kind::Literal, type_), value(value_) {} EvaluationResult evaluate(const EvaluationContext&) const override { return value; } static ParseResult parse(const mbgl::style::conversion::Convertible&, ParsingContext&); void eachChild(const std::function&) const override {} bool operator==(const Expression& e) const override { if (e.getKind() == Kind::Literal) { auto rhs = static_cast(&e); return value == rhs->value; } return false; } std::vector> possibleOutputs() const override { return {{ value }}; } Value getValue() const { return value; } mbgl::Value serialize() const override; std::string getOperator() const override { return "literal"; } private: Value value; }; } // namespace expression } // namespace style } // namespace mbgl