MapLibre Native Core
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
comparison.hpp
Go to the documentation of this file.
1 #pragma once
2 
7 
8 #include <memory>
9 
10 namespace mbgl {
11 namespace style {
12 namespace expression {
13 
15 
16 class BasicComparison : public Expression {
17 public:
18  using CompareFunctionType = bool (*)(const Value&, const Value&);
19 
21  std::string op,
22  std::unique_ptr<Expression> lhs,
23  std::unique_ptr<Expression> rhs);
24 
25  void eachChild(const std::function<void(const Expression&)>& visit) const override;
26  bool operator==(const Expression&) const override;
28  std::vector<std::optional<Value>> possibleOutputs() const override;
29  std::string getOperator() const override;
30 
31 private:
32  std::string op;
33  CompareFunctionType compare;
34  std::unique_ptr<Expression> lhs;
35  std::unique_ptr<Expression> rhs;
36  bool needsRuntimeTypeCheck;
37 };
38 
40 public:
41  using CompareFunctionType = bool (*)(const std::string&, const std::string&, const Collator&);
42 
44  std::string op,
45  std::unique_ptr<Expression> lhs,
46  std::unique_ptr<Expression> rhs,
47  std::unique_ptr<Expression> collator);
48 
49  void eachChild(const std::function<void(const Expression&)>& visit) const override;
50  bool operator==(const Expression&) const override;
52  std::vector<std::optional<Value>> possibleOutputs() const override;
53  std::string getOperator() const override;
54 
55 private:
56  std::string op;
57  CompareFunctionType compare;
58  std::unique_ptr<Expression> lhs;
59  std::unique_ptr<Expression> rhs;
60  std::unique_ptr<Expression> collator;
61  bool needsRuntimeTypeCheck;
62 };
63 
64 
65 
66 } // namespace expression
67 } // namespace style
68 } // namespace mbgl
BasicComparison(std::string op, std::unique_ptr< Expression > lhs, std::unique_ptr< Expression > rhs)
void eachChild(const std::function< void(const Expression &)> &visit) const override
bool operator==(const Expression &) const override
std::string getOperator() const override
std::vector< std::optional< Value > > possibleOutputs() const override
EvaluationResult evaluate(const EvaluationContext &) const override
bool(*)(const Value &, const Value &) CompareFunctionType
Definition: comparison.hpp:18
CollatorComparison(std::string op, std::unique_ptr< Expression > lhs, std::unique_ptr< Expression > rhs, std::unique_ptr< Expression > collator)
std::string getOperator() const override
bool(*)(const std::string &, const std::string &, const Collator &) CompareFunctionType
Definition: comparison.hpp:41
void eachChild(const std::function< void(const Expression &)> &visit) const override
std::vector< std::optional< Value > > possibleOutputs() const override
bool operator==(const Expression &) const override
EvaluationResult evaluate(const EvaluationContext &) const override
std::unique_ptr< Expression > string(std::unique_ptr< Expression >, std::unique_ptr< Expression > def=nullptr)
ParseResult parseComparison(const mbgl::style::conversion::Convertible &, ParsingContext &)
std::optional< std::unique_ptr< Expression > > ParseResult
Definition: actor.hpp:15