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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
71 **********************************************************************/
73 #include <simgear/compiler.h>
80 #include "uiuc_menu_gear.h"
90 void parse_gear( const string& linetoken2, const string& linetoken3,
91 const string& linetoken4, const string& linetoken5,
92 const string& linetoken6, const string& linetoken7,
93 const string& linetoken8, const string& linetoken9,
94 const string& linetoken10, const string& aircraft_directory,
97 istringstream token3(linetoken3.c_str());
98 istringstream token4(linetoken4.c_str());
99 istringstream token5(linetoken5.c_str());
100 istringstream token6(linetoken6.c_str());
101 istringstream token7(linetoken7.c_str());
102 istringstream token8(linetoken8.c_str());
103 istringstream token9(linetoken9.c_str());
104 istringstream token10(linetoken10.c_str());
106 switch(gear_map[linetoken2])
112 if (index < 0 || index >= 16)
113 uiuc_warnings_errors(1, *command_line);
114 if (check_float(linetoken4))
115 token4 >> token_value;
117 uiuc_warnings_errors(1, *command_line);
118 D_gear_v[index][0] = token_value;
119 gear_model[index] = true;
126 if (index < 0 || index >= 16)
127 uiuc_warnings_errors(1, *command_line);
128 if (check_float(linetoken4))
129 token4 >> token_value;
131 uiuc_warnings_errors(1, *command_line);
132 D_gear_v[index][1] = token_value;
133 gear_model[index] = true;
140 if (index < 0 || index >= 16)
141 uiuc_warnings_errors(1, *command_line);
142 if (check_float(linetoken4))
143 token4 >> token_value;
145 uiuc_warnings_errors(1, *command_line);
146 D_gear_v[index][2] = token_value;
147 gear_model[index] = true;
154 if (index < 0 || index >= 16)
155 uiuc_warnings_errors(1, *command_line);
156 if (check_float(linetoken4))
157 token4 >> token_value;
159 uiuc_warnings_errors(1, *command_line);
160 cgear[index] = token_value;
161 gear_model[index] = true;
168 if (index < 0 || index >= 16)
169 uiuc_warnings_errors(1, *command_line);
170 if (check_float(linetoken4))
171 token4 >> token_value;
173 uiuc_warnings_errors(1, *command_line);
174 kgear[index] = token_value;
175 gear_model[index] = true;
182 if (index < 0 || index >= 16)
183 uiuc_warnings_errors(1, *command_line);
184 if (check_float(linetoken4))
185 token4 >> token_value;
187 uiuc_warnings_errors(1, *command_line);
188 muGear[index] = token_value;
189 gear_model[index] = true;
192 case strutLength_flag:
196 if (index < 0 || index >= 16)
197 uiuc_warnings_errors(1, *command_line);
198 if (check_float(linetoken4))
199 token4 >> token_value;
201 uiuc_warnings_errors(1, *command_line);
202 strutLength[index] = token_value;
203 gear_model[index] = true;
208 if (check_float(linetoken3))
209 token3 >> token_value;
211 uiuc_warnings_errors(1, *command_line);
214 gear_max = token_value;
219 if (check_float(linetoken3))
220 token3 >> token_value;
222 uiuc_warnings_errors(1, *command_line);
225 gear_rate = token_value;
230 if (ignore_unknown_keywords) {
233 // print error message
234 uiuc_warnings_errors(2, *command_line);