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

48 lines
1.3 KiB
C++

#ifndef ENGINE_API_BASE_PARAMETERS_HPP
#define ENGINE_API_BASE_PARAMETERS_HPP
#include "engine/hint.hpp"
#include "engine/bearing.hpp"
#include "util/coordinate.hpp"
#include <boost/optional.hpp>
#include <vector>
#include <algorithm>
namespace osrm
{
namespace engine
{
namespace api
{
struct BaseParameters
{
std::vector<util::Coordinate> coordinates;
std::vector<boost::optional<Hint>> hints;
std::vector<boost::optional<double>> radiuses;
std::vector<boost::optional<Bearing>> bearings;
// FIXME add validation for invalid bearing values
bool IsValid() const
{
return (hints.empty() || hints.size() == coordinates.size()) &&
(bearings.empty() || bearings.size() == coordinates.size()) &&
(radiuses.empty() || radiuses.size() == coordinates.size()) &&
std::all_of(bearings.begin(), bearings.end(),
[](const boost::optional<Bearing> bearing_and_range)
{
if (bearing_and_range)
{
return bearing_and_range->IsValid();
}
return true;
});
}
};
}
}
}
#endif // ROUTE_PARAMETERS_HPP