#ifndef MBGL_STYLE_FUNCTION_PROPERTIES #define MBGL_STYLE_FUNCTION_PROPERTIES #include #include namespace mbgl { template struct ConstantFunction { inline ConstantFunction(const T &value_) : value(value_) {} inline T evaluate(float) const { return value; } private: const T value; }; template struct StopsFunction { inline StopsFunction(const std::vector> &values_, float base_) : values(values_), base(base_) {} T evaluate(float z) const; private: const std::vector> values; const float base; }; template using Function = mapbox::util::variant< std::false_type, ConstantFunction, StopsFunction >; template struct FunctionEvaluator { typedef T result_type; inline FunctionEvaluator(float z_) : z(z_) {} inline result_type operator()(const std::false_type &) { return result_type(); } template