#endif
#include <simgear/compiler.h>
+#include <simgear/sg_inlines.h>
-#include STL_STRING
-#include <vector>
+#include <string>
+#include <memory> // for std::auto_ptr
+#include "gnnode.hxx"
+#include <Airports/airports_fwd.hxx>
-SG_USING_STD(string);
-SG_USING_STD(vector);
-
-double processPosition(const string& pos);
-
-class FGParking {
+class FGParking : public FGTaxiNode
+{
private:
- double latitude;
- double longitude;
- double heading;
- double radius;
- int index;
- string parkingName;
- string type;
- string airlineCodes;
-
- bool available;
+ const double heading;
+ const double radius;
+ const std::string parkingName;
+ const std::string type;
+ const std::string airlineCodes;
+ FGTaxiNodeRef pushBackPoint;
+ SG_DISABLE_COPY(FGParking);
+public:
+ FGParking(int index,
+ const SGGeod& pos,
+ double heading, double radius,
+ const std::string& name, const std::string& type,
+ const std::string& codes);
+ virtual ~FGParking();
+ double getHeading () const { return heading; };
+ double getRadius () const { return radius; };
-public:
- FGParking() { available = true;};
- //FGParking(FGParking &other);
- FGParking(double lat,
- double lon,
- double hdg,
- double rad,
- int idx,
- const string& name,
- const string& tpe,
- const string& codes);
- void setLatitude (const string& lat) { latitude = processPosition(lat); };
- void setLongitude(const string& lon) { longitude = processPosition(lon); };
- void setHeading (double hdg) { heading = hdg; };
- void setRadius (double rad) { radius = rad; };
- void setIndex (int idx) { index = idx; };
- void setName (const string& name) { parkingName = name; };
- void setType (const string& tpe) { type = tpe; };
- void setCodes (const string& codes){ airlineCodes= codes;};
+ std::string getType () const { return type; };
+ std::string getCodes () const { return airlineCodes;};
+ std::string getName () const { return parkingName; };
- bool isAvailable () { return available;};
- void setAvailable(bool val) { available = val; };
-
- double getLatitude () { return latitude; };
- double getLongitude() { return longitude; };
- double getHeading () { return heading; };
- double getRadius () { return radius; };
- int getIndex () { return index; };
- string getType () { return type; };
- string getCodes () { return airlineCodes;};
- string getName () { return parkingName; };
+ // TODO do parkings have different name and ident?
+ virtual const std::string& name() const { return parkingName; }
- bool operator< (const FGParking &other) const {return radius < other.radius; };
-};
+ void setPushBackPoint(const FGTaxiNodeRef& node);
+ FGTaxiNodeRef getPushBackPoint () { return pushBackPoint; };
-typedef vector<FGParking> FGParkingVec;
-typedef vector<FGParking>::iterator FGParkingVecIterator;
-typedef vector<FGParking>::const_iterator FGParkingVecConstIterator;
+ bool operator< (const FGParking &other) const {
+ return radius < other.radius; };
+};
#endif