diff options
Diffstat (limited to 'include/mbgl/style/function.hpp')
-rw-r--r-- | include/mbgl/style/function.hpp | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/include/mbgl/style/function.hpp b/include/mbgl/style/function.hpp index 97e880b280..b023229e4f 100644 --- a/include/mbgl/style/function.hpp +++ b/include/mbgl/style/function.hpp @@ -1,7 +1,8 @@ #pragma once -#include <vector> +#include <cassert> #include <utility> +#include <vector> namespace mbgl { namespace style { @@ -12,28 +13,28 @@ public: using Stop = std::pair<float, T>; using Stops = std::vector<Stop>; - explicit Function(Stops stops_, float base_) - : base(base_), stops(std::move(stops_)) {} + Function(Stops stops_, float base_) + : base(base_), stops(std::move(stops_)) { + assert(stops.size() > 0); + } float getBase() const { return base; } const std::vector<std::pair<float, T>>& getStops() const { return stops; } + T evaluate(float z) const; + + friend bool operator==(const Function& lhs, const Function& rhs) { + return lhs.base == rhs.base && lhs.stops == rhs.stops; + } + + friend bool operator!=(const Function& lhs, const Function& rhs) { + return !(lhs == rhs); + } + private: float base = 1; std::vector<std::pair<float, T>> stops; - - template <class S> friend bool operator==(const Function<S>&, const Function<S>&); }; -template <class T> -bool operator==(const Function<T>& lhs, const Function<T>& rhs) { - return lhs.base == rhs.base && lhs.stops == rhs.stops; -} - -template <class T> -bool operator!=(const Function<T>& lhs, const Function<T>& rhs) { - return !(lhs == rhs); -} - } // namespace style } // namespace mbgl |