#pragma once #include #include #include #include namespace mbgl { namespace style { namespace expression { template class Match : public Expression { public: using Branches = std::unordered_map>; Match(type::Type type_, std::unique_ptr input_, Branches branches_, std::unique_ptr otherwise_ ) : Expression(type_), input(std::move(input_)), branches(std::move(branches_)), otherwise(std::move(otherwise_)) {} void eachChild(const std::function& visit) const override; bool operator==(const Expression& e) const override; EvaluationResult evaluate(const EvaluationContext& params) const override; private: std::unique_ptr input; Branches branches; std::unique_ptr otherwise; }; ParseResult parseMatch(const mbgl::style::conversion::Convertible& value, ParsingContext& ctx); } // namespace expression } // namespace style } // namespace mbgl