]> git.mxchange.org Git - flightgear.git/blobdiff - src/Airports/simple.hxx
Add a *really* crude model of ITT, Oil Temp, and Oil Pressure. This
[flightgear.git] / src / Airports / simple.hxx
index 9e1927ee46c919c12225cf87de2ed9af5d818d30..d6c84a7b49a1e92368434f75eb31ccb7b63cef57 100644 (file)
@@ -4,7 +4,7 @@
 //
 // Written by Curtis Olson, started April 1998.
 //
-// Copyright (C) 1998  Curtis L. Olson  - curt@me.umn.edu
+// Copyright (C) 1998  Curtis L. Olson  - http://www.flightgear.org/~curt
 //
 // This program is free software; you can redistribute it and/or
 // modify it under the terms of the GNU General Public License as
 
 #include STL_STRING
 #include <map>
+#include <vector>
 
 SG_USING_STD(string);
 SG_USING_STD(map);
+SG_USING_STD(vector);
 
 
-class FGAirport {
-
-public:
-
+struct FGAirport {
     string id;
     double longitude;
     double latitude;
     double elevation;
     string code;
     string name;
-
-public:
-
-    FGAirport( const string& name = "",
-              double lon = 0.0,
-              double lat = 0.0,
-              double ele = 0.0 )
-       : id(name), longitude(lon), latitude(lat), elevation(ele) {}
-
-    bool operator < ( const FGAirport& a ) const {
-       return id < a.id;
-    }
-
+    bool has_metar;
 };
 
 typedef map < string, FGAirport > airport_map;
 typedef airport_map::iterator airport_map_iterator;
 typedef airport_map::const_iterator const_airport_map_iterator;
 
+typedef vector < FGAirport * > airport_list;
+
 
 class FGAirportList {
 
 private:
 
-    airport_map airports;
+    airport_map airports_by_id;
+    airport_list airports_array;
 
 public:
 
     // Constructor
-    FGAirportList( const stringfile );
+    FGAirportList( const string &airport_file, const string &metar_file );
 
     // Destructor
     ~FGAirportList();
@@ -94,6 +84,31 @@ public:
     // On success, airport data is returned thru "airport" pointer.
     // "airport" is not changed if "apt" is not found.
     FGAirport search( const string& id );
+
+    // search for the airport closest to the specified position
+    // (currently a linear inefficient search so it's probably not
+    // best to use this at runtime.)  If with_metar is true, then only
+    // return station id's marked as having metar data.
+    FGAirport search( double lon_deg, double lat_deg, bool with_metar );
+
+
+    /**
+     * Return the number of airports in the list.
+     */
+    int size() const;
+
+
+    /**
+     * Return a specific airport, by position.
+     */
+    const FGAirport *getAirport( int index ) const;
+
+
+    /**
+     * Mark the specified airport record as not having metar
+     */
+    void no_metar( const string &id );
+
 };