Do not modify the end iterator for parameter parsing, too
This commit is contained in:
parent
6f0b6a8158
commit
d3dbca374d
@ -30,7 +30,7 @@ using is_parameter_t =
|
|||||||
// Starts parsing and iter and modifies it until iter == end or parsing failed
|
// Starts parsing and iter and modifies it until iter == end or parsing failed
|
||||||
template <typename ParameterT,
|
template <typename ParameterT,
|
||||||
typename std::enable_if<detail::is_parameter_t<ParameterT>::value, int>::type = 0>
|
typename std::enable_if<detail::is_parameter_t<ParameterT>::value, int>::type = 0>
|
||||||
boost::optional<ParameterT> parseParameters(std::string::iterator &iter, std::string::iterator end);
|
boost::optional<ParameterT> parseParameters(std::string::iterator &iter, const std::string::iterator end);
|
||||||
|
|
||||||
// Copy on purpose because we need mutability
|
// Copy on purpose because we need mutability
|
||||||
template <typename ParameterT,
|
template <typename ParameterT,
|
||||||
|
@ -25,7 +25,7 @@ template <typename ParameterT,
|
|||||||
typename GrammarT,
|
typename GrammarT,
|
||||||
typename std::enable_if<detail::is_parameter_t<ParameterT>::value, int>::type = 0,
|
typename std::enable_if<detail::is_parameter_t<ParameterT>::value, int>::type = 0,
|
||||||
typename std::enable_if<detail::is_grammar_t<GrammarT>::value, int>::type = 0>
|
typename std::enable_if<detail::is_grammar_t<GrammarT>::value, int>::type = 0>
|
||||||
boost::optional<ParameterT> parseParameters(std::string::iterator &iter, std::string::iterator end)
|
boost::optional<ParameterT> parseParameters(std::string::iterator &iter, const std::string::iterator end)
|
||||||
{
|
{
|
||||||
GrammarT grammar;
|
GrammarT grammar;
|
||||||
const auto result = boost::spirit::qi::parse(iter, end, grammar);
|
const auto result = boost::spirit::qi::parse(iter, end, grammar);
|
||||||
@ -40,21 +40,21 @@ boost::optional<ParameterT> parseParameters(std::string::iterator &iter, std::st
|
|||||||
|
|
||||||
template <>
|
template <>
|
||||||
boost::optional<engine::api::RouteParameters> parseParameters(std::string::iterator &iter,
|
boost::optional<engine::api::RouteParameters> parseParameters(std::string::iterator &iter,
|
||||||
std::string::iterator end)
|
const std::string::iterator end)
|
||||||
{
|
{
|
||||||
return detail::parseParameters<engine::api::RouteParameters, RouteParametersGrammar>(iter, end);
|
return detail::parseParameters<engine::api::RouteParameters, RouteParametersGrammar>(iter, end);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
boost::optional<engine::api::TableParameters> parseParameters(std::string::iterator &iter,
|
boost::optional<engine::api::TableParameters> parseParameters(std::string::iterator &iter,
|
||||||
std::string::iterator end)
|
const std::string::iterator end)
|
||||||
{
|
{
|
||||||
return detail::parseParameters<engine::api::TableParameters, TableParametersGrammar>(iter, end);
|
return detail::parseParameters<engine::api::TableParameters, TableParametersGrammar>(iter, end);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
boost::optional<engine::api::NearestParameters> parseParameters(std::string::iterator &iter,
|
boost::optional<engine::api::NearestParameters> parseParameters(std::string::iterator &iter,
|
||||||
std::string::iterator end)
|
const std::string::iterator end)
|
||||||
{
|
{
|
||||||
return detail::parseParameters<engine::api::NearestParameters, NearestParametersGrammar>(iter,
|
return detail::parseParameters<engine::api::NearestParameters, NearestParametersGrammar>(iter,
|
||||||
end);
|
end);
|
||||||
@ -62,21 +62,21 @@ boost::optional<engine::api::NearestParameters> parseParameters(std::string::ite
|
|||||||
|
|
||||||
template <>
|
template <>
|
||||||
boost::optional<engine::api::TripParameters> parseParameters(std::string::iterator &iter,
|
boost::optional<engine::api::TripParameters> parseParameters(std::string::iterator &iter,
|
||||||
std::string::iterator end)
|
const std::string::iterator end)
|
||||||
{
|
{
|
||||||
return detail::parseParameters<engine::api::TripParameters, TripParametersGrammar>(iter, end);
|
return detail::parseParameters<engine::api::TripParameters, TripParametersGrammar>(iter, end);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
boost::optional<engine::api::MatchParameters> parseParameters(std::string::iterator &iter,
|
boost::optional<engine::api::MatchParameters> parseParameters(std::string::iterator &iter,
|
||||||
std::string::iterator end)
|
const std::string::iterator end)
|
||||||
{
|
{
|
||||||
return detail::parseParameters<engine::api::MatchParameters, MatchParametersGrammar>(iter, end);
|
return detail::parseParameters<engine::api::MatchParameters, MatchParametersGrammar>(iter, end);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
boost::optional<engine::api::TileParameters> parseParameters(std::string::iterator &iter,
|
boost::optional<engine::api::TileParameters> parseParameters(std::string::iterator &iter,
|
||||||
std::string::iterator end)
|
const std::string::iterator end)
|
||||||
{
|
{
|
||||||
return detail::parseParameters<engine::api::TileParameters, TileParametersGrammar>(iter, end);
|
return detail::parseParameters<engine::api::TileParameters, TileParametersGrammar>(iter, end);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user