]> git.mxchange.org Git - flightgear.git/blob - src/FDM/UIUCModel/uiuc_menu_geometry.cpp
set new FSF address (the whole paragraph is taken from
[flightgear.git] / src / FDM / UIUCModel / uiuc_menu_geometry.cpp
1 /**********************************************************************
2                                                                        
3  FILENAME:     uiuc_menu_geometry.cpp
4
5 ----------------------------------------------------------------------
6
7  DESCRIPTION:  reads input data for specified aircraft and creates 
8                approporiate data storage space
9
10 ----------------------------------------------------------------------
11
12  STATUS:       alpha version
13
14 ----------------------------------------------------------------------
15
16  REFERENCES:   based on "menu reader" format of Michael Selig
17
18 ----------------------------------------------------------------------
19
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
24
25 ----------------------------------------------------------------------
26
27  AUTHOR(S):    Robert Deters      <rdeters@uiuc.edu>
28                Michael Selig      <m-selig@uiuc.edu>
29
30 ----------------------------------------------------------------------
31
32  VARIABLES:
33
34 ----------------------------------------------------------------------
35
36  INPUTS:       n/a
37
38 ----------------------------------------------------------------------
39
40  OUTPUTS:      n/a
41
42 ----------------------------------------------------------------------
43
44  CALLED BY:    uiuc_menu()
45
46 ----------------------------------------------------------------------
47
48  CALLS TO:     check_float() if needed
49                d_2_to_3() if needed
50                d_1_to_2() if needed
51                i_1_to_2() if needed
52                d_1_to_1() if needed
53
54  ----------------------------------------------------------------------
55
56  COPYRIGHT:    (C) 2003 by Michael Selig
57
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.
61
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.
66
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.
70
71 **********************************************************************/
72
73 #include <simgear/compiler.h>
74
75 #if defined( __MWERKS__ )
76 // -dw- optimizer chokes (big-time) trying to optimize humongous
77 // loop/switch statements
78 #pragma optimization_level 0
79 #endif
80
81 #include <cstdlib>
82 #include <string>
83 #include STL_IOSTREAM
84
85 #include "uiuc_menu_geometry.h"
86
87 SG_USING_STD(cerr);
88 SG_USING_STD(cout);
89 SG_USING_STD(endl);
90
91 #ifndef _MSC_VER
92 SG_USING_STD(exit);
93 #endif
94
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 ) {
101     double token_value;
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());
110
111     switch(geometry_map[linetoken2])
112       {
113       case bw_flag:
114         {
115           if (check_float(linetoken3))
116             token3 >> token_value;
117           else
118             uiuc_warnings_errors(1, *command_line);
119           
120           bw = token_value;
121           geometryParts -> storeCommands (*command_line);
122           break;
123         }
124       case cbar_flag:
125         {
126           if (check_float(linetoken3))
127             token3 >> token_value;
128           else
129             uiuc_warnings_errors(1, *command_line);
130           
131           cbar = token_value;
132           geometryParts -> storeCommands (*command_line);
133           break;
134         }
135       case Sw_flag:
136         {
137           if (check_float(linetoken3))
138             token3 >> token_value;
139           else
140             uiuc_warnings_errors(1, *command_line);
141           
142           Sw = token_value;
143           geometryParts -> storeCommands (*command_line);
144           break;
145         }
146       case ih_flag:
147         {
148           if (check_float(linetoken3))
149             token3 >> token_value;
150           else
151             uiuc_warnings_errors(1, *command_line);
152           
153           ih = token_value;
154           geometryParts -> storeCommands (*command_line);
155           break;
156         }
157       case bh_flag:
158         {
159           if (check_float(linetoken3))
160             token3 >> token_value;
161           else
162             uiuc_warnings_errors(1, *command_line);
163           
164           bh = token_value;
165           geometryParts -> storeCommands (*command_line);
166           break;
167         }
168       case ch_flag:
169         {
170           if (check_float(linetoken3))
171             token3 >> token_value;
172           else
173             uiuc_warnings_errors(1, *command_line);
174           
175           chord_h = token_value;
176           geometryParts -> storeCommands (*command_line);
177           break;
178         }
179       case Sh_flag:
180         {
181           if (check_float(linetoken3))
182             token3 >> token_value;
183           else
184             uiuc_warnings_errors(1, *command_line);
185           
186           Sh = token_value;
187           geometryParts -> storeCommands (*command_line);
188           break;
189         }
190       default:
191         {
192           if (ignore_unknown_keywords) {
193             // do nothing
194           } else {
195             // print error message
196             uiuc_warnings_errors(2, *command_line);
197           }
198           break;
199         }
200       };
201 }