Use std::variant instead of mapbox::util::variant (#6903)

This commit is contained in:
Siarhei Fedartsou
2024-05-28 18:52:49 +02:00
committed by GitHub
parent 01b1673c8a
commit c1ed73126d
117 changed files with 472 additions and 17601 deletions
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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"};
}
+1 -1
View File
@@ -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"};
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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
+4 -4
View File
@@ -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
View File
@@ -65,7 +65,7 @@ Status OSRM::Route(const engine::api::RouteParameters &params, 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 &params, 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 &params, 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 &params, 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 &params, 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 &params, 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;
}
-1
View File
@@ -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"
+11 -10
View File
@@ -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 &current_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 &current_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 &current_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 &current_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);
+1 -1
View File
@@ -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 =
+1 -1
View File
@@ -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 =
+1 -1
View File
@@ -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 =
+1 -1
View File
@@ -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 =
+2 -2
View File
@@ -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;
+2 -2
View File
@@ -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);
+2 -2
View File
@@ -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;
+1 -1
View File
@@ -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