inline optional<std::string> toString(const mbgl::android::Value& value) { if (value.isString()) { return value.toString(); } else { return {}; } }
inline optional<bool> toBool(const mbgl::android::Value& value) { if (value.isBool()) { return value.toBool(); } else { return {}; } }
inline optional<float> toNumber(const mbgl::android::Value& value) { if (value.isNumber()) { return value.toNumber(); } else { return {}; } }
optional<std::array<LatLng, 4>> Converter<std::array<LatLng, 4>>::operator()(const mbgl::android::Value& value, Error& error) const { if (value.isNull() || !value.isArray()) { error = { "value cannot be converted to LatLng array" }; return {}; } return convert<GeoJSON>(value.toString(), error); }
inline optional<mbgl::android::Value> objectMember(const mbgl::android::Value& value, const char* key) { mbgl::android::Value member = value.get(key); if (!member.isNull()) { return member; } else { return {}; } }
inline optional<Value> toValue(const mbgl::android::Value& value) { if (value.isNull()) { return {}; } else if (value.isBool()) { return { value.toBool() }; } else if (value.isString()) { return { value.toString() }; } else if (value.isNumber()) { //Need to cast to a double here as the float is otherwise considered a bool... return { (double) value.toNumber() }; } else { return {}; } }
inline optional<Value> toValue(const mbgl::android::Value& value) { if (value.isBool()) { return { value.toBool() }; } else if (value.isString()) { return { value.toString() }; } else if (value.isNumber()) { return { value.toNumber() }; } else { return {}; } }
inline mbgl::android::Value arrayMember(const mbgl::android::Value& value, std::size_t i) { return value.get(i); }
inline std::size_t arrayLength(const mbgl::android::Value& value) { return value.getLength();; }
inline bool isObject(const mbgl::android::Value& value) { return value.isObject(); }
inline bool isArray(const mbgl::android::Value& value) { return value.isArray(); }
inline bool isUndefined(const mbgl::android::Value& value) { return value.isNull(); }