20#ifndef FG_NAVAID_PROCEDURE_HXX
21#define FG_NAVAID_PROCEDURE_HXX
25#include <simgear/math/sg_types.hxx>
53 virtual std::string
ident()
const
101 void setPrimary(
const WayptVec& aWps);
165 void setPrimaryAndMissed(
const WayptVec& aPrimary,
const WayptVec& aMissed);
171 typedef std::map<WayptRef, TransitionRef> WptTransitionMap;
172 WptTransitionMap _transitions;
244 typedef std::map<WayptRef, TransitionRef> WptTransitionMap;
245 WptTransitionMap _enrouteTransitions;
268 SID(
const std::string& aIdent,
FGAirport* apt);
288 STAR(
const std::string& aIdent,
FGAirport* apt);
SGSharedPtr< FGRunway > FGRunwayRef
Describe an approach procedure, including the missed approach segment.
Transition * findTransitionByName(const std::string &aIdent) const
friend class NavdataVisitor
virtual FGAirport * airport() const
static Approach * createTempApproach(const std::string &aIdent, FGRunway *aRunway, const WayptVec &aPath)
const WayptVec & missed() const
const WayptVec & primary() const
static bool isApproach(ProcedureType ty)
bool routeFromVectors(WayptVec &aWps)
Build route as above, but ignore transitions, and assume radar vectoring to the start of main approac...
string_list transitionIdents() const
virtual RunwayVec runways() const
virtual ProcedureType type() const
bool routeWithTransition(FGRunwayRef runway, Transition *trans, WayptVec &aWps)
bool route(FGRunwayRef runway, WayptRef aIAF, WayptVec &aWps)
Build a route from a valid IAF to the runway, including the missed segment.
virtual bool isForRunway(const FGRunway *aWay) const
Predicate, test if this procedure applies to the requested runway.
friend class NavdataVisitor
virtual bool route(FGRunwayRef aWay, Transition *trans, WayptVec &aPath)=0
Find a path between the runway and enroute structure.
virtual WayptFlag flagType() const =0
std::map< FGRunwayRef, TransitionRef > RunwayTransitionMap
ArrivalDeparture(const std::string &aIdent, FGAirport *apt)
RunwayTransitionMap _runways
virtual FGAirport * airport() const
void addRunway(FGRunwayRef aRwy)
string_list transitionIdents() const
bool commonRoute(Transition *t, WayptVec &aPath, FGRunwayRef aRwy)
void setCommon(const WayptVec &aWps)
const WayptVec & common() const
Transition * findTransitionByEnroute(FGPositioned *aEnroute) const
WayptRef findBestTransition(const SGGeod &aPos) const
Given an enroute location, find the best enroute transition point for this arrival/departure.
virtual RunwayVec runways() const
Transition * findTransitionByName(const std::string &aIdent) const
Find an enroute transition waypoint by identifier.
virtual ProcedureType type() const =0
virtual RunwayVec runways() const
virtual std::string ident() const
virtual FGAirport * airport() const =0
Procedure(const std::string &aIdent)
friend class NavdataVisitor
virtual bool route(FGRunwayRef aWay, Transition *aTrans, WayptVec &aPath)
Find a path between the runway and enroute structure.
virtual ProcedureType type() const
static SID * createTempSID(const std::string &aIdent, FGRunway *aRunway, const WayptVec &aPath)
virtual WayptFlag flagType() const
friend class NavdataVisitor
virtual bool route(FGRunwayRef aWay, Transition *aTrans, WayptVec &aPath)
Find a path between the runway and enroute structure.
virtual WayptFlag flagType() const
virtual ProcedureType type() const
Encapsulate a transition segment.
friend class NavdataVisitor
bool route(WayptVec &aPath)
virtual ProcedureType type() const
WayptRef procedureEnd() const
Return the procedure end of the transition.
virtual FGAirport * airport() const
WayptRef enroute() const
Return the enroute end of the transition.
Procedure * parent() const
Abstract base class for waypoints (and things that are treated similarly by navigation systems).
std::vector< std::string > string_list
FlightPlan.hxx - defines a full flight-plan object, including departure, cruise, arrival information ...
SGSharedPtr< Transition > TransitionRef
SGSharedPtr< Waypt > WayptRef
std::vector< WayptRef > WayptVec
@ PROCEDURE_RUNWAY_TRANSITION
@ PROCEDURE_APPROACH_RNAV
std::vector< FGRunwayRef > RunwayVec