1 /**********************************************************************
3 FILENAME: uiuc_menu_gear.cpp
5 ----------------------------------------------------------------------
7 DESCRIPTION: reads input data for specified aircraft and creates
8 approporiate data storage space
10 ----------------------------------------------------------------------
14 ----------------------------------------------------------------------
16 REFERENCES: based on "menu reader" format of Michael Selig
18 ----------------------------------------------------------------------
20 HISTORY: 04/04/2003 initial release
21 06/30/2003 (RD) replaced istrstream with istringstream
22 to get rid of the annoying warning about
23 using the strstream header
25 ----------------------------------------------------------------------
27 AUTHOR(S): Robert Deters <rdeters@uiuc.edu>
28 Michael Selig <m-selig@uiuc.edu>
30 ----------------------------------------------------------------------
34 ----------------------------------------------------------------------
38 ----------------------------------------------------------------------
42 ----------------------------------------------------------------------
44 CALLED BY: uiuc_menu()
46 ----------------------------------------------------------------------
48 CALLS TO: check_float() if needed
54 ----------------------------------------------------------------------
56 COPYRIGHT: (C) 2003 by Michael Selig
58 This program is free software; you can redistribute it and/or
59 modify it under the terms of the GNU General Public License
60 as published by the Free Software Foundation.
62 This program is distributed in the hope that it will be useful,
63 but WITHOUT ANY WARRANTY; without even the implied warranty of
64 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
65 GNU General Public License for more details.
67 You should have received a copy of the GNU General Public License
68 along with this program; if not, write to the Free Software
69 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
70 USA or view http://www.gnu.org/copyleft/gpl.html.
72 **********************************************************************/
74 #include <simgear/compiler.h>
76 #if defined( __MWERKS__ )
77 // -dw- optimizer chokes (big-time) trying to optimize humongous
78 // loop/switch statements
79 #pragma optimization_level 0
86 #include "uiuc_menu_gear.h"
96 void parse_gear( const string& linetoken2, const string& linetoken3,
97 const string& linetoken4, const string& linetoken5,
98 const string& linetoken6, const string& linetoken7,
99 const string& linetoken8, const string& linetoken9,
100 const string& linetoken10, const string& aircraft_directory,
101 LIST command_line ) {
103 istringstream token3(linetoken3.c_str());
104 istringstream token4(linetoken4.c_str());
105 istringstream token5(linetoken5.c_str());
106 istringstream token6(linetoken6.c_str());
107 istringstream token7(linetoken7.c_str());
108 istringstream token8(linetoken8.c_str());
109 istringstream token9(linetoken9.c_str());
110 istringstream token10(linetoken10.c_str());
112 switch(gear_map[linetoken2])
118 if (index < 0 || index >= 16)
119 uiuc_warnings_errors(1, *command_line);
120 if (check_float(linetoken4))
121 token4 >> token_value;
123 uiuc_warnings_errors(1, *command_line);
124 D_gear_v[index][0] = token_value;
125 gear_model[index] = true;
132 if (index < 0 || index >= 16)
133 uiuc_warnings_errors(1, *command_line);
134 if (check_float(linetoken4))
135 token4 >> token_value;
137 uiuc_warnings_errors(1, *command_line);
138 D_gear_v[index][1] = token_value;
139 gear_model[index] = true;
146 if (index < 0 || index >= 16)
147 uiuc_warnings_errors(1, *command_line);
148 if (check_float(linetoken4))
149 token4 >> token_value;
151 uiuc_warnings_errors(1, *command_line);
152 D_gear_v[index][2] = token_value;
153 gear_model[index] = true;
160 if (index < 0 || index >= 16)
161 uiuc_warnings_errors(1, *command_line);
162 if (check_float(linetoken4))
163 token4 >> token_value;
165 uiuc_warnings_errors(1, *command_line);
166 cgear[index] = token_value;
167 gear_model[index] = true;
174 if (index < 0 || index >= 16)
175 uiuc_warnings_errors(1, *command_line);
176 if (check_float(linetoken4))
177 token4 >> token_value;
179 uiuc_warnings_errors(1, *command_line);
180 kgear[index] = token_value;
181 gear_model[index] = true;
188 if (index < 0 || index >= 16)
189 uiuc_warnings_errors(1, *command_line);
190 if (check_float(linetoken4))
191 token4 >> token_value;
193 uiuc_warnings_errors(1, *command_line);
194 muGear[index] = token_value;
195 gear_model[index] = true;
198 case strutLength_flag:
202 if (index < 0 || index >= 16)
203 uiuc_warnings_errors(1, *command_line);
204 if (check_float(linetoken4))
205 token4 >> token_value;
207 uiuc_warnings_errors(1, *command_line);
208 strutLength[index] = token_value;
209 gear_model[index] = true;
214 if (check_float(linetoken3))
215 token3 >> token_value;
217 uiuc_warnings_errors(1, *command_line);
220 gear_max = token_value;
225 if (check_float(linetoken3))
226 token3 >> token_value;
228 uiuc_warnings_errors(1, *command_line);
231 gear_rate = token_value;
236 if (ignore_unknown_keywords) {
239 // print error message
240 uiuc_warnings_errors(2, *command_line);