deduplicate code for roundabout handling
This commit is contained in:
parent
043a1446e1
commit
0e4061f858
@ -2,6 +2,7 @@
|
|||||||
#define OSRM_ENGINE_GUIDANCE_TOOLKIT_HPP_
|
#define OSRM_ENGINE_GUIDANCE_TOOLKIT_HPP_
|
||||||
|
|
||||||
#include "extractor/guidance/turn_instruction.hpp"
|
#include "extractor/guidance/turn_instruction.hpp"
|
||||||
|
#include "util/guidance/toolkit.hpp"
|
||||||
#include "util/bearing.hpp"
|
#include "util/bearing.hpp"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
@ -13,6 +14,10 @@ namespace engine
|
|||||||
namespace guidance
|
namespace guidance
|
||||||
{
|
{
|
||||||
|
|
||||||
|
using util::guidance::entersRoundabout;
|
||||||
|
using util::guidance::leavesRoundabout;
|
||||||
|
using util::guidance::staysOnRoundabout;
|
||||||
|
|
||||||
// Silent Turn Instructions are not to be mentioned to the outside world but
|
// Silent Turn Instructions are not to be mentioned to the outside world but
|
||||||
inline bool isSilent(const extractor::guidance::TurnInstruction instruction)
|
inline bool isSilent(const extractor::guidance::TurnInstruction instruction)
|
||||||
{
|
{
|
||||||
@ -21,34 +26,6 @@ inline bool isSilent(const extractor::guidance::TurnInstruction instruction)
|
|||||||
instruction.type == extractor::guidance::TurnType::StayOnRoundabout;
|
instruction.type == extractor::guidance::TurnType::StayOnRoundabout;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool entersRoundabout(const extractor::guidance::TurnInstruction instruction)
|
|
||||||
{
|
|
||||||
return (instruction.type == extractor::guidance::TurnType::EnterRoundabout ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::EnterRotary ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::EnterRoundaboutIntersection ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::EnterRoundaboutAtExit ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::EnterRotaryAtExit ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::EnterRoundaboutIntersectionAtExit ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::EnterAndExitRoundabout ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::EnterAndExitRotary ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::EnterAndExitRotary);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool leavesRoundabout(const extractor::guidance::TurnInstruction instruction)
|
|
||||||
{
|
|
||||||
return (instruction.type == extractor::guidance::TurnType::ExitRoundabout ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::ExitRotary ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::ExitRoundaboutIntersection ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::EnterAndExitRoundabout ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::EnterAndExitRotary ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::EnterAndExitRoundaboutIntersection);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool staysOnRoundabout(const extractor::guidance::TurnInstruction instruction)
|
|
||||||
{
|
|
||||||
return instruction.type == extractor::guidance::TurnType::StayOnRoundabout;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline extractor::guidance::DirectionModifier::Enum angleToDirectionModifier(const double bearing)
|
inline extractor::guidance::DirectionModifier::Enum angleToDirectionModifier(const double bearing)
|
||||||
{
|
{
|
||||||
if (bearing < 135)
|
if (bearing < 135)
|
||||||
|
@ -40,6 +40,8 @@ using util::guidance::LaneTupelIdPair;
|
|||||||
using LaneDataIdMap = std::unordered_map<LaneTupelIdPair, LaneDataID, boost::hash<LaneTupelIdPair>>;
|
using LaneDataIdMap = std::unordered_map<LaneTupelIdPair, LaneDataID, boost::hash<LaneTupelIdPair>>;
|
||||||
|
|
||||||
using util::guidance::angularDeviation;
|
using util::guidance::angularDeviation;
|
||||||
|
using util::guidance::entersRoundabout;
|
||||||
|
using util::guidance::leavesRoundabout;
|
||||||
|
|
||||||
namespace detail
|
namespace detail
|
||||||
{
|
{
|
||||||
@ -531,29 +533,6 @@ trimLaneString(std::string lane_string, std::int32_t count_left, std::int32_t co
|
|||||||
return lane_string;
|
return lane_string;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool entersRoundabout(const extractor::guidance::TurnInstruction instruction)
|
|
||||||
{
|
|
||||||
return (instruction.type == extractor::guidance::TurnType::EnterRoundabout ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::EnterRotary ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::EnterRoundaboutIntersection ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::EnterRoundaboutAtExit ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::EnterRotaryAtExit ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::EnterRoundaboutIntersectionAtExit ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::EnterAndExitRoundabout ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::EnterAndExitRotary ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::EnterAndExitRotary);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool leavesRoundabout(const extractor::guidance::TurnInstruction instruction)
|
|
||||||
{
|
|
||||||
return (instruction.type == extractor::guidance::TurnType::ExitRoundabout ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::ExitRotary ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::ExitRoundaboutIntersection ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::EnterAndExitRoundabout ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::EnterAndExitRotary ||
|
|
||||||
instruction.type == extractor::guidance::TurnType::EnterAndExitRoundaboutIntersection);
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace guidance
|
} // namespace guidance
|
||||||
} // namespace extractor
|
} // namespace extractor
|
||||||
} // namespace osrm
|
} // namespace osrm
|
||||||
|
@ -101,6 +101,34 @@ inline bool isRightTurn(const extractor::guidance::TurnInstruction instruction)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline bool entersRoundabout(const extractor::guidance::TurnInstruction instruction)
|
||||||
|
{
|
||||||
|
return (instruction.type == extractor::guidance::TurnType::EnterRoundabout ||
|
||||||
|
instruction.type == extractor::guidance::TurnType::EnterRotary ||
|
||||||
|
instruction.type == extractor::guidance::TurnType::EnterRoundaboutIntersection ||
|
||||||
|
instruction.type == extractor::guidance::TurnType::EnterRoundaboutAtExit ||
|
||||||
|
instruction.type == extractor::guidance::TurnType::EnterRotaryAtExit ||
|
||||||
|
instruction.type == extractor::guidance::TurnType::EnterRoundaboutIntersectionAtExit ||
|
||||||
|
instruction.type == extractor::guidance::TurnType::EnterAndExitRoundabout ||
|
||||||
|
instruction.type == extractor::guidance::TurnType::EnterAndExitRotary ||
|
||||||
|
instruction.type == extractor::guidance::TurnType::EnterAndExitRotary);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool leavesRoundabout(const extractor::guidance::TurnInstruction instruction)
|
||||||
|
{
|
||||||
|
return (instruction.type == extractor::guidance::TurnType::ExitRoundabout ||
|
||||||
|
instruction.type == extractor::guidance::TurnType::ExitRotary ||
|
||||||
|
instruction.type == extractor::guidance::TurnType::ExitRoundaboutIntersection ||
|
||||||
|
instruction.type == extractor::guidance::TurnType::EnterAndExitRoundabout ||
|
||||||
|
instruction.type == extractor::guidance::TurnType::EnterAndExitRotary ||
|
||||||
|
instruction.type == extractor::guidance::TurnType::EnterAndExitRoundaboutIntersection);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool staysOnRoundabout(const extractor::guidance::TurnInstruction instruction)
|
||||||
|
{
|
||||||
|
return instruction.type == extractor::guidance::TurnType::StayOnRoundabout;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace guidance
|
} // namespace guidance
|
||||||
} // namespace util
|
} // namespace util
|
||||||
} // namespace osrm
|
} // namespace osrm
|
||||||
|
Loading…
Reference in New Issue
Block a user