]> git.mxchange.org Git - flightgear.git/blobdiff - src/Navaids/fixlist.hxx
James Turner:
[flightgear.git] / src / Navaids / fixlist.hxx
index 02e6e8a9681d65ffe104d529af5b79b3c91ca890..7377769712d79a02d3daa673798fe464e9967925 100644 (file)
@@ -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$
 
 
 #include <map>
 #include <vector>
-#include STL_STRING
+#include <string>
 
-#include "fix.hxx"
+class FGFix;
 
-SG_USING_STD(map);
-SG_USING_STD(vector);
-SG_USING_STD(string);
+using std::multimap;
+using std::vector;
+using std::string;
 
-// TODO - fix names may be globally non-unique.  Allow for this.
-typedef map < string, FGFix > fix_map_type;
+// fix names may be globally non-unique.  Allow for this.
+typedef multimap < string, FGFix* > fix_map_type;
 typedef fix_map_type::iterator fix_map_iterator;
 typedef fix_map_type::const_iterator fix_map_const_iterator;
 
+class FGIdentOrdering; // FIXME, currently declared in Airports/simple.hxx
+
 class FGFixList {
 
     fix_map_type fixlist;
@@ -56,22 +58,24 @@ public:
     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 
+    bool query( const string& ident, FGFix* &f );
+
+    const FGFix* search(const string& ident);
+
+    // 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 );
+    const FGFix* findFirstByIdent( const string& ident, FGIdentOrdering* aOrder = NULL);
 
     // query the database for the specified fix, lon and lat are
     // in degrees, elev is in meters
     bool query_and_offset( const string& ident, double lon, double lat,
-                           double elev, FGFix *f, double *heading,
+                           double elev, FGFix* &f, double *heading,
                            double *dist );
-                                                  
+
     // Return a pointer to the master fixlist
-    inline const fix_map_type* getFixList() { return(&fixlist); }
+   // inline const fix_map_type* getFixList() { return(&fixlist); }
 };