]> git.mxchange.org Git - flightgear.git/blobdiff - src/Navaids/ils.hxx
Added static port system and a new altimeter model connected to it.
[flightgear.git] / src / Navaids / ils.hxx
index aada9a9aa78c6a6382fbb74984229f9e14e54928..8fd0a2fc26eb0fc821c018065b8198fb2004f6b8 100644 (file)
 
 #include <simgear/compiler.h>
 #include <simgear/math/sg_geodesy.hxx>
-#include <simgear/misc/fgstream.hxx>
+#include <simgear/misc/sgstream.hxx>
 
-#ifdef FG_HAVE_STD_INCLUDES
+#ifdef SG_HAVE_STD_INCLUDES
 #  include <istream>
-#elif defined( FG_HAVE_NATIVE_SGI_COMPILERS )
+#elif defined( SG_HAVE_NATIVE_SGI_COMPILERS )
 #  include <iostream.h>
-#elif defined( __BORLANDC__ )
+#elif defined( __BORLANDC__ ) || (__APPLE__)
 #  include <iostream>
 #else
 #  include <istream.h>
 #endif
 
-#if ! defined( FG_HAVE_NATIVE_SGI_COMPILERS )
-FG_USING_STD(istream);
+#if ! defined( SG_HAVE_NATIVE_SGI_COMPILERS )
+SG_USING_STD(istream);
 #endif
 
 
@@ -83,7 +83,7 @@ class FGILS {
 
 public:
 
-    inline FGILS(void) {}
+    inline FGILS(void);
     inline ~FGILS(void) {}
 
     inline char get_ilstype() const { return ilstype; }
@@ -124,11 +124,52 @@ public:
 };
 
 
+inline
+FGILS::FGILS(void)
+  : ilstype(0),
+    locfreq(0),
+    locheading(0.0),
+    loclat(0.0),
+    loclon(0.0),
+    x(0.0), y(0.0), z(0.0),
+    has_gs(false),
+    gselev(0.0),
+    gsangle(0.0),
+    gslat(0.0),
+    gslon(0.0),
+    gs_x(0.0), gs_y(0.0), gs_z(0.0),
+    has_dme(false),
+    dmelat(0.0),
+    dmelon(0.0),
+    dme_x(0.0), dme_y(0.0), dme_z(0.0),
+    omlat(0.0),
+    omlon(0.0),
+    mmlat(0.0),
+    mmlon(0.0),
+    imlat(0.0),
+    imlon(0.0),
+    trans_ident(""),
+    loc_failed(false),
+    gs_failed(false),
+    dme_failed(false)
+{
+    ilstypename[0] = '\0';
+    aptcode[0] = '\0';
+    rwyno[0] = '\0';
+    locident[0] = '\0';
+}
+
+    
 inline istream&
 operator >> ( istream& in, FGILS& i )
 {
     double f;
-    in >> i.ilstype >> i.ilstypename >> i.aptcode >> i.rwyno 
+    in >> i.ilstype;
+    
+    if ( i.ilstype == '[' )
+          return in;
+
+    in >> i.ilstypename >> i.aptcode >> i.rwyno 
        >> f >> i.locident >> i.locheading >> i.loclat >> i.loclon
        >> i.gselev >> i.gsangle >> i.gslat >> i.gslon
        >> i.dmelat >> i.dmelon
@@ -142,18 +183,18 @@ operator >> ( istream& in, FGILS& i )
     // generate cartesian coordinates
     Point3D geod, cart;
 
-    geod = Point3D( i.loclon * DEG_TO_RAD, i.loclat * DEG_TO_RAD, i.gselev );
+    geod = Point3D( i.loclon * SGD_DEGREES_TO_RADIANS, i.loclat * SGD_DEGREES_TO_RADIANS, i.gselev );
     cart = sgGeodToCart( geod );
     i.x = cart.x();
     i.y = cart.y();
     i.z = cart.z();
 
-    if ( i.gslon < FG_EPSILON && i.gslat < FG_EPSILON ) {
+    if ( i.gslon < SG_EPSILON && i.gslat < SG_EPSILON ) {
        i.has_gs = false;
     } else {
        i.has_gs = true;
 
-       geod = Point3D( i.gslon * DEG_TO_RAD, i.gslat * DEG_TO_RAD, i.gselev );
+       geod = Point3D( i.gslon * SGD_DEGREES_TO_RADIANS, i.gslat * SGD_DEGREES_TO_RADIANS, i.gselev );
        cart = sgGeodToCart( geod );
        i.gs_x = cart.x();
        i.gs_y = cart.y();
@@ -161,12 +202,12 @@ operator >> ( istream& in, FGILS& i )
        // cout << "gs = " << cart << endl;
     }
 
-    if ( i.dmelon < FG_EPSILON && i.dmelat < FG_EPSILON ) {
+    if ( i.dmelon < SG_EPSILON && i.dmelat < SG_EPSILON ) {
        i.has_dme = false;
     } else {
        i.has_dme = true;
 
-       geod = Point3D( i.dmelon * DEG_TO_RAD, i.dmelat * DEG_TO_RAD, i.gselev);
+       geod = Point3D( i.dmelon * SGD_DEGREES_TO_RADIANS, i.dmelat * SGD_DEGREES_TO_RADIANS, i.gselev);
        cart = sgGeodToCart( geod );
        i.dme_x = cart.x();
        i.dme_y = cart.y();