Use std::variant instead of mapbox::util::variant (#6903)
This commit is contained in:
committed by
GitHub
parent
01b1673c8a
commit
c1ed73126d
@@ -86,7 +86,7 @@ json::Object load(const char *filename)
|
||||
|
||||
json::Value result;
|
||||
convert(document, result);
|
||||
return result.get<json::Object>();
|
||||
return std::get<json::Object>(result);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -232,9 +232,9 @@ try
|
||||
{
|
||||
engine::api::ResultT result = json::Object();
|
||||
const auto rc = osrm.Match(params, result);
|
||||
auto &json_result = result.get<json::Object>();
|
||||
auto &json_result = std::get<json::Object>(result);
|
||||
if (rc != Status::Ok ||
|
||||
json_result.values.at("matchings").get<json::Array>().values.size() != 1)
|
||||
std::get<json::Array>(json_result.values.at("matchings")).values.size() != 1)
|
||||
{
|
||||
throw std::runtime_error{"Couldn't match"};
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ try
|
||||
{
|
||||
engine::api::ResultT result = json::Object();
|
||||
const auto rc = osrm.Route(params, result);
|
||||
auto &json_result = result.get<json::Object>();
|
||||
auto &json_result = std::get<json::Object>(result);
|
||||
if (rc != Status::Ok || json_result.values.find("routes") == json_result.values.end())
|
||||
{
|
||||
throw std::runtime_error{"Couldn't route"};
|
||||
|
||||
@@ -74,12 +74,12 @@ std::string waypointTypeToString(const guidance::WaypointType waypoint_type)
|
||||
return waypoint_type_names[static_cast<std::size_t>(waypoint_type)];
|
||||
}
|
||||
|
||||
util::json::Array coordinateToLonLat(const util::Coordinate &coordinate)
|
||||
util::json::Value coordinateToLonLat(const util::Coordinate &coordinate)
|
||||
{
|
||||
util::json::Array array;
|
||||
array.values.push_back(static_cast<double>(util::toFloating(coordinate.lon)));
|
||||
array.values.push_back(static_cast<double>(util::toFloating(coordinate.lat)));
|
||||
return array;
|
||||
return util::json::Value{std::move(array)};
|
||||
}
|
||||
|
||||
} // namespace detail
|
||||
|
||||
@@ -663,7 +663,7 @@ Status TilePlugin::HandleRequest(const RoutingAlgorithmsInterface &algorithms,
|
||||
{
|
||||
BOOST_ASSERT(parameters.IsValid());
|
||||
|
||||
auto &pbf_buffer = result.get<std::string>();
|
||||
auto &pbf_buffer = std::get<std::string>(result);
|
||||
const auto &facade = algorithms.GetFacade();
|
||||
auto edges = getEdges(facade, parameters.x, parameters.y, parameters.z);
|
||||
auto segregated_nodes = getSegregatedNodes(facade, edges);
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
#include "engine/routing_algorithms/routing_base_mld.hpp"
|
||||
|
||||
namespace osrm::engine::routing_algorithms::mld
|
||||
{
|
||||
double getNetworkDistance(SearchEngineData<mld::Algorithm> &engine_working_data,
|
||||
const DataFacade<mld::Algorithm> &facade,
|
||||
typename SearchEngineData<mld::Algorithm>::QueryHeap &forward_heap,
|
||||
typename SearchEngineData<mld::Algorithm>::QueryHeap &reverse_heap,
|
||||
const PhantomNode &source_phantom,
|
||||
const PhantomNode &target_phantom,
|
||||
EdgeWeight weight_upper_bound)
|
||||
{
|
||||
forward_heap.Clear();
|
||||
reverse_heap.Clear();
|
||||
|
||||
const PhantomEndpoints endpoints{source_phantom, target_phantom};
|
||||
insertNodesInHeaps(forward_heap, reverse_heap, endpoints);
|
||||
|
||||
auto [weight, unpacked_nodes, unpacked_edges] = search(
|
||||
engine_working_data, facade, forward_heap, reverse_heap, {}, weight_upper_bound, endpoints);
|
||||
|
||||
if (weight == INVALID_EDGE_WEIGHT)
|
||||
{
|
||||
return std::numeric_limits<double>::max();
|
||||
}
|
||||
|
||||
BOOST_ASSERT(unpacked_nodes.size() >= 1);
|
||||
|
||||
EdgeDistance distance = {0.0};
|
||||
|
||||
if (source_phantom.forward_segment_id.id == unpacked_nodes.front())
|
||||
{
|
||||
BOOST_ASSERT(source_phantom.forward_segment_id.enabled);
|
||||
distance = EdgeDistance{0} - source_phantom.GetForwardDistance();
|
||||
}
|
||||
else if (source_phantom.reverse_segment_id.id == unpacked_nodes.front())
|
||||
{
|
||||
BOOST_ASSERT(source_phantom.reverse_segment_id.enabled);
|
||||
distance = EdgeDistance{0} - source_phantom.GetReverseDistance();
|
||||
}
|
||||
|
||||
for (size_t index = 0; index < unpacked_nodes.size() - 1; ++index)
|
||||
{
|
||||
distance += facade.GetNodeDistance(unpacked_nodes[index]);
|
||||
}
|
||||
|
||||
if (target_phantom.forward_segment_id.id == unpacked_nodes.back())
|
||||
{
|
||||
BOOST_ASSERT(target_phantom.forward_segment_id.enabled);
|
||||
distance += target_phantom.GetForwardDistance();
|
||||
}
|
||||
else if (target_phantom.reverse_segment_id.id == unpacked_nodes.back())
|
||||
{
|
||||
BOOST_ASSERT(target_phantom.reverse_segment_id.enabled);
|
||||
distance += target_phantom.GetReverseDistance();
|
||||
}
|
||||
|
||||
return from_alias<double>(distance);
|
||||
}
|
||||
} // namespace osrm::engine::routing_algorithms::mld
|
||||
@@ -147,7 +147,7 @@ inline void async(const Napi::CallbackInfo &info,
|
||||
osrm::engine::api::ResultT r;
|
||||
r = osrm::util::json::Object();
|
||||
const auto status = ((*osrm).*(service))(*params, r);
|
||||
auto &json_result = r.get<osrm::json::Object>();
|
||||
auto &json_result = std::get<osrm::json::Object>(r);
|
||||
ParseResult(status, json_result);
|
||||
if (pluginParams.renderToBuffer)
|
||||
{
|
||||
@@ -165,7 +165,7 @@ inline void async(const Napi::CallbackInfo &info,
|
||||
{
|
||||
osrm::engine::api::ResultT r = flatbuffers::FlatBufferBuilder();
|
||||
const auto status = ((*osrm).*(service))(*params, r);
|
||||
const auto &fbs_result = r.get<flatbuffers::FlatBufferBuilder>();
|
||||
const auto &fbs_result = std::get<flatbuffers::FlatBufferBuilder>(r);
|
||||
ParseResult(status, fbs_result);
|
||||
BOOST_ASSERT(pluginParams.renderToBuffer);
|
||||
std::string result_str(
|
||||
@@ -240,7 +240,7 @@ inline void asyncForTiles(const Napi::CallbackInfo &info,
|
||||
{
|
||||
result = std::string();
|
||||
const auto status = ((*osrm).*(service))(*params, result);
|
||||
auto str_result = result.get<std::string>();
|
||||
auto str_result = std::get<std::string>(result);
|
||||
ParseResult(status, str_result);
|
||||
}
|
||||
catch (const std::exception &e)
|
||||
@@ -252,7 +252,7 @@ inline void asyncForTiles(const Napi::CallbackInfo &info,
|
||||
{
|
||||
Napi::HandleScope scope{Env()};
|
||||
|
||||
Callback().Call({Env().Null(), render(Env(), result.get<std::string>())});
|
||||
Callback().Call({Env().Null(), render(Env(), std::get<std::string>(result))});
|
||||
}
|
||||
|
||||
// Keeps the OSRM object alive even after shutdown until we're done with callback
|
||||
|
||||
+6
-6
@@ -65,7 +65,7 @@ Status OSRM::Route(const engine::api::RouteParameters ¶ms, json::Object &jso
|
||||
{
|
||||
osrm::engine::api::ResultT result = json::Object();
|
||||
auto status = engine_->Route(params, result);
|
||||
json_result = std::move(result.get<json::Object>());
|
||||
json_result = std::move(std::get<json::Object>(result));
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ Status OSRM::Table(const engine::api::TableParameters ¶ms, json::Object &jso
|
||||
{
|
||||
osrm::engine::api::ResultT result = json::Object();
|
||||
auto status = engine_->Table(params, result);
|
||||
json_result = std::move(result.get<json::Object>());
|
||||
json_result = std::move(std::get<json::Object>(result));
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ Status OSRM::Nearest(const engine::api::NearestParameters ¶ms, json::Object
|
||||
{
|
||||
osrm::engine::api::ResultT result = json::Object();
|
||||
auto status = engine_->Nearest(params, result);
|
||||
json_result = std::move(result.get<json::Object>());
|
||||
json_result = std::move(std::get<json::Object>(result));
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -104,7 +104,7 @@ Status OSRM::Trip(const engine::api::TripParameters ¶ms, json::Object &json_
|
||||
{
|
||||
osrm::engine::api::ResultT result = json::Object();
|
||||
auto status = engine_->Trip(params, result);
|
||||
json_result = std::move(result.get<json::Object>());
|
||||
json_result = std::move(std::get<json::Object>(result));
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -118,7 +118,7 @@ Status OSRM::Match(const engine::api::MatchParameters ¶ms, json::Object &jso
|
||||
{
|
||||
osrm::engine::api::ResultT result = json::Object();
|
||||
auto status = engine_->Match(params, result);
|
||||
json_result = std::move(result.get<json::Object>());
|
||||
json_result = std::move(std::get<json::Object>(result));
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -131,7 +131,7 @@ Status OSRM::Tile(const engine::api::TileParameters ¶ms, std::string &str_re
|
||||
{
|
||||
osrm::engine::api::ResultT result = std::string();
|
||||
auto status = engine_->Tile(params, result);
|
||||
str_result = std::move(result.get<std::string>());
|
||||
str_result = std::move(std::get<std::string>(result));
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
|
||||
#include "util/coordinate.hpp"
|
||||
#include "util/geojson_debug_logger.hpp"
|
||||
#include "util/geojson_debug_policies.hpp"
|
||||
#include "util/integer_range.hpp"
|
||||
#include "util/json_container.hpp"
|
||||
#include "util/log.hpp"
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <algorithm>
|
||||
#include <string>
|
||||
#include <thread>
|
||||
#include <variant>
|
||||
|
||||
namespace osrm::server
|
||||
{
|
||||
@@ -38,17 +39,17 @@ void SendResponse(ServiceHandler::ResultT &result, http::reply ¤t_reply)
|
||||
current_reply.headers.emplace_back("Access-Control-Allow-Methods", "GET");
|
||||
current_reply.headers.emplace_back("Access-Control-Allow-Headers",
|
||||
"X-Requested-With, Content-Type");
|
||||
if (result.is<util::json::Object>())
|
||||
if (std::holds_alternative<util::json::Object>(result))
|
||||
{
|
||||
current_reply.headers.emplace_back("Content-Type", "application/json; charset=UTF-8");
|
||||
current_reply.headers.emplace_back("Content-Disposition",
|
||||
"inline; filename=\"response.json\"");
|
||||
|
||||
util::json::render(current_reply.content, result.get<util::json::Object>());
|
||||
util::json::render(current_reply.content, std::get<util::json::Object>(result));
|
||||
}
|
||||
else if (result.is<flatbuffers::FlatBufferBuilder>())
|
||||
else if (std::holds_alternative<flatbuffers::FlatBufferBuilder>(result))
|
||||
{
|
||||
auto &buffer = result.get<flatbuffers::FlatBufferBuilder>();
|
||||
auto &buffer = std::get<flatbuffers::FlatBufferBuilder>(result);
|
||||
current_reply.content.resize(buffer.GetSize());
|
||||
std::copy(buffer.GetBufferPointer(),
|
||||
buffer.GetBufferPointer() + buffer.GetSize(),
|
||||
@@ -59,10 +60,10 @@ void SendResponse(ServiceHandler::ResultT &result, http::reply ¤t_reply)
|
||||
}
|
||||
else
|
||||
{
|
||||
BOOST_ASSERT(result.is<std::string>());
|
||||
current_reply.content.resize(result.get<std::string>().size());
|
||||
std::copy(result.get<std::string>().cbegin(),
|
||||
result.get<std::string>().cend(),
|
||||
BOOST_ASSERT(std::holds_alternative<std::string>(result));
|
||||
current_reply.content.resize(std::get<std::string>(result).size());
|
||||
std::copy(std::get<std::string>(result).cbegin(),
|
||||
std::get<std::string>(result).cend(),
|
||||
current_reply.content.begin());
|
||||
|
||||
current_reply.headers.emplace_back("Content-Type", "application/x-protobuf");
|
||||
@@ -127,7 +128,7 @@ void RequestHandler::HandleRequest(const http::request ¤t_request, http::r
|
||||
|
||||
current_reply.status = http::reply::bad_request;
|
||||
result = util::json::Object();
|
||||
auto &json_result = result.get<util::json::Object>();
|
||||
auto &json_result = std::get<util::json::Object>(result);
|
||||
json_result.values["code"] = "InvalidUrl";
|
||||
json_result.values["message"] = "URL string malformed close to position " +
|
||||
std::to_string(position) + ": \"" + context + "\"";
|
||||
@@ -174,7 +175,7 @@ void RequestHandler::HandleRequest(const http::request ¤t_request, http::r
|
||||
current_reply.status = http::reply::bad_request;
|
||||
|
||||
ServiceHandler::ResultT result = util::json::Object();
|
||||
auto &json_result = result.get<util::json::Object>();
|
||||
auto &json_result = std::get<util::json::Object>(result);
|
||||
json_result.values["code"] = "DisabledDataset";
|
||||
json_result.values["message"] = e.what();
|
||||
SendResponse(result, current_reply);
|
||||
|
||||
@@ -42,7 +42,7 @@ engine::Status MatchService::RunQuery(std::size_t prefix_length,
|
||||
osrm::engine::api::ResultT &result)
|
||||
{
|
||||
result = util::json::Object();
|
||||
auto &json_result = result.get<util::json::Object>();
|
||||
auto &json_result = std::get<util::json::Object>(result);
|
||||
|
||||
auto query_iterator = query.begin();
|
||||
auto parameters =
|
||||
|
||||
@@ -36,7 +36,7 @@ engine::Status NearestService::RunQuery(std::size_t prefix_length,
|
||||
osrm::engine::api::ResultT &result)
|
||||
{
|
||||
result = util::json::Object();
|
||||
auto &json_result = result.get<util::json::Object>();
|
||||
auto &json_result = std::get<util::json::Object>(result);
|
||||
|
||||
auto query_iterator = query.begin();
|
||||
auto parameters =
|
||||
|
||||
@@ -40,7 +40,7 @@ engine::Status RouteService::RunQuery(std::size_t prefix_length,
|
||||
osrm::engine::api::ResultT &result)
|
||||
{
|
||||
result = util::json::Object();
|
||||
auto &json_result = result.get<util::json::Object>();
|
||||
auto &json_result = std::get<util::json::Object>(result);
|
||||
|
||||
auto query_iterator = query.begin();
|
||||
auto parameters =
|
||||
|
||||
@@ -71,7 +71,7 @@ engine::Status TableService::RunQuery(std::size_t prefix_length,
|
||||
osrm::engine::api::ResultT &result)
|
||||
{
|
||||
result = util::json::Object();
|
||||
auto &json_result = result.get<util::json::Object>();
|
||||
auto &json_result = std::get<util::json::Object>(result);
|
||||
|
||||
auto query_iterator = query.begin();
|
||||
auto parameters =
|
||||
|
||||
@@ -22,7 +22,7 @@ engine::Status TileService::RunQuery(std::size_t prefix_length,
|
||||
{
|
||||
const auto position = std::distance(query.begin(), query_iterator);
|
||||
result = util::json::Object();
|
||||
auto &json_result = result.get<util::json::Object>();
|
||||
auto &json_result = std::get<util::json::Object>(result);
|
||||
json_result.values["code"] = "InvalidQuery";
|
||||
json_result.values["message"] =
|
||||
"Query string malformed close to position " + std::to_string(prefix_length + position);
|
||||
@@ -33,7 +33,7 @@ engine::Status TileService::RunQuery(std::size_t prefix_length,
|
||||
if (!parameters->IsValid())
|
||||
{
|
||||
result = util::json::Object();
|
||||
auto &json_result = result.get<util::json::Object>();
|
||||
auto &json_result = std::get<util::json::Object>(result);
|
||||
json_result.values["code"] = "InvalidOptions";
|
||||
json_result.values["message"] = "Invalid coodinates. Only zoomlevel 12+ is supported";
|
||||
return engine::Status::Error;
|
||||
|
||||
@@ -42,7 +42,7 @@ engine::Status TripService::RunQuery(std::size_t prefix_length,
|
||||
osrm::engine::api::ResultT &result)
|
||||
{
|
||||
result = util::json::Object();
|
||||
auto &json_result = result.get<util::json::Object>();
|
||||
auto &json_result = std::get<util::json::Object>(result);
|
||||
|
||||
auto query_iterator = query.begin();
|
||||
auto parameters =
|
||||
@@ -51,7 +51,7 @@ engine::Status TripService::RunQuery(std::size_t prefix_length,
|
||||
{
|
||||
const auto position = std::distance(query.begin(), query_iterator);
|
||||
result = util::json::Object();
|
||||
auto &json_result = result.get<util::json::Object>();
|
||||
auto &json_result = std::get<util::json::Object>(result);
|
||||
json_result.values["code"] = "InvalidQuery";
|
||||
json_result.values["message"] =
|
||||
"Query string malformed close to position " + std::to_string(prefix_length + position);
|
||||
|
||||
@@ -31,7 +31,7 @@ engine::Status ServiceHandler::RunQuery(api::ParsedURL parsed_url,
|
||||
if (service_iter == service_map.end())
|
||||
{
|
||||
result = util::json::Object();
|
||||
auto &json_result = result.get<util::json::Object>();
|
||||
auto &json_result = std::get<util::json::Object>(result);
|
||||
json_result.values["code"] = "InvalidService";
|
||||
json_result.values["message"] = "Service " + parsed_url.service + " not found!";
|
||||
return engine::Status::Error;
|
||||
@@ -41,7 +41,7 @@ engine::Status ServiceHandler::RunQuery(api::ParsedURL parsed_url,
|
||||
if (service->GetVersion() != parsed_url.version)
|
||||
{
|
||||
result = util::json::Object();
|
||||
auto &json_result = result.get<util::json::Object>();
|
||||
auto &json_result = std::get<util::json::Object>(result);
|
||||
json_result.values["code"] = "InvalidVersion";
|
||||
json_result.values["message"] = "Service " + parsed_url.service + " not found!";
|
||||
return engine::Status::Error;
|
||||
|
||||
@@ -66,4 +66,4 @@ CoordinateVectorToLineString::operator()(const std::vector<util::Coordinate> &in
|
||||
return makeFeature("LineString", std::move(coordinates), properties);
|
||||
}
|
||||
|
||||
} // namespace osrm::util
|
||||
} // namespace osrm::util
|
||||
Reference in New Issue
Block a user