1 #pragma once
2 
3 #include <mbgl/util/optional.hpp>
4 
5 #include <mapbox/geometry/feature.hpp>
6 
7 namespace mbgl {
8 
9 using Value = mapbox::geometry::value;
10 using NullValue = mapbox::geometry::null_value_t;
11 using PropertyMap = mapbox::geometry::property_map;
12 using FeatureIdentifier = mapbox::geometry::identifier;
13 using Feature = mapbox::geometry::feature<double>;
14 
15 template <class T>
numericValue(const Value & value)16 optional<T> numericValue(const Value& value) {
17     return value.match(
18         [] (uint64_t t) {
19             return optional<T>(t);
20         },
21         [] (int64_t t) {
22             return optional<T>(t);
23         },
24         [] (double t) {
25             return optional<T>(t);
26         },
27         [] (auto) {
28             return optional<T>();
29         });
30 }
31 
32 } // namespace mbgl
33