]> git.mxchange.org Git - flightgear.git/blobdiff - src/Navaids/fixlist.hxx
make that __MWERKS__ :-}
[flightgear.git] / src / Navaids / fixlist.hxx
index 968e90faf32de0c489355cdb01414fe269bcb2d9..dbf0ef2c579f9b0e1ef6c60dedc0ef246d0792b8 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Written by Curtis Olson, started April 2000.
 //
-// Copyright (C) 2000  Curtis L. Olson - curt@flightgear.org
+// Copyright (C) 2000  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
@@ -16,7 +16,7 @@
 //
 // You should have received a copy of the GNU General Public License
 // along with this program; if not, write to the Free Software
-// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 //
 // $Id$
 
@@ -26,7 +26,7 @@
 
 
 #include <simgear/compiler.h>
-#include <simgear/misc/fgpath.hxx>
+#include <simgear/misc/sg_path.hxx>
 
 #include <map>
 #include <vector>
 
 #include "fix.hxx"
 
-FG_USING_STD(map);
-FG_USING_STD(vector);
-FG_USING_STD(string);
+SG_USING_STD(map);
+SG_USING_STD(vector);
+SG_USING_STD(string);
 
+// TODO - fix names may be globally non-unique.  Allow for this.
+typedef map < string, FGFix > fix_map_type;
+typedef fix_map_type::iterator fix_map_iterator;
+typedef fix_map_type::const_iterator fix_map_const_iterator;
 
 class FGFixList {
 
-    // typedef map < string, FGFix, less<string> > fix_map_type;
-    typedef map < string, FGFix > fix_map_type;
-    typedef fix_map_type::iterator fix_map_iterator;
-    typedef fix_map_type::const_iterator fix_map_const_iterator;
-
     fix_map_type fixlist;
 
 public:
@@ -54,16 +53,26 @@ public:
     ~FGFixList();
 
     // load the navaids and build the map
-    bool init( FGPath path );
-
-    // query the database for the specified frequency, lon and lat are
+    bool init( SGPath path );
+
+    // query the database for the specified fix
+    bool query( const string& ident, FGFix *f );
+       
+    // Find fix of requested type with closest exact or following ident 
+    // (by ACSII values) to that supplied (ie. a lower-bound lookup).
+    // Supplying true for exact forces only exact matches to be returned (similar to above function)
+    // Returns NULL if no match found.
+    const FGFix* findFirstByIdent( const string& ident, bool exact = false );
+
+    // query the database for the specified fix, lon and lat are
     // in degrees, elev is in meters
-    bool query( const string& ident, double lon, double lat, double elev,
-               FGFix *f, double *heading, double *dist);
+    bool query_and_offset( const string& ident, double lon, double lat,
+                           double elev, FGFix *f, double *heading,
+                           double *dist );
+                                                  
+    // Return a pointer to the master fixlist
+    inline const fix_map_type* getFixList() { return(&fixlist); }
 };
 
 
-extern FGFixList *current_fixlist;
-
-
 #endif // _FG_FIXLIST_HXX