#include <set>
#include <simgear/math/sg_types.hxx> // for string_list
-
+#include <Airports/airports_fwd.hxx>
#include <Navaids/route.hxx>
-#include <Airports/runways.hxx>
-
-typedef SGSharedPtr<FGRunway> FGRunwayRef;
namespace flightgear {
class Transition : public Procedure
{
public:
+ virtual ~Transition() { ; }
+
bool route(WayptVec& aPath);
Procedure* parent() const
WayptVec _primary;
};
+typedef SGSharedPtr<Transition> TransitionRef;
+
/**
* Describe an approach procedure, including the missed approach
* segment
class Approach : public Procedure
{
public:
+ virtual ~Approach() { ; }
+
FGRunwayRef runway()
{ return _runway; }
virtual ProcedureType type() const
{ return _type; }
+
+ static Approach* createTempApproach(const std::string& aIdent, FGRunway* aRunway, const WayptVec& aPath);
private:
friend class NavdataVisitor;
FGRunwayRef _runway;
ProcedureType _type;
- typedef std::map<WayptRef, Transition*> WptTransitionMap;
+ typedef std::map<WayptRef, TransitionRef> WptTransitionMap;
WptTransitionMap _transitions;
WayptVec _primary; // unify these?
ArrivalDeparture(const std::string& aIdent, FGAirport* apt);
-
void addRunway(FGRunwayRef aRwy);
- typedef std::map<FGRunwayRef, Transition*> RunwayTransitionMap;
+ typedef std::map<FGRunwayRef, TransitionRef> RunwayTransitionMap;
RunwayTransitionMap _runways;
virtual WayptFlag flagType() const = 0;
+
+ void setCommon(const WayptVec& aWps);
+
private:
friend class NavdataVisitor;
void addTransition(Transition* aTrans);
- void setCommon(const WayptVec& aWps);
-
void addRunwayTransition(FGRunwayRef aRwy, Transition* aTrans);
FGAirport* _airport;
WayptVec _common;
- typedef std::map<WayptRef, Transition*> WptTransitionMap;
+ typedef std::map<WayptRef, TransitionRef> WptTransitionMap;
WptTransitionMap _enrouteTransitions;
class SID : public ArrivalDeparture
{
-public:
+public:
+ virtual ~SID() { ; }
+
virtual bool route(FGRunwayRef aWay, Transition* aTrans, WayptVec& aPath);
virtual ProcedureType type() const
{ return PROCEDURE_SID; }
+ static SID* createTempSID(const std::string& aIdent, FGRunway* aRunway, const WayptVec& aPath);
protected:
virtual WayptFlag flagType() const
{ return WPT_DEPARTURE; }
class STAR : public ArrivalDeparture
{
-public:
+public:
+ virtual ~STAR() { ; }
+
virtual bool route(FGRunwayRef aWay, Transition* aTrans, WayptVec& aPath);
virtual ProcedureType type() const