From: curt Date: Fri, 21 Apr 2000 16:03:36 +0000 (+0000) Subject: Renamed files. X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=6b7353598b9503ac34fb2caaab48db6a459b7ffd;p=flightgear.git Renamed files. --- diff --git a/src/Navaids/Makefile.am b/src/Navaids/Makefile.am index 58b602bac..f5229c05c 100644 --- a/src/Navaids/Makefile.am +++ b/src/Navaids/Makefile.am @@ -2,7 +2,7 @@ noinst_LIBRARIES = libNavAids.a noinst_PROGRAMS = testnavs -libNavAids_a_SOURCES = navaid.hxx navaids.hxx navaids.cxx +libNavAids_a_SOURCES = nav.hxx navlist.hxx navlist.cxx testnavs_SOURCES = testnavs.cxx testnavs_LDADD = libNavAids.a -lsgdebug -lsgmath -lsgmisc -lz diff --git a/src/Navaids/nav.hxx b/src/Navaids/nav.hxx new file mode 100644 index 000000000..b6a110ab7 --- /dev/null +++ b/src/Navaids/nav.hxx @@ -0,0 +1,102 @@ +// navaid.hxx -- navaid class +// +// Written by Curtis Olson, started April 2000. +// +// Copyright (C) 2000 Curtis L. Olson - curt@flightgear.org +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License as +// published by the Free Software Foundation; either version 2 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// 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. +// +// $Id$ + + +#ifndef _FG_NAVAID_HXX +#define _FG_NAVAID_HXX + + +#include +#include + +#ifdef FG_HAVE_STD_INCLUDES +# include +#elif defined( FG_HAVE_NATIVE_SGI_COMPILERS ) +# include +#elif defined( __BORLANDC__ ) +# include +#else +# include +#endif + +#if ! defined( FG_HAVE_NATIVE_SGI_COMPILERS ) +FG_USING_STD(istream); +#endif + + +class FGNavaid { + + char type; + double lon, lat; + double elev; + int freq; + int range; + bool dme; + char ident[5]; + +public: + + inline FGNavaid(void) {} + inline ~FGNavaid(void) {} + + inline char get_type() const { return type; } + inline double get_lon() const { return lon; } + inline double get_lat() const { return lat; } + inline double get_elev() const { return elev; } + inline int get_freq() const { return freq; } + inline int get_range() const { return range; } + inline bool get_dme() const { return dme; } + inline char *get_ident() { return ident; } + + inline void set_type( char t ) { type = t; } + inline void set_lon( double l ) { lon = l; } + inline void set_lat( double l ) { lat = l; } + inline void set_elev( double e ) { elev = e; } + inline void set_freq( int f ) { freq = f; } + inline void set_range( int r ) { range = r; } + inline void set_dme( bool b ) { dme = b; } + inline void set_ident( char *i ) { strncpy( ident, i, 5 ); } + + friend istream& operator>> ( istream&, FGNavaid& ); +}; + + +inline istream& +operator >> ( istream& in, FGNavaid& n ) +{ + double f; + char c; + in >> n.type >> n.lat >> n.lon >> n.elev >> f >> n.range + >> c >> n.ident; + + n.freq = (int)(f * 100.0); + if ( c == 'Y' ) { + n.dme = true; + } else { + n.dme = false; + } + + return in >> skipeol; +} + + +#endif // _FG_NAVAID_HXX diff --git a/src/Navaids/navaid.hxx b/src/Navaids/navaid.hxx deleted file mode 100644 index b6a110ab7..000000000 --- a/src/Navaids/navaid.hxx +++ /dev/null @@ -1,102 +0,0 @@ -// navaid.hxx -- navaid class -// -// Written by Curtis Olson, started April 2000. -// -// Copyright (C) 2000 Curtis L. Olson - curt@flightgear.org -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License as -// published by the Free Software Foundation; either version 2 of the -// License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. -// -// 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. -// -// $Id$ - - -#ifndef _FG_NAVAID_HXX -#define _FG_NAVAID_HXX - - -#include -#include - -#ifdef FG_HAVE_STD_INCLUDES -# include -#elif defined( FG_HAVE_NATIVE_SGI_COMPILERS ) -# include -#elif defined( __BORLANDC__ ) -# include -#else -# include -#endif - -#if ! defined( FG_HAVE_NATIVE_SGI_COMPILERS ) -FG_USING_STD(istream); -#endif - - -class FGNavaid { - - char type; - double lon, lat; - double elev; - int freq; - int range; - bool dme; - char ident[5]; - -public: - - inline FGNavaid(void) {} - inline ~FGNavaid(void) {} - - inline char get_type() const { return type; } - inline double get_lon() const { return lon; } - inline double get_lat() const { return lat; } - inline double get_elev() const { return elev; } - inline int get_freq() const { return freq; } - inline int get_range() const { return range; } - inline bool get_dme() const { return dme; } - inline char *get_ident() { return ident; } - - inline void set_type( char t ) { type = t; } - inline void set_lon( double l ) { lon = l; } - inline void set_lat( double l ) { lat = l; } - inline void set_elev( double e ) { elev = e; } - inline void set_freq( int f ) { freq = f; } - inline void set_range( int r ) { range = r; } - inline void set_dme( bool b ) { dme = b; } - inline void set_ident( char *i ) { strncpy( ident, i, 5 ); } - - friend istream& operator>> ( istream&, FGNavaid& ); -}; - - -inline istream& -operator >> ( istream& in, FGNavaid& n ) -{ - double f; - char c; - in >> n.type >> n.lat >> n.lon >> n.elev >> f >> n.range - >> c >> n.ident; - - n.freq = (int)(f * 100.0); - if ( c == 'Y' ) { - n.dme = true; - } else { - n.dme = false; - } - - return in >> skipeol; -} - - -#endif // _FG_NAVAID_HXX diff --git a/src/Navaids/navaids.cxx b/src/Navaids/navaids.cxx deleted file mode 100644 index e67b52c69..000000000 --- a/src/Navaids/navaids.cxx +++ /dev/null @@ -1,119 +0,0 @@ -// navaids.cxx -- navaids management class -// -// Written by Curtis Olson, started April 2000. -// -// Copyright (C) 2000 Curtis L. Olson - curt@flightgear.org -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License as -// published by the Free Software Foundation; either version 2 of the -// License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. -// -// 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. -// -// $Id$ - - -#include -#include -#include - -#include "navaids.hxx" - - -// Constructor -FGNavaids::FGNavaids( void ) { -} - - -// Destructor -FGNavaids::~FGNavaids( void ) { -} - - -// load the navaids and build the map -bool FGNavaids::init( FGPath path ) { - FGNavaid n; - - navaids.erase( navaids.begin(), navaids.end() ); - - fg_gzifstream in( path.str() ); - if ( !in.is_open() ) { - FG_LOG( FG_GENERAL, FG_ALERT, "Cannot open file: " << path.str() ); - exit(-1); - } - - // read in each line of the file - - in >> skipeol; - in >> skipcomment; - -#ifdef __MWERKS__ - - char c = 0; - while ( in.get(c) && c != '\0' && n.get_type() != '[' ) { - in.putback(c); - in >> n; - if ( n.get_type() != '[' ) { - navaids[n.get_freq()].push_back(n); - } - in >> skipcomment; - } - -#else - - while ( ! in.eof() && n.get_type() != '[' ) { - in >> n; - /* cout << "id = " << n.get_ident() << endl; - cout << " type = " << n.get_type() << endl; - cout << " lon = " << n.get_lon() << endl; - cout << " lat = " << n.get_lat() << endl; - cout << " elev = " << n.get_elev() << endl; - cout << " freq = " << n.get_freq() << endl; - cout << " range = " << n.get_range() << endl; */ - if ( n.get_type() != '[' ) { - navaids[n.get_freq()].push_back(n); - } - in >> skipcomment; - } - -#endif - - return true; -} - - -// query the database for the specified frequency, lon and lat are in -// degrees, elev is in meters -bool FGNavaids::query( double lon, double lat, double elev, double freq, - FGNavaid *n, double *heading, double *dist ) -{ - nav_list_type stations = navaids[(int)(freq*100.0)]; - - nav_list_iterator current = stations.begin(); - nav_list_iterator last = stations.end(); - - double az1, az2, s; - for ( ; current != last ; ++current ) { - // cout << "testing " << current->get_ident() << endl; - geo_inverse_wgs_84( elev, lat, lon, - current->get_lat(), current->get_lon(), - &az1, &az2, &s ); - // cout << " dist = " << s << endl; - if ( s < ( current->get_range() * NM_TO_METER ) ) { - *n = *current; - *heading = az2; - *dist = s; - return true; - } - } - - return false; -} diff --git a/src/Navaids/navaids.hxx b/src/Navaids/navaids.hxx deleted file mode 100644 index f537ce66d..000000000 --- a/src/Navaids/navaids.hxx +++ /dev/null @@ -1,68 +0,0 @@ -// navaids.hxx -- navaids management class -// -// Written by Curtis Olson, started April 2000. -// -// Copyright (C) 2000 Curtis L. Olson - curt@flightgear.org -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License as -// published by the Free Software Foundation; either version 2 of the -// License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. -// -// 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. -// -// $Id$ - - -#ifndef _FG_NAVAIDS_HXX -#define _FG_NAVAIDS_HXX - - -#include -#include - -#include -#include - -#include "navaid.hxx" - -FG_USING_STD(map); -FG_USING_STD(vector); - - -class FGNavaids { - - // convenience types - typedef vector < FGNavaid > nav_list_type; - typedef nav_list_type::iterator nav_list_iterator; - typedef nav_list_type::const_iterator nav_list_const_iterator; - - typedef map < int, nav_list_type, less > nav_map_type; - typedef nav_map_type::iterator nav_map_iterator; - typedef nav_map_type::const_iterator nav_map_const_iterator; - - nav_map_type navaids; - -public: - - FGNavaids(); - ~FGNavaids(); - - // load the navaids and build the map - bool init( FGPath path ); - - // query the database for the specified frequency, lon and lat are - // in degrees, elev is in meters - bool query( double lon, double lat, double elev, double freq, - FGNavaid *n, double *heading, double *dist); -}; - - -#endif // _FG_NAVAIDS_HXX diff --git a/src/Navaids/navlist.cxx b/src/Navaids/navlist.cxx new file mode 100644 index 000000000..a23bef3a5 --- /dev/null +++ b/src/Navaids/navlist.cxx @@ -0,0 +1,119 @@ +// navaids.cxx -- navaids management class +// +// Written by Curtis Olson, started April 2000. +// +// Copyright (C) 2000 Curtis L. Olson - curt@flightgear.org +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License as +// published by the Free Software Foundation; either version 2 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// 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. +// +// $Id$ + + +#include +#include +#include + +#include "navlist.hxx" + + +// Constructor +FGNavaids::FGNavaids( void ) { +} + + +// Destructor +FGNavaids::~FGNavaids( void ) { +} + + +// load the navaids and build the map +bool FGNavaids::init( FGPath path ) { + FGNavaid n; + + navaids.erase( navaids.begin(), navaids.end() ); + + fg_gzifstream in( path.str() ); + if ( !in.is_open() ) { + FG_LOG( FG_GENERAL, FG_ALERT, "Cannot open file: " << path.str() ); + exit(-1); + } + + // read in each line of the file + + in >> skipeol; + in >> skipcomment; + +#ifdef __MWERKS__ + + char c = 0; + while ( in.get(c) && c != '\0' && n.get_type() != '[' ) { + in.putback(c); + in >> n; + if ( n.get_type() != '[' ) { + navaids[n.get_freq()].push_back(n); + } + in >> skipcomment; + } + +#else + + while ( ! in.eof() && n.get_type() != '[' ) { + in >> n; + /* cout << "id = " << n.get_ident() << endl; + cout << " type = " << n.get_type() << endl; + cout << " lon = " << n.get_lon() << endl; + cout << " lat = " << n.get_lat() << endl; + cout << " elev = " << n.get_elev() << endl; + cout << " freq = " << n.get_freq() << endl; + cout << " range = " << n.get_range() << endl; */ + if ( n.get_type() != '[' ) { + navaids[n.get_freq()].push_back(n); + } + in >> skipcomment; + } + +#endif + + return true; +} + + +// query the database for the specified frequency, lon and lat are in +// degrees, elev is in meters +bool FGNavaids::query( double lon, double lat, double elev, double freq, + FGNavaid *n, double *heading, double *dist ) +{ + nav_list_type stations = navaids[(int)(freq*100.0)]; + + nav_list_iterator current = stations.begin(); + nav_list_iterator last = stations.end(); + + double az1, az2, s; + for ( ; current != last ; ++current ) { + // cout << "testing " << current->get_ident() << endl; + geo_inverse_wgs_84( elev, lat, lon, + current->get_lat(), current->get_lon(), + &az1, &az2, &s ); + // cout << " dist = " << s << endl; + if ( s < ( current->get_range() * NM_TO_METER ) ) { + *n = *current; + *heading = az2; + *dist = s; + return true; + } + } + + return false; +} diff --git a/src/Navaids/navlist.hxx b/src/Navaids/navlist.hxx new file mode 100644 index 000000000..85312ef8e --- /dev/null +++ b/src/Navaids/navlist.hxx @@ -0,0 +1,68 @@ +// navaids.hxx -- navaids management class +// +// Written by Curtis Olson, started April 2000. +// +// Copyright (C) 2000 Curtis L. Olson - curt@flightgear.org +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License as +// published by the Free Software Foundation; either version 2 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// 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. +// +// $Id$ + + +#ifndef _FG_NAVAIDS_HXX +#define _FG_NAVAIDS_HXX + + +#include +#include + +#include +#include + +#include "nav.hxx" + +FG_USING_STD(map); +FG_USING_STD(vector); + + +class FGNavaids { + + // convenience types + typedef vector < FGNavaid > nav_list_type; + typedef nav_list_type::iterator nav_list_iterator; + typedef nav_list_type::const_iterator nav_list_const_iterator; + + typedef map < int, nav_list_type, less > nav_map_type; + typedef nav_map_type::iterator nav_map_iterator; + typedef nav_map_type::const_iterator nav_map_const_iterator; + + nav_map_type navaids; + +public: + + FGNavaids(); + ~FGNavaids(); + + // load the navaids and build the map + bool init( FGPath path ); + + // query the database for the specified frequency, lon and lat are + // in degrees, elev is in meters + bool query( double lon, double lat, double elev, double freq, + FGNavaid *n, double *heading, double *dist); +}; + + +#endif // _FG_NAVAIDS_HXX diff --git a/src/Navaids/testnavs.cxx b/src/Navaids/testnavs.cxx index f988f5312..59a5c678c 100644 --- a/src/Navaids/testnavs.cxx +++ b/src/Navaids/testnavs.cxx @@ -1,6 +1,6 @@ #include -#include "navaids.hxx" +#include "navlist.hxx" int main() { FGNavaids navs;