+ /**
+ * Get the runway begining point - this is syntatic sugar, equivalent to
+ * calling pointOnCenterline(0.0);
+ */
+ SGGeod begin() const;
+
+ /**
+ * Get the (possibly displaced) threshold point.
+ */
+ SGGeod threshold() const;
+
+ /**
+ * Get the 'far' end - this is equivalent to calling
+ * pointOnCenterline(lengthFt());
+ */
+ SGGeod end() const;
+
+ double displacedThresholdM() const
+ { return _displ_thresh * SG_FEET_TO_METER; }
+
+ double stopwayM() const
+ { return _stopway * SG_FEET_TO_METER; }
+
+ /**
+ * Airport this runway is located at
+ */
+ FGAirport* airport() const
+ { return _airport; }
+
+ // FIXME - should die once airport / runway creation is cleaned up
+ void setAirport(FGAirport* aAirport)
+ { _airport = aAirport; }
+
+ FGNavRecord* ILS() const { return _ils; }
+ void setILS(FGNavRecord* nav) { _ils = nav; }
+
+ FGRunway* reciprocalRunway() const
+ { return _reciprocal; }
+ void setReciprocalRunway(FGRunway* other);
+
+ /**
+ * Helper to process property data loaded from an ICAO.threshold.xml file
+ */
+ void processThreshold(SGPropertyNode* aThreshold);