rename JSON namespace to osrm::json to avoid namespace clash with V8
This commit is contained in:
parent
9e09168597
commit
79b9bdf7ce
@ -32,21 +32,21 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
|
|
||||||
#include <osrm/coordinate.hpp>
|
#include <osrm/coordinate.hpp>
|
||||||
|
|
||||||
JSON::String
|
osrm::json::String
|
||||||
PolylineFormatter::printEncodedString(const std::vector<SegmentInformation> &polyline) const
|
PolylineFormatter::printEncodedString(const std::vector<SegmentInformation> &polyline) const
|
||||||
{
|
{
|
||||||
return JSON::String(PolylineCompressor().get_encoded_string(polyline));
|
return osrm::json::String(PolylineCompressor().get_encoded_string(polyline));
|
||||||
}
|
}
|
||||||
|
|
||||||
JSON::Array
|
osrm::json::Array
|
||||||
PolylineFormatter::printUnencodedString(const std::vector<SegmentInformation> &polyline) const
|
PolylineFormatter::printUnencodedString(const std::vector<SegmentInformation> &polyline) const
|
||||||
{
|
{
|
||||||
JSON::Array json_geometry_array;
|
osrm::json::Array json_geometry_array;
|
||||||
for (const auto &segment : polyline)
|
for (const auto &segment : polyline)
|
||||||
{
|
{
|
||||||
if (segment.necessary)
|
if (segment.necessary)
|
||||||
{
|
{
|
||||||
JSON::Array json_coordinate;
|
osrm::json::Array json_coordinate;
|
||||||
json_coordinate.values.push_back(segment.location.lat / COORDINATE_PRECISION);
|
json_coordinate.values.push_back(segment.location.lat / COORDINATE_PRECISION);
|
||||||
json_coordinate.values.push_back(segment.location.lon / COORDINATE_PRECISION);
|
json_coordinate.values.push_back(segment.location.lon / COORDINATE_PRECISION);
|
||||||
json_geometry_array.values.push_back(json_coordinate);
|
json_geometry_array.values.push_back(json_coordinate);
|
||||||
|
@ -37,9 +37,9 @@ struct SegmentInformation;
|
|||||||
|
|
||||||
struct PolylineFormatter
|
struct PolylineFormatter
|
||||||
{
|
{
|
||||||
JSON::String printEncodedString(const std::vector<SegmentInformation> &polyline) const;
|
osrm::json::String printEncodedString(const std::vector<SegmentInformation> &polyline) const;
|
||||||
|
|
||||||
JSON::Array printUnencodedString(const std::vector<SegmentInformation> &polyline) const;
|
osrm::json::Array printUnencodedString(const std::vector<SegmentInformation> &polyline) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* POLYLINE_FORMATTER_HPP */
|
#endif /* POLYLINE_FORMATTER_HPP */
|
||||||
|
@ -98,7 +98,7 @@ void DescriptionFactory::AppendSegment(const FixedPointCoordinate &coordinate,
|
|||||||
turn, path_point.travel_mode);
|
turn, path_point.travel_mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
JSON::Value DescriptionFactory::AppendGeometryString(const bool return_encoded)
|
osrm::json::Value DescriptionFactory::AppendGeometryString(const bool return_encoded)
|
||||||
{
|
{
|
||||||
if (return_encoded)
|
if (return_encoded)
|
||||||
{
|
{
|
||||||
|
@ -85,7 +85,7 @@ class DescriptionFactory
|
|||||||
void SetEndSegment(const PhantomNode &start_phantom,
|
void SetEndSegment(const PhantomNode &start_phantom,
|
||||||
const bool traversed_in_reverse,
|
const bool traversed_in_reverse,
|
||||||
const bool is_via_location = false);
|
const bool is_via_location = false);
|
||||||
JSON::Value AppendGeometryString(const bool return_encoded);
|
osrm::json::Value AppendGeometryString(const bool return_encoded);
|
||||||
std::vector<unsigned> const &GetViaIndices() const;
|
std::vector<unsigned> const &GetViaIndices() const;
|
||||||
|
|
||||||
double get_entire_length() const { return entire_length; }
|
double get_entire_length() const { return entire_length; }
|
||||||
|
@ -78,7 +78,7 @@ template <class DataFacadeT> class BaseDescriptor
|
|||||||
BaseDescriptor() {}
|
BaseDescriptor() {}
|
||||||
// Maybe someone can explain the pure virtual destructor thing to me (dennis)
|
// Maybe someone can explain the pure virtual destructor thing to me (dennis)
|
||||||
virtual ~BaseDescriptor() {}
|
virtual ~BaseDescriptor() {}
|
||||||
virtual void Run(const InternalRouteResult &raw_route, JSON::Object &json_result) = 0;
|
virtual void Run(const InternalRouteResult &raw_route, osrm::json::Object &json_result) = 0;
|
||||||
virtual void SetConfig(const DescriptorConfig &c) = 0;
|
virtual void SetConfig(const DescriptorConfig &c) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -41,11 +41,11 @@ template <class DataFacadeT> class GPXDescriptor final : public BaseDescriptor<D
|
|||||||
DescriptorConfig config;
|
DescriptorConfig config;
|
||||||
DataFacadeT *facade;
|
DataFacadeT *facade;
|
||||||
|
|
||||||
void AddRoutePoint(const FixedPointCoordinate &coordinate, JSON::Array &json_route)
|
void AddRoutePoint(const FixedPointCoordinate &coordinate, osrm::json::Array &json_route)
|
||||||
{
|
{
|
||||||
JSON::Object json_lat;
|
osrm::json::Object json_lat;
|
||||||
JSON::Object json_lon;
|
osrm::json::Object json_lon;
|
||||||
JSON::Array json_row;
|
osrm::json::Array json_row;
|
||||||
|
|
||||||
std::string tmp;
|
std::string tmp;
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ template <class DataFacadeT> class GPXDescriptor final : public BaseDescriptor<D
|
|||||||
|
|
||||||
json_row.values.push_back(json_lat);
|
json_row.values.push_back(json_lat);
|
||||||
json_row.values.push_back(json_lon);
|
json_row.values.push_back(json_lon);
|
||||||
JSON::Object entry;
|
osrm::json::Object entry;
|
||||||
entry.values["rtept"] = json_row;
|
entry.values["rtept"] = json_row;
|
||||||
json_route.values.push_back(entry);
|
json_route.values.push_back(entry);
|
||||||
}
|
}
|
||||||
@ -67,9 +67,9 @@ template <class DataFacadeT> class GPXDescriptor final : public BaseDescriptor<D
|
|||||||
|
|
||||||
virtual void SetConfig(const DescriptorConfig &c) final { config = c; }
|
virtual void SetConfig(const DescriptorConfig &c) final { config = c; }
|
||||||
|
|
||||||
virtual void Run(const InternalRouteResult &raw_route, JSON::Object &json_result) final
|
virtual void Run(const InternalRouteResult &raw_route, osrm::json::Object &json_result) final
|
||||||
{
|
{
|
||||||
JSON::Array json_route;
|
osrm::json::Array json_route;
|
||||||
if (raw_route.shortest_path_length != INVALID_EDGE_WEIGHT)
|
if (raw_route.shortest_path_length != INVALID_EDGE_WEIGHT)
|
||||||
{
|
{
|
||||||
AddRoutePoint(raw_route.segment_end_coordinates.front().source_phantom.location,
|
AddRoutePoint(raw_route.segment_end_coordinates.front().source_phantom.location,
|
||||||
@ -87,7 +87,7 @@ template <class DataFacadeT> class GPXDescriptor final : public BaseDescriptor<D
|
|||||||
AddRoutePoint(raw_route.segment_end_coordinates.back().target_phantom.location,
|
AddRoutePoint(raw_route.segment_end_coordinates.back().target_phantom.location,
|
||||||
json_route);
|
json_route);
|
||||||
}
|
}
|
||||||
// JSON::gpx_render(reply.content, json_route);
|
// osrm::json::gpx_render(reply.content, json_route);
|
||||||
json_result.values["route"] = json_route;
|
json_result.values["route"] = json_route;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -100,14 +100,15 @@ template <class DataFacadeT> class JSONDescriptor final : public BaseDescriptor<
|
|||||||
return added_element_count;
|
return added_element_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void Run(const InternalRouteResult &raw_route, JSON::Object &json_result) override final
|
virtual void Run(const InternalRouteResult &raw_route,
|
||||||
|
osrm::json::Object &json_result) override final
|
||||||
{
|
{
|
||||||
if (INVALID_EDGE_WEIGHT == raw_route.shortest_path_length)
|
if (INVALID_EDGE_WEIGHT == raw_route.shortest_path_length)
|
||||||
{
|
{
|
||||||
// We do not need to do much, if there is no route ;-)
|
// We do not need to do much, if there is no route ;-)
|
||||||
json_result.values["status"] = 207;
|
json_result.values["status"] = 207;
|
||||||
json_result.values["status_message"] = "Cannot find route between points";
|
json_result.values["status_message"] = "Cannot find route between points";
|
||||||
// JSON::render(reply.content, json_result);
|
// osrm::json::render(reply.content, json_result);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -139,20 +140,20 @@ template <class DataFacadeT> class JSONDescriptor final : public BaseDescriptor<
|
|||||||
|
|
||||||
if (config.geometry)
|
if (config.geometry)
|
||||||
{
|
{
|
||||||
JSON::Value route_geometry =
|
osrm::json::Value route_geometry =
|
||||||
description_factory.AppendGeometryString(config.encode_geometry);
|
description_factory.AppendGeometryString(config.encode_geometry);
|
||||||
json_result.values["route_geometry"] = route_geometry;
|
json_result.values["route_geometry"] = route_geometry;
|
||||||
}
|
}
|
||||||
if (config.instructions)
|
if (config.instructions)
|
||||||
{
|
{
|
||||||
JSON::Array json_route_instructions;
|
osrm::json::Array json_route_instructions;
|
||||||
BuildTextualDescription(description_factory, json_route_instructions,
|
BuildTextualDescription(description_factory, json_route_instructions,
|
||||||
raw_route.shortest_path_length, shortest_path_segments);
|
raw_route.shortest_path_length, shortest_path_segments);
|
||||||
json_result.values["route_instructions"] = json_route_instructions;
|
json_result.values["route_instructions"] = json_route_instructions;
|
||||||
}
|
}
|
||||||
description_factory.BuildRouteSummary(description_factory.get_entire_length(),
|
description_factory.BuildRouteSummary(description_factory.get_entire_length(),
|
||||||
raw_route.shortest_path_length);
|
raw_route.shortest_path_length);
|
||||||
JSON::Object json_route_summary;
|
osrm::json::Object json_route_summary;
|
||||||
json_route_summary.values["total_distance"] = description_factory.summary.distance;
|
json_route_summary.values["total_distance"] = description_factory.summary.distance;
|
||||||
json_route_summary.values["total_time"] = description_factory.summary.duration;
|
json_route_summary.values["total_time"] = description_factory.summary.duration;
|
||||||
json_route_summary.values["start_point"] =
|
json_route_summary.values["start_point"] =
|
||||||
@ -163,8 +164,8 @@ template <class DataFacadeT> class JSONDescriptor final : public BaseDescriptor<
|
|||||||
|
|
||||||
BOOST_ASSERT(!raw_route.segment_end_coordinates.empty());
|
BOOST_ASSERT(!raw_route.segment_end_coordinates.empty());
|
||||||
|
|
||||||
JSON::Array json_via_points_array;
|
osrm::json::Array json_via_points_array;
|
||||||
JSON::Array json_first_coordinate;
|
osrm::json::Array json_first_coordinate;
|
||||||
json_first_coordinate.values.push_back(
|
json_first_coordinate.values.push_back(
|
||||||
raw_route.segment_end_coordinates.front().source_phantom.location.lat /
|
raw_route.segment_end_coordinates.front().source_phantom.location.lat /
|
||||||
COORDINATE_PRECISION);
|
COORDINATE_PRECISION);
|
||||||
@ -175,7 +176,7 @@ template <class DataFacadeT> class JSONDescriptor final : public BaseDescriptor<
|
|||||||
for (const PhantomNodes &nodes : raw_route.segment_end_coordinates)
|
for (const PhantomNodes &nodes : raw_route.segment_end_coordinates)
|
||||||
{
|
{
|
||||||
std::string tmp;
|
std::string tmp;
|
||||||
JSON::Array json_coordinate;
|
osrm::json::Array json_coordinate;
|
||||||
json_coordinate.values.push_back(nodes.target_phantom.location.lat /
|
json_coordinate.values.push_back(nodes.target_phantom.location.lat /
|
||||||
COORDINATE_PRECISION);
|
COORDINATE_PRECISION);
|
||||||
json_coordinate.values.push_back(nodes.target_phantom.location.lon /
|
json_coordinate.values.push_back(nodes.target_phantom.location.lon /
|
||||||
@ -184,7 +185,7 @@ template <class DataFacadeT> class JSONDescriptor final : public BaseDescriptor<
|
|||||||
}
|
}
|
||||||
json_result.values["via_points"] = json_via_points_array;
|
json_result.values["via_points"] = json_via_points_array;
|
||||||
|
|
||||||
JSON::Array json_via_indices_array;
|
osrm::json::Array json_via_indices_array;
|
||||||
|
|
||||||
std::vector<unsigned> const &shortest_leg_end_indices = description_factory.GetViaIndices();
|
std::vector<unsigned> const &shortest_leg_end_indices = description_factory.GetViaIndices();
|
||||||
json_via_indices_array.values.insert(json_via_indices_array.values.end(),
|
json_via_indices_array.values.insert(json_via_indices_array.values.end(),
|
||||||
@ -195,7 +196,7 @@ template <class DataFacadeT> class JSONDescriptor final : public BaseDescriptor<
|
|||||||
// only one alternative route is computed at this time, so this is hardcoded
|
// only one alternative route is computed at this time, so this is hardcoded
|
||||||
if (INVALID_EDGE_WEIGHT != raw_route.alternative_path_length)
|
if (INVALID_EDGE_WEIGHT != raw_route.alternative_path_length)
|
||||||
{
|
{
|
||||||
json_result.values["found_alternative"] = JSON::True();
|
json_result.values["found_alternative"] = osrm::json::True();
|
||||||
BOOST_ASSERT(!raw_route.alt_source_traversed_in_reverse.empty());
|
BOOST_ASSERT(!raw_route.alt_source_traversed_in_reverse.empty());
|
||||||
alternate_description_factory.SetStartSegment(
|
alternate_description_factory.SetStartSegment(
|
||||||
raw_route.segment_end_coordinates.front().source_phantom,
|
raw_route.segment_end_coordinates.front().source_phantom,
|
||||||
@ -213,15 +214,15 @@ template <class DataFacadeT> class JSONDescriptor final : public BaseDescriptor<
|
|||||||
|
|
||||||
if (config.geometry)
|
if (config.geometry)
|
||||||
{
|
{
|
||||||
JSON::Value alternate_geometry_string =
|
osrm::json::Value alternate_geometry_string =
|
||||||
alternate_description_factory.AppendGeometryString(config.encode_geometry);
|
alternate_description_factory.AppendGeometryString(config.encode_geometry);
|
||||||
JSON::Array json_alternate_geometries_array;
|
osrm::json::Array json_alternate_geometries_array;
|
||||||
json_alternate_geometries_array.values.push_back(alternate_geometry_string);
|
json_alternate_geometries_array.values.push_back(alternate_geometry_string);
|
||||||
json_result.values["alternative_geometries"] = json_alternate_geometries_array;
|
json_result.values["alternative_geometries"] = json_alternate_geometries_array;
|
||||||
}
|
}
|
||||||
// Generate instructions for each alternative (simulated here)
|
// Generate instructions for each alternative (simulated here)
|
||||||
JSON::Array json_alt_instructions;
|
osrm::json::Array json_alt_instructions;
|
||||||
JSON::Array json_current_alt_instructions;
|
osrm::json::Array json_current_alt_instructions;
|
||||||
if (config.instructions)
|
if (config.instructions)
|
||||||
{
|
{
|
||||||
BuildTextualDescription(
|
BuildTextualDescription(
|
||||||
@ -234,8 +235,8 @@ template <class DataFacadeT> class JSONDescriptor final : public BaseDescriptor<
|
|||||||
alternate_description_factory.get_entire_length(),
|
alternate_description_factory.get_entire_length(),
|
||||||
raw_route.alternative_path_length);
|
raw_route.alternative_path_length);
|
||||||
|
|
||||||
JSON::Object json_alternate_route_summary;
|
osrm::json::Object json_alternate_route_summary;
|
||||||
JSON::Array json_alternate_route_summary_array;
|
osrm::json::Array json_alternate_route_summary_array;
|
||||||
json_alternate_route_summary.values["total_distance"] =
|
json_alternate_route_summary.values["total_distance"] =
|
||||||
alternate_description_factory.summary.distance;
|
alternate_description_factory.summary.distance;
|
||||||
json_alternate_route_summary.values["total_time"] =
|
json_alternate_route_summary.values["total_time"] =
|
||||||
@ -249,7 +250,7 @@ template <class DataFacadeT> class JSONDescriptor final : public BaseDescriptor<
|
|||||||
|
|
||||||
std::vector<unsigned> const &alternate_leg_end_indices =
|
std::vector<unsigned> const &alternate_leg_end_indices =
|
||||||
alternate_description_factory.GetViaIndices();
|
alternate_description_factory.GetViaIndices();
|
||||||
JSON::Array json_altenative_indices_array;
|
osrm::json::Array json_altenative_indices_array;
|
||||||
json_altenative_indices_array.values.insert(json_altenative_indices_array.values.end(),
|
json_altenative_indices_array.values.insert(json_altenative_indices_array.values.end(),
|
||||||
alternate_leg_end_indices.begin(),
|
alternate_leg_end_indices.begin(),
|
||||||
alternate_leg_end_indices.end());
|
alternate_leg_end_indices.end());
|
||||||
@ -257,30 +258,30 @@ template <class DataFacadeT> class JSONDescriptor final : public BaseDescriptor<
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
json_result.values["found_alternative"] = JSON::False();
|
json_result.values["found_alternative"] = osrm::json::False();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get Names for both routes
|
// Get Names for both routes
|
||||||
RouteNames route_names =
|
RouteNames route_names =
|
||||||
GenerateRouteNames(shortest_path_segments, alternative_path_segments, facade);
|
GenerateRouteNames(shortest_path_segments, alternative_path_segments, facade);
|
||||||
JSON::Array json_route_names;
|
osrm::json::Array json_route_names;
|
||||||
json_route_names.values.push_back(route_names.shortest_path_name_1);
|
json_route_names.values.push_back(route_names.shortest_path_name_1);
|
||||||
json_route_names.values.push_back(route_names.shortest_path_name_2);
|
json_route_names.values.push_back(route_names.shortest_path_name_2);
|
||||||
json_result.values["route_name"] = json_route_names;
|
json_result.values["route_name"] = json_route_names;
|
||||||
|
|
||||||
if (INVALID_EDGE_WEIGHT != raw_route.alternative_path_length)
|
if (INVALID_EDGE_WEIGHT != raw_route.alternative_path_length)
|
||||||
{
|
{
|
||||||
JSON::Array json_alternate_names_array;
|
osrm::json::Array json_alternate_names_array;
|
||||||
JSON::Array json_alternate_names;
|
osrm::json::Array json_alternate_names;
|
||||||
json_alternate_names.values.push_back(route_names.alternative_path_name_1);
|
json_alternate_names.values.push_back(route_names.alternative_path_name_1);
|
||||||
json_alternate_names.values.push_back(route_names.alternative_path_name_2);
|
json_alternate_names.values.push_back(route_names.alternative_path_name_2);
|
||||||
json_alternate_names_array.values.push_back(json_alternate_names);
|
json_alternate_names_array.values.push_back(json_alternate_names);
|
||||||
json_result.values["alternative_names"] = json_alternate_names_array;
|
json_result.values["alternative_names"] = json_alternate_names_array;
|
||||||
}
|
}
|
||||||
|
|
||||||
JSON::Object json_hint_object;
|
osrm::json::Object json_hint_object;
|
||||||
json_hint_object.values["checksum"] = facade->GetCheckSum();
|
json_hint_object.values["checksum"] = facade->GetCheckSum();
|
||||||
JSON::Array json_location_hint_array;
|
osrm::json::Array json_location_hint_array;
|
||||||
std::string hint;
|
std::string hint;
|
||||||
for (const auto i : osrm::irange<std::size_t>(0, raw_route.segment_end_coordinates.size()))
|
for (const auto i : osrm::irange<std::size_t>(0, raw_route.segment_end_coordinates.size()))
|
||||||
{
|
{
|
||||||
@ -296,14 +297,14 @@ template <class DataFacadeT> class JSONDescriptor final : public BaseDescriptor<
|
|||||||
|
|
||||||
// render the content to the output array
|
// render the content to the output array
|
||||||
// TIMER_START(route_render);
|
// TIMER_START(route_render);
|
||||||
// JSON::render(reply.content, json_result);
|
// osrm::json::render(reply.content, json_result);
|
||||||
// TIMER_STOP(route_render);
|
// TIMER_STOP(route_render);
|
||||||
// SimpleLogger().Write(logDEBUG) << "rendering took: " << TIMER_MSEC(route_render);
|
// SimpleLogger().Write(logDEBUG) << "rendering took: " << TIMER_MSEC(route_render);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: reorder parameters
|
// TODO: reorder parameters
|
||||||
inline void BuildTextualDescription(DescriptionFactory &description_factory,
|
inline void BuildTextualDescription(DescriptionFactory &description_factory,
|
||||||
JSON::Array &json_instruction_array,
|
osrm::json::Array &json_instruction_array,
|
||||||
const int route_length,
|
const int route_length,
|
||||||
std::vector<Segment> &route_segments_list)
|
std::vector<Segment> &route_segments_list)
|
||||||
{
|
{
|
||||||
@ -317,7 +318,7 @@ template <class DataFacadeT> class JSONDescriptor final : public BaseDescriptor<
|
|||||||
// Fetch data from Factory and generate a string from it.
|
// Fetch data from Factory and generate a string from it.
|
||||||
for (const SegmentInformation &segment : description_factory.path_description)
|
for (const SegmentInformation &segment : description_factory.path_description)
|
||||||
{
|
{
|
||||||
JSON::Array json_instruction_row;
|
osrm::json::Array json_instruction_row;
|
||||||
TurnInstruction current_instruction = segment.turn_instruction;
|
TurnInstruction current_instruction = segment.turn_instruction;
|
||||||
entered_restricted_area_count += (current_instruction != segment.turn_instruction);
|
entered_restricted_area_count += (current_instruction != segment.turn_instruction);
|
||||||
if (TurnInstructionsClass::TurnIsNecessary(current_instruction))
|
if (TurnInstructionsClass::TurnIsNecessary(current_instruction))
|
||||||
@ -377,7 +378,7 @@ template <class DataFacadeT> class JSONDescriptor final : public BaseDescriptor<
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JSON::Array json_last_instruction_row;
|
osrm::json::Array json_last_instruction_row;
|
||||||
temp_instruction = cast::integral_to_string(
|
temp_instruction = cast::integral_to_string(
|
||||||
cast::enum_to_underlying(TurnInstruction::ReachedYourDestination));
|
cast::enum_to_underlying(TurnInstruction::ReachedYourDestination));
|
||||||
json_last_instruction_row.values.push_back(temp_instruction);
|
json_last_instruction_row.values.push_back(temp_instruction);
|
||||||
|
@ -31,6 +31,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
|
|
||||||
#include <boost/filesystem.hpp>
|
#include <boost/filesystem.hpp>
|
||||||
|
|
||||||
|
#include <exception>
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -28,8 +28,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
// based on
|
// based on
|
||||||
// https://svn.apache.org/repos/asf/mesos/tags/release-0.9.0-incubating-RC0/src/common/json.hpp
|
// https://svn.apache.org/repos/asf/mesos/tags/release-0.9.0-incubating-RC0/src/common/json.hpp
|
||||||
|
|
||||||
#ifndef JSON_CONTAINER_H
|
#ifndef JSON_CONTAINER_HPP
|
||||||
#define JSON_CONTAINER_H
|
#define JSON_CONTAINER_HPP
|
||||||
|
|
||||||
#include <variant/variant.hpp>
|
#include <variant/variant.hpp>
|
||||||
|
|
||||||
@ -38,7 +38,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
|
||||||
namespace JSON
|
namespace osrm
|
||||||
|
{
|
||||||
|
namespace json
|
||||||
{
|
{
|
||||||
|
|
||||||
struct Object;
|
struct Object;
|
||||||
@ -90,5 +92,5 @@ struct Array
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace JSON
|
} // namespace JSON
|
||||||
|
} // namespace osrm
|
||||||
#endif // JSON_CONTAINER_H
|
#endif // JSON_CONTAINER_HPP
|
||||||
|
@ -35,10 +35,13 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
class OSRM_impl;
|
class OSRM_impl;
|
||||||
struct RouteParameters;
|
struct RouteParameters;
|
||||||
|
|
||||||
namespace JSON
|
namespace osrm
|
||||||
|
{
|
||||||
|
namespace json
|
||||||
{
|
{
|
||||||
struct Object;
|
struct Object;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class OSRM
|
class OSRM
|
||||||
{
|
{
|
||||||
@ -48,7 +51,7 @@ class OSRM
|
|||||||
public:
|
public:
|
||||||
explicit OSRM(libosrm_config &lib_config);
|
explicit OSRM(libosrm_config &lib_config);
|
||||||
~OSRM();
|
~OSRM();
|
||||||
int RunQuery(RouteParameters &route_parameters, JSON::Object &json_result);
|
int RunQuery(RouteParameters &route_parameters, osrm::json::Object &json_result);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // OSRM_HPP
|
#endif // OSRM_HPP
|
||||||
|
@ -104,7 +104,7 @@ void OSRM_impl::RegisterPlugin(BasePlugin *plugin)
|
|||||||
plugin_map.emplace(plugin->GetDescriptor(), plugin);
|
plugin_map.emplace(plugin->GetDescriptor(), plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
int OSRM_impl::RunQuery(RouteParameters &route_parameters, JSON::Object &json_result)
|
int OSRM_impl::RunQuery(RouteParameters &route_parameters, osrm::json::Object &json_result)
|
||||||
{
|
{
|
||||||
const auto &plugin_iterator = plugin_map.find(route_parameters.service);
|
const auto &plugin_iterator = plugin_map.find(route_parameters.service);
|
||||||
|
|
||||||
@ -172,7 +172,7 @@ OSRM::OSRM(libosrm_config &lib_config) : OSRM_pimpl_(osrm::make_unique<OSRM_impl
|
|||||||
|
|
||||||
OSRM::~OSRM() { OSRM_pimpl_.reset(); }
|
OSRM::~OSRM() { OSRM_pimpl_.reset(); }
|
||||||
|
|
||||||
int OSRM::RunQuery(RouteParameters &route_parameters, JSON::Object &json_result)
|
int OSRM::RunQuery(RouteParameters &route_parameters, osrm::json::Object &json_result)
|
||||||
{
|
{
|
||||||
return OSRM_pimpl_->RunQuery(route_parameters, json_result);
|
return OSRM_pimpl_->RunQuery(route_parameters, json_result);
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ class OSRM_impl
|
|||||||
OSRM_impl(libosrm_config &lib_config);
|
OSRM_impl(libosrm_config &lib_config);
|
||||||
OSRM_impl(const OSRM_impl &) = delete;
|
OSRM_impl(const OSRM_impl &) = delete;
|
||||||
virtual ~OSRM_impl();
|
virtual ~OSRM_impl();
|
||||||
int RunQuery(RouteParameters &route_parameters, JSON::Object &json_result);
|
int RunQuery(RouteParameters &route_parameters, osrm::json::Object &json_result);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void RegisterPlugin(BasePlugin *plugin);
|
void RegisterPlugin(BasePlugin *plugin);
|
||||||
|
@ -68,7 +68,7 @@ template <class DataFacadeT> class DistanceTablePlugin final : public BasePlugin
|
|||||||
const std::string GetDescriptor() const override final { return descriptor_string; }
|
const std::string GetDescriptor() const override final { return descriptor_string; }
|
||||||
|
|
||||||
int HandleRequest(const RouteParameters &route_parameters,
|
int HandleRequest(const RouteParameters &route_parameters,
|
||||||
JSON::Object &json_result) override final
|
osrm::json::Object &json_result) override final
|
||||||
{
|
{
|
||||||
if (!check_all_coordinates(route_parameters.coordinates))
|
if (!check_all_coordinates(route_parameters.coordinates))
|
||||||
{
|
{
|
||||||
@ -110,18 +110,18 @@ template <class DataFacadeT> class DistanceTablePlugin final : public BasePlugin
|
|||||||
return 400;
|
return 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
JSON::Array json_array;
|
osrm::json::Array json_array;
|
||||||
const auto number_of_locations = phantom_node_vector.size();
|
const auto number_of_locations = phantom_node_vector.size();
|
||||||
for (const auto row : osrm::irange<std::size_t>(0, number_of_locations))
|
for (const auto row : osrm::irange<std::size_t>(0, number_of_locations))
|
||||||
{
|
{
|
||||||
JSON::Array json_row;
|
osrm::json::Array json_row;
|
||||||
auto row_begin_iterator = result_table->begin() + (row * number_of_locations);
|
auto row_begin_iterator = result_table->begin() + (row * number_of_locations);
|
||||||
auto row_end_iterator = result_table->begin() + ((row + 1) * number_of_locations);
|
auto row_end_iterator = result_table->begin() + ((row + 1) * number_of_locations);
|
||||||
json_row.values.insert(json_row.values.end(), row_begin_iterator, row_end_iterator);
|
json_row.values.insert(json_row.values.end(), row_begin_iterator, row_end_iterator);
|
||||||
json_array.values.push_back(json_row);
|
json_array.values.push_back(json_row);
|
||||||
}
|
}
|
||||||
json_result.values["distance_table"] = json_array;
|
json_result.values["distance_table"] = json_array;
|
||||||
// JSON::render(reply.content, json_object);
|
// osrm::json::render(reply.content, json_object);
|
||||||
return 200;
|
return 200;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ class HelloWorldPlugin final : public BasePlugin
|
|||||||
const std::string GetDescriptor() const override final { return descriptor_string; }
|
const std::string GetDescriptor() const override final { return descriptor_string; }
|
||||||
|
|
||||||
int HandleRequest(const RouteParameters &routeParameters,
|
int HandleRequest(const RouteParameters &routeParameters,
|
||||||
JSON::Object &json_result) override final
|
osrm::json::Object &json_result) override final
|
||||||
{
|
{
|
||||||
std::string temp_string;
|
std::string temp_string;
|
||||||
json_result.values["title"] = "Hello World";
|
json_result.values["title"] = "Hello World";
|
||||||
@ -71,12 +71,12 @@ class HelloWorldPlugin final : public BasePlugin
|
|||||||
temp_string = cast::integral_to_string(routeParameters.coordinates.size());
|
temp_string = cast::integral_to_string(routeParameters.coordinates.size());
|
||||||
json_result.values["location_count"] = temp_string;
|
json_result.values["location_count"] = temp_string;
|
||||||
|
|
||||||
JSON::Array json_locations;
|
osrm::json::Array json_locations;
|
||||||
unsigned counter = 0;
|
unsigned counter = 0;
|
||||||
for (const FixedPointCoordinate &coordinate : routeParameters.coordinates)
|
for (const FixedPointCoordinate &coordinate : routeParameters.coordinates)
|
||||||
{
|
{
|
||||||
JSON::Object json_location;
|
osrm::json::Object json_location;
|
||||||
JSON::Array json_coordinates;
|
osrm::json::Array json_coordinates;
|
||||||
|
|
||||||
json_coordinates.values.push_back(
|
json_coordinates.values.push_back(
|
||||||
static_cast<double>(coordinate.lat / COORDINATE_PRECISION));
|
static_cast<double>(coordinate.lat / COORDINATE_PRECISION));
|
||||||
@ -89,7 +89,7 @@ class HelloWorldPlugin final : public BasePlugin
|
|||||||
json_result.values["locations"] = json_locations;
|
json_result.values["locations"] = json_locations;
|
||||||
json_result.values["hint_count"] = routeParameters.hints.size();
|
json_result.values["hint_count"] = routeParameters.hints.size();
|
||||||
|
|
||||||
JSON::Array json_hints;
|
osrm::json::Array json_hints;
|
||||||
counter = 0;
|
counter = 0;
|
||||||
for (const std::string ¤t_hint : routeParameters.hints)
|
for (const std::string ¤t_hint : routeParameters.hints)
|
||||||
{
|
{
|
||||||
|
@ -45,7 +45,7 @@ template <class DataFacadeT> class LocatePlugin final : public BasePlugin
|
|||||||
const std::string GetDescriptor() const override final { return descriptor_string; }
|
const std::string GetDescriptor() const override final { return descriptor_string; }
|
||||||
|
|
||||||
int HandleRequest(const RouteParameters &route_parameters,
|
int HandleRequest(const RouteParameters &route_parameters,
|
||||||
JSON::Object &json_result) override final
|
osrm::json::Object &json_result) override final
|
||||||
{
|
{
|
||||||
// check number of parameters
|
// check number of parameters
|
||||||
if (route_parameters.coordinates.empty() ||
|
if (route_parameters.coordinates.empty() ||
|
||||||
@ -63,7 +63,7 @@ template <class DataFacadeT> class LocatePlugin final : public BasePlugin
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
json_result.values["status"] = 0;
|
json_result.values["status"] = 0;
|
||||||
JSON::Array json_coordinate;
|
osrm::json::Array json_coordinate;
|
||||||
json_coordinate.values.push_back(result.lat / COORDINATE_PRECISION);
|
json_coordinate.values.push_back(result.lat / COORDINATE_PRECISION);
|
||||||
json_coordinate.values.push_back(result.lon / COORDINATE_PRECISION);
|
json_coordinate.values.push_back(result.lon / COORDINATE_PRECISION);
|
||||||
json_result.values["mapped_coordinate"] = json_coordinate;
|
json_result.values["mapped_coordinate"] = json_coordinate;
|
||||||
|
@ -50,7 +50,7 @@ template <class DataFacadeT> class NearestPlugin final : public BasePlugin
|
|||||||
const std::string GetDescriptor() const override final { return descriptor_string; }
|
const std::string GetDescriptor() const override final { return descriptor_string; }
|
||||||
|
|
||||||
int HandleRequest(const RouteParameters &route_parameters,
|
int HandleRequest(const RouteParameters &route_parameters,
|
||||||
JSON::Object &json_result) override final
|
osrm::json::Object &json_result) override final
|
||||||
{
|
{
|
||||||
// check number of parameters
|
// check number of parameters
|
||||||
if (route_parameters.coordinates.empty() ||
|
if (route_parameters.coordinates.empty() ||
|
||||||
@ -75,14 +75,14 @@ template <class DataFacadeT> class NearestPlugin final : public BasePlugin
|
|||||||
|
|
||||||
if (number_of_results > 1)
|
if (number_of_results > 1)
|
||||||
{
|
{
|
||||||
JSON::Array results;
|
osrm::json::Array results;
|
||||||
|
|
||||||
auto vector_length = phantom_node_vector.size();
|
auto vector_length = phantom_node_vector.size();
|
||||||
for (const auto i :
|
for (const auto i :
|
||||||
osrm::irange<std::size_t>(0, std::min(number_of_results, vector_length)))
|
osrm::irange<std::size_t>(0, std::min(number_of_results, vector_length)))
|
||||||
{
|
{
|
||||||
JSON::Array json_coordinate;
|
osrm::json::Array json_coordinate;
|
||||||
JSON::Object result;
|
osrm::json::Object result;
|
||||||
json_coordinate.values.push_back(phantom_node_vector.at(i).location.lat /
|
json_coordinate.values.push_back(phantom_node_vector.at(i).location.lat /
|
||||||
COORDINATE_PRECISION);
|
COORDINATE_PRECISION);
|
||||||
json_coordinate.values.push_back(phantom_node_vector.at(i).location.lon /
|
json_coordinate.values.push_back(phantom_node_vector.at(i).location.lon /
|
||||||
@ -97,7 +97,7 @@ template <class DataFacadeT> class NearestPlugin final : public BasePlugin
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
JSON::Array json_coordinate;
|
osrm::json::Array json_coordinate;
|
||||||
json_coordinate.values.push_back(phantom_node_vector.front().location.lat /
|
json_coordinate.values.push_back(phantom_node_vector.front().location.lat /
|
||||||
COORDINATE_PRECISION);
|
COORDINATE_PRECISION);
|
||||||
json_coordinate.values.push_back(phantom_node_vector.front().location.lon /
|
json_coordinate.values.push_back(phantom_node_vector.front().location.lon /
|
||||||
|
@ -42,12 +42,11 @@ class BasePlugin
|
|||||||
// Maybe someone can explain the pure virtual destructor thing to me (dennis)
|
// Maybe someone can explain the pure virtual destructor thing to me (dennis)
|
||||||
virtual ~BasePlugin() {}
|
virtual ~BasePlugin() {}
|
||||||
virtual const std::string GetDescriptor() const = 0;
|
virtual const std::string GetDescriptor() const = 0;
|
||||||
virtual int HandleRequest(const RouteParameters &, JSON::Object &) = 0;
|
virtual int HandleRequest(const RouteParameters &, osrm::json::Object &) = 0;
|
||||||
virtual bool check_all_coordinates(const std::vector<FixedPointCoordinate> &coordinates) const final
|
virtual bool
|
||||||
|
check_all_coordinates(const std::vector<FixedPointCoordinate> &coordinates) const final
|
||||||
{
|
{
|
||||||
if (2 > coordinates.size() ||
|
if (2 > coordinates.size() || std::any_of(std::begin(coordinates), std::end(coordinates),
|
||||||
std::any_of(std::begin(coordinates),
|
|
||||||
std::end(coordinates),
|
|
||||||
[](const FixedPointCoordinate &coordinate)
|
[](const FixedPointCoordinate &coordinate)
|
||||||
{
|
{
|
||||||
return !coordinate.is_valid();
|
return !coordinate.is_valid();
|
||||||
|
@ -45,7 +45,7 @@ template <class DataFacadeT> class TimestampPlugin final : public BasePlugin
|
|||||||
}
|
}
|
||||||
const std::string GetDescriptor() const override final { return descriptor_string; }
|
const std::string GetDescriptor() const override final { return descriptor_string; }
|
||||||
int HandleRequest(const RouteParameters &route_parameters,
|
int HandleRequest(const RouteParameters &route_parameters,
|
||||||
JSON::Object &json_result) override final
|
osrm::json::Object &json_result) override final
|
||||||
{
|
{
|
||||||
json_result.values["status"] = 0;
|
json_result.values["status"] = 0;
|
||||||
const std::string timestamp = facade->GetTimestamp();
|
const std::string timestamp = facade->GetTimestamp();
|
||||||
|
@ -72,7 +72,7 @@ template <class DataFacadeT> class ViaRoutePlugin final : public BasePlugin
|
|||||||
const std::string GetDescriptor() const override final { return descriptor_string; }
|
const std::string GetDescriptor() const override final { return descriptor_string; }
|
||||||
|
|
||||||
int HandleRequest(const RouteParameters &route_parameters,
|
int HandleRequest(const RouteParameters &route_parameters,
|
||||||
JSON::Object &json_result) override final
|
osrm::json::Object &json_result) override final
|
||||||
{
|
{
|
||||||
if (!check_all_coordinates(route_parameters.coordinates))
|
if (!check_all_coordinates(route_parameters.coordinates))
|
||||||
{
|
{
|
||||||
|
@ -92,7 +92,7 @@ void RequestHandler::handle_request(const http::request ¤t_request,
|
|||||||
const bool result =
|
const bool result =
|
||||||
boost::spirit::qi::parse(api_iterator, request_string.end(), api_parser);
|
boost::spirit::qi::parse(api_iterator, request_string.end(), api_parser);
|
||||||
|
|
||||||
JSON::Object json_result;
|
osrm::json::Object json_result;
|
||||||
// check if the was an error with the request
|
// check if the was an error with the request
|
||||||
if (!result || (api_iterator != request_string.end()))
|
if (!result || (api_iterator != request_string.end()))
|
||||||
{
|
{
|
||||||
@ -104,7 +104,7 @@ void RequestHandler::handle_request(const http::request ¤t_request,
|
|||||||
std::string message = "Query string malformed close to position ";
|
std::string message = "Query string malformed close to position ";
|
||||||
message += cast::integral_to_string(position);
|
message += cast::integral_to_string(position);
|
||||||
json_result.values["status_message"] = message;
|
json_result.values["status_message"] = message;
|
||||||
JSON::render(current_reply.content, json_result);
|
osrm::json::render(current_reply.content, json_result);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -124,7 +124,7 @@ void RequestHandler::handle_request(const http::request ¤t_request,
|
|||||||
json_result.values["status"] = 400;
|
json_result.values["status"] = 400;
|
||||||
std::string message = "Bad Request";
|
std::string message = "Bad Request";
|
||||||
json_result.values["status_message"] = message;
|
json_result.values["status_message"] = message;
|
||||||
JSON::render(current_reply.content, json_result);
|
osrm::json::render(current_reply.content, json_result);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// set headers
|
// set headers
|
||||||
@ -132,7 +132,7 @@ void RequestHandler::handle_request(const http::request ¤t_request,
|
|||||||
cast::integral_to_string(current_reply.content.size()));
|
cast::integral_to_string(current_reply.content.size()));
|
||||||
if ("gpx" == route_parameters.output_format)
|
if ("gpx" == route_parameters.output_format)
|
||||||
{ // gpx file
|
{ // gpx file
|
||||||
JSON::gpx_render(current_reply.content, json_result.values["route"]);
|
osrm::json::gpx_render(current_reply.content, json_result.values["route"]);
|
||||||
current_reply.headers.emplace_back("Content-Type",
|
current_reply.headers.emplace_back("Content-Type",
|
||||||
"application/gpx+xml; charset=UTF-8");
|
"application/gpx+xml; charset=UTF-8");
|
||||||
current_reply.headers.emplace_back("Content-Disposition",
|
current_reply.headers.emplace_back("Content-Disposition",
|
||||||
@ -140,14 +140,14 @@ void RequestHandler::handle_request(const http::request ¤t_request,
|
|||||||
}
|
}
|
||||||
else if (route_parameters.jsonp_parameter.empty())
|
else if (route_parameters.jsonp_parameter.empty())
|
||||||
{ // json file
|
{ // json file
|
||||||
JSON::render(current_reply.content, json_result);
|
osrm::json::render(current_reply.content, json_result);
|
||||||
current_reply.headers.emplace_back("Content-Type", "application/json; charset=UTF-8");
|
current_reply.headers.emplace_back("Content-Type", "application/json; charset=UTF-8");
|
||||||
current_reply.headers.emplace_back("Content-Disposition",
|
current_reply.headers.emplace_back("Content-Disposition",
|
||||||
"inline; filename=\"response.json\"");
|
"inline; filename=\"response.json\"");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // jsonp
|
{ // jsonp
|
||||||
JSON::render(current_reply.content, json_result);
|
osrm::json::render(current_reply.content, json_result);
|
||||||
current_reply.headers.emplace_back("Content-Type", "text/javascript; charset=UTF-8");
|
current_reply.headers.emplace_back("Content-Type", "text/javascript; charset=UTF-8");
|
||||||
current_reply.headers.emplace_back("Content-Disposition",
|
current_reply.headers.emplace_back("Content-Disposition",
|
||||||
"inline; filename=\"response.js\"");
|
"inline; filename=\"response.js\"");
|
||||||
|
@ -81,10 +81,10 @@ int main(int argc, const char *argv[])
|
|||||||
// target_coordinate
|
// target_coordinate
|
||||||
route_parameters.coordinates.emplace_back(52.513191 * COORDINATE_PRECISION,
|
route_parameters.coordinates.emplace_back(52.513191 * COORDINATE_PRECISION,
|
||||||
13.415852 * COORDINATE_PRECISION);
|
13.415852 * COORDINATE_PRECISION);
|
||||||
JSON::Object json_result;
|
osrm::json::Object json_result;
|
||||||
const int result_code = routing_machine.RunQuery(route_parameters, json_result);
|
const int result_code = routing_machine.RunQuery(route_parameters, json_result);
|
||||||
SimpleLogger().Write() << "http code: " << result_code;
|
SimpleLogger().Write() << "http code: " << result_code;
|
||||||
JSON::render(SimpleLogger().Write(), json_result);
|
osrm::json::render(SimpleLogger().Write(), json_result);
|
||||||
}
|
}
|
||||||
catch (std::exception ¤t_exception)
|
catch (std::exception ¤t_exception)
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
Copyright (c) 2014, Project OSRM, Dennis Luxen, others
|
Copyright (c) 2015, Project OSRM, Dennis Luxen, others
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
Redistribution and use in source and binary forms, with or without modification,
|
||||||
@ -35,7 +35,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
|
|
||||||
#include <osrm/json_container.hpp>
|
#include <osrm/json_container.hpp>
|
||||||
|
|
||||||
namespace JSON
|
namespace osrm
|
||||||
|
{
|
||||||
|
namespace json
|
||||||
{
|
{
|
||||||
|
|
||||||
struct Renderer : mapbox::util::static_visitor<>
|
struct Renderer : mapbox::util::static_visitor<>
|
||||||
@ -179,6 +181,6 @@ inline void render(std::vector<char> &out, const Object &object)
|
|||||||
mapbox::util::apply_visitor(ArrayRenderer(out), value);
|
mapbox::util::apply_visitor(ArrayRenderer(out), value);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace JSON
|
} // namespace json
|
||||||
|
} // namespace osrm
|
||||||
#endif // JSON_RENDERER_HPP
|
#endif // JSON_RENDERER_HPP
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
Copyright (c) 2013, Project OSRM, Dennis Luxen, others
|
Copyright (c) 2015, Project OSRM, Dennis Luxen, others
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
@ -32,7 +32,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
|
|
||||||
#include <osrm/json_container.hpp>
|
#include <osrm/json_container.hpp>
|
||||||
|
|
||||||
namespace JSON
|
namespace osrm
|
||||||
|
{
|
||||||
|
namespace json
|
||||||
{
|
{
|
||||||
|
|
||||||
struct XMLToArrayRenderer : mapbox::util::static_visitor<>
|
struct XMLToArrayRenderer : mapbox::util::static_visitor<>
|
||||||
@ -135,6 +137,6 @@ template <class JSONObject> inline void gpx_render(std::vector<char> &out, const
|
|||||||
const std::string footer{"</rte></gpx>"};
|
const std::string footer{"</rte></gpx>"};
|
||||||
out.insert(out.end(), footer.begin(), footer.end());
|
out.insert(out.end(), footer.begin(), footer.end());
|
||||||
}
|
}
|
||||||
} // namespace JSON
|
} // namespace json
|
||||||
|
} // namespace osrm
|
||||||
#endif // XML_RENDERER_HPP
|
#endif // XML_RENDERER_HPP
|
||||||
|
Loading…
Reference in New Issue
Block a user