#pragma once #include #include #include #include #include namespace mbgl { namespace style { class CategoricalValue : public variant { public: using variant::variant; }; template class CategoricalStops { public: using Stops = std::map; Stops stops; T defaultValue; CategoricalStops() = default; CategoricalStops(Stops stops_, T defaultValue_ = T()) : stops(std::move(stops_)), defaultValue(std::move(defaultValue_)) { assert(stops.size() > 0); } T evaluate(const Value&) const; friend bool operator==(const CategoricalStops& lhs, const CategoricalStops& rhs) { return lhs.stops == rhs.stops && lhs.defaultValue == rhs.defaultValue; } }; } // namespace style } // namespace mbgl