]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/UIUCModel/uiuc_menu_controlSurface.cpp
Fix for bug 1304 - crash loading XML route
[flightgear.git] / src / FDM / UIUCModel / uiuc_menu_controlSurface.cpp
index 626178a0de3fa8f75b5b3461e7ae4e6c50532ac0..1a0c40947b183b6b08f33f92c20d66336db72948 100644 (file)
@@ -18,6 +18,9 @@
 ----------------------------------------------------------------------
 
  HISTORY:      04/04/2003   initial release
+               06/30/2003   (RD) replaced istrstream with istringstream
+                            to get rid of the annoying warning about
+                            using the strstream header
 
 ----------------------------------------------------------------------
 
 
  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., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- USA or view http://www.gnu.org/copyleft/gpl.html.
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
 **********************************************************************/
 
 #include <simgear/compiler.h>
 
-#if defined( __MWERKS__ )
-// -dw- optimizer chokes (big-time) trying to optimize humongous
-// loop/switch statements
-#pragma optimization_level 0
-#endif
 
 #include <cstdlib>
 #include <string>
-#include STL_IOSTREAM
+#include <iostream>
 
 #include "uiuc_menu_controlSurface.h"
 
-SG_USING_STD(cerr);
-SG_USING_STD(cout);
-SG_USING_STD(endl);
+using std::cerr;
+using std::cout;
+using std::endl;
 
 #ifndef _MSC_VER
-SG_USING_STD(exit);
+using std::exit;
 #endif
 
 void parse_controlSurface( const string& linetoken2, const string& linetoken3,
@@ -99,14 +96,14 @@ void parse_controlSurface( const string& linetoken2, const string& linetoken3,
                           LIST command_line ) {
     double token_value;
     int token_value_convert1, token_value_convert2;
-    istrstream token3(linetoken3.c_str());
-    istrstream token4(linetoken4.c_str());
-    istrstream token5(linetoken5.c_str());
-    istrstream token6(linetoken6.c_str());
-    istrstream token7(linetoken7.c_str());
-    istrstream token8(linetoken8.c_str());
-    istrstream token9(linetoken9.c_str());
-    istrstream token10(linetoken10.c_str());
+    istringstream token3(linetoken3.c_str());
+    istringstream token4(linetoken4.c_str());
+    istringstream token5(linetoken5.c_str());
+    istringstream token6(linetoken6.c_str());
+    istringstream token7(linetoken7.c_str());
+    istringstream token8(linetoken8.c_str());
+    istringstream token9(linetoken9.c_str());
+    istringstream token10(linetoken10.c_str());
 
     switch(controlSurface_map[linetoken2])
       {
@@ -506,6 +503,96 @@ void parse_controlSurface( const string& linetoken2, const string& linetoken3,
          use_rudder_sas_type1 = true;
          break;
        }
+      case ap_pah_flag:
+       {
+         if (check_float(linetoken3))
+           token3 >> token_value;
+         else
+           uiuc_warnings_errors(1, *command_line);
+
+         ap_pah_start_time=token_value;
+         ap_pah_on = 1;
+         break;
+       }
+      case ap_alh_flag:
+       {
+         if (check_float(linetoken3))
+           token3 >> token_value;
+         else
+           uiuc_warnings_errors(1, *command_line);
+
+         ap_alh_start_time=token_value;
+         ap_alh_on = 1;
+         break;
+       }
+      case ap_rah_flag:
+       {
+         if (check_float(linetoken3))
+           token3 >> token_value;
+         else
+           uiuc_warnings_errors(1, *command_line);
+
+         ap_rah_start_time=token_value;
+         ap_rah_on = 1;
+         break;
+       }
+      case ap_hh_flag:
+       {
+         if (check_float(linetoken3))
+           token3 >> token_value;
+         else
+           uiuc_warnings_errors(1, *command_line);
+
+         ap_hh_start_time=token_value;
+         ap_hh_on = 1;
+         break;
+       }
+      case ap_Theta_ref_flag:
+       {
+         if (check_float(linetoken3))
+           token3 >> token_value;
+         else
+           uiuc_warnings_errors(1, *command_line);
+         token4 >> token_value_convert1;
+         convert_y = uiuc_convert(token_value_convert1);
+
+         ap_Theta_ref_rad = token_value * convert_y;
+         break;
+       }
+      case ap_alt_ref_flag:
+       {
+         if (check_float(linetoken3))
+           token3 >> token_value;
+         else
+           uiuc_warnings_errors(1, *command_line);
+
+         ap_alt_ref_ft = token_value;
+         break;
+       }
+      case ap_Phi_ref_flag:
+       {
+         if (check_float(linetoken3))
+           token3 >> token_value;
+         else
+           uiuc_warnings_errors(1, *command_line);
+         token4 >> token_value_convert1;
+         convert_y = uiuc_convert(token_value_convert1);
+
+         ap_Phi_ref_rad = token_value * convert_y;
+         break;
+       }
+      case ap_Psi_ref_flag:
+       {
+         if (check_float(linetoken3))
+           token3 >> token_value;
+         else
+           uiuc_warnings_errors(1, *command_line);
+         token4 >> token_value_convert1;
+         convert_y = uiuc_convert(token_value_convert1);
+
+         ap_Psi_ref_rad = token_value * convert_y;
+         break;
+       }
       default:
        {
          if (ignore_unknown_keywords) {