#include #include #include #include namespace mbgl { namespace style { optional categoricalValue(const Value& value) { return value.match( [] (bool t) { return optional(t); }, [] (uint64_t t) { return optional(int64_t(t)); }, [] (int64_t t) { return optional(t); }, [] (double t) { return optional(int64_t(t)); }, [] (const std::string& t) { return optional(t); }, [] (const auto&) { return optional(); } ); } template optional CategoricalStops::evaluate(const Value& value) const { auto v = categoricalValue(value); if (!v) { return {}; } auto it = stops.find(*v); return it == stops.end() ? optional() : it->second; } template class CategoricalStops; template class CategoricalStops; template class CategoricalStops>; template class CategoricalStops; template class CategoricalStops; template class CategoricalStops; template class CategoricalStops; template class CategoricalStops; } // namespace style } // namespace mbgl