#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