22 return lhs.value == rhs.value;
34 : value(
std::move(constant)) {}
37 : value(
std::move(expression)) {}
40 return value.template is<Undefined>();
44 return value.template is<T>();
48 return value.template is<PropertyExpression<T>>();
54 [] (
const T&) {
return false; },
62 [] (
const T&) {
return true; },
68 return value.template get<T>();
72 return value.template get<PropertyExpression<T>>();
75 template <
class... Ts>
77 return value.match(std::forward<Ts>(ts)...);
80 template <
typename Evaluator>
82 return Value::visit(value, evaluator);
bool isExpression() const
const T & asConstant() const
bool isDataDriven() const
bool isZoomConstant() const
auto match(Ts &&... ts) const
friend bool operator==(const PropertyValue &lhs, const PropertyValue &rhs)
bool hasDataDrivenPropertyDifference(const PropertyValue< T > &other) const
PropertyValue(PropertyExpression< T > expression)
friend bool operator!=(const PropertyValue &lhs, const PropertyValue &rhs)
PropertyValue(T constant)
const PropertyExpression< T > & asExpression() const
auto evaluate(const Evaluator &evaluator, TimePoint={}) const
Clock::time_point TimePoint
mapbox::util::variant< T... > variant