#include #include mbgl::Value mbgl::parseValue(pbf data) { while (data.next()) { switch (data.tag) { case 1: // string_value return data.string(); case 2: // float_value return static_cast(data.float32()); case 3: // double_value return data.float64(); case 4: // int_value return data.varint(); case 5: // uint_value return data.varint(); case 6: // sint_value return data.svarint(); case 7: // bool_value return data.boolean(); default: data.skip(); break; } } return false; } std::string mbgl::toString(const mbgl::Value& value) { if (value.is()) return value.get(); else if (value.is()) return value.get() ? "true" : "false"; else if (value.is()) return util::toString(value.get()); else if (value.is()) return util::toString(value.get()); else if (value.is()) return util::toString(value.get()); else return "null"; } mbgl::Value mbgl::parseValue(const rapidjson::Value& value) { switch (value.GetType()) { case rapidjson::kNullType: case rapidjson::kFalseType: return false; case rapidjson::kTrueType: return true; case rapidjson::kStringType: return std::string { value.GetString(), value.GetStringLength() }; case rapidjson::kNumberType: if (value.IsUint64()) return value.GetUint64(); if (value.IsInt64()) return value.GetInt64(); return value.GetDouble(); default: return false; } }