diff options
author | Thiago Marcos P. Santos <tmpsantos@gmail.com> | 2017-11-10 19:18:39 -0200 |
---|---|---|
committer | Thiago Marcos P. Santos <tmpsantos@gmail.com> | 2017-11-12 13:41:08 -0200 |
commit | 1adc585c61e1e42f28c7944816010446091fa161 (patch) | |
tree | afbab98a080dcea67851e5bfb43f78d7776be423 /include/mbgl/style/expression/match.hpp | |
parent | a2120304a881507ed60c3199925946c1df06b44c (diff) | |
download | qtlocation-mapboxgl-1adc585c61e1e42f28c7944816010446091fa161.tar.gz |
Bump Mapbox GL Native
mapbox-gl-native @ 92608f58858d77c17a65ae9b29758e74bb2da7d2
Diffstat (limited to 'include/mbgl/style/expression/match.hpp')
-rw-r--r-- | include/mbgl/style/expression/match.hpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/include/mbgl/style/expression/match.hpp b/include/mbgl/style/expression/match.hpp new file mode 100644 index 0000000000..e17fe96bfe --- /dev/null +++ b/include/mbgl/style/expression/match.hpp @@ -0,0 +1,45 @@ +#pragma once + +#include <mbgl/style/expression/expression.hpp> +#include <mbgl/style/expression/parsing_context.hpp> +#include <mbgl/style/conversion.hpp> + +#include <memory> + +namespace mbgl { +namespace style { +namespace expression { + +template <typename T> +class Match : public Expression { +public: + using Branches = std::unordered_map<T, std::shared_ptr<Expression>>; + + Match(type::Type type_, + std::unique_ptr<Expression> input_, + Branches branches_, + std::unique_ptr<Expression> otherwise_ + ) : Expression(type_), + input(std::move(input_)), + branches(std::move(branches_)), + otherwise(std::move(otherwise_)) + {} + + void eachChild(const std::function<void(const Expression&)>& visit) const override; + + bool operator==(const Expression& e) const override; + + EvaluationResult evaluate(const EvaluationContext& params) const override; + +private: + + std::unique_ptr<Expression> input; + Branches branches; + std::unique_ptr<Expression> otherwise; +}; + +ParseResult parseMatch(const mbgl::style::conversion::Convertible& value, ParsingContext& ctx); + +} // namespace expression +} // namespace style +} // namespace mbgl |