1 /**********************************************************************
3 FILENAME: uiuc_menu_geometry.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>
75 #if defined( __MWERKS__ )
76 // -dw- optimizer chokes (big-time) trying to optimize humongous
77 // loop/switch statements
78 #pragma optimization_level 0
85 #include "uiuc_menu_geometry.h"
95 void parse_geometry( const string& linetoken2, const string& linetoken3,
96 const string& linetoken4, const string& linetoken5,
97 const string& linetoken6, const string& linetoken7,
98 const string& linetoken8, const string& linetoken9,
99 const string& linetoken10,
100 const string& aircraft_directory, LIST command_line ) {
102 istringstream token3(linetoken3.c_str());
103 istringstream token4(linetoken4.c_str());
104 istringstream token5(linetoken5.c_str());
105 istringstream token6(linetoken6.c_str());
106 istringstream token7(linetoken7.c_str());
107 istringstream token8(linetoken8.c_str());
108 istringstream token9(linetoken9.c_str());
109 istringstream token10(linetoken10.c_str());
111 switch(geometry_map[linetoken2])
115 if (check_float(linetoken3))
116 token3 >> token_value;
118 uiuc_warnings_errors(1, *command_line);
121 geometryParts -> storeCommands (*command_line);
126 if (check_float(linetoken3))
127 token3 >> token_value;
129 uiuc_warnings_errors(1, *command_line);
132 geometryParts -> storeCommands (*command_line);
137 if (check_float(linetoken3))
138 token3 >> token_value;
140 uiuc_warnings_errors(1, *command_line);
143 geometryParts -> storeCommands (*command_line);
148 if (check_float(linetoken3))
149 token3 >> token_value;
151 uiuc_warnings_errors(1, *command_line);
154 geometryParts -> storeCommands (*command_line);
159 if (check_float(linetoken3))
160 token3 >> token_value;
162 uiuc_warnings_errors(1, *command_line);
165 geometryParts -> storeCommands (*command_line);
170 if (check_float(linetoken3))
171 token3 >> token_value;
173 uiuc_warnings_errors(1, *command_line);
175 chord_h = token_value;
176 geometryParts -> storeCommands (*command_line);
181 if (check_float(linetoken3))
182 token3 >> token_value;
184 uiuc_warnings_errors(1, *command_line);
187 geometryParts -> storeCommands (*command_line);
192 if (ignore_unknown_keywords) {
195 // print error message
196 uiuc_warnings_errors(2, *command_line);