osrm-backend/include/engine/api/route_parameters.hpp
2016-04-05 22:58:32 +02:00

59 lines
1.3 KiB
C++

#ifndef ENGINE_API_ROUTE_PARAMETERS_HPP
#define ENGINE_API_ROUTE_PARAMETERS_HPP
#include "engine/api/base_parameters.hpp"
#include <vector>
namespace osrm
{
namespace engine
{
namespace api
{
struct RouteParameters : public BaseParameters
{
enum class GeometriesType
{
Polyline,
GeoJSON
};
enum class OverviewType
{
Simplified,
Full,
False
};
RouteParameters() = default;
template<typename... Args>
RouteParameters(const bool steps_,
const bool alternative_,
const GeometriesType geometries_,
const OverviewType overview_,
std::vector<boost::optional<bool>> uturns_, Args... args_)
: BaseParameters{std::forward<Args>(args_)...}, steps{steps_}, alternative{alternative_}, geometries{geometries_},
overview{overview_}, uturns{std::move(uturns_)}
{
}
bool steps = true;
bool alternative = true;
GeometriesType geometries = GeometriesType::Polyline;
OverviewType overview = OverviewType::Simplified;
std::vector<boost::optional<bool>> uturns;
bool IsValid() const
{
return coordinates.size() >= 2 && BaseParameters::IsValid() &&
(uturns.empty() || uturns.size() == coordinates.size());
}
};
}
}
}
#endif