]> git.mxchange.org Git - flightgear.git/blob - src/FDM/UIUCModel/uiuc_menu_geometry.cpp
Harald JOHNSEN:
[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., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
70  USA or view http://www.gnu.org/copyleft/gpl.html.
71
72 **********************************************************************/
73
74 #include <simgear/compiler.h>
75
76 #if defined( __MWERKS__ )
77 // -dw- optimizer chokes (big-time) trying to optimize humongous
78 // loop/switch statements
79 #pragma optimization_level 0
80 #endif
81
82 #include <cstdlib>
83 #include <string>
84 #include STL_IOSTREAM
85
86 #include "uiuc_menu_geometry.h"
87
88 SG_USING_STD(cerr);
89 SG_USING_STD(cout);
90 SG_USING_STD(endl);
91
92 #ifndef _MSC_VER
93 SG_USING_STD(exit);
94 #endif
95
96 void parse_geometry( 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, 
101                      const string& aircraft_directory, LIST command_line ) {
102     double token_value;
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());
111
112     switch(geometry_map[linetoken2])
113       {
114       case bw_flag:
115         {
116           if (check_float(linetoken3))
117             token3 >> token_value;
118           else
119             uiuc_warnings_errors(1, *command_line);
120           
121           bw = token_value;
122           geometryParts -> storeCommands (*command_line);
123           break;
124         }
125       case cbar_flag:
126         {
127           if (check_float(linetoken3))
128             token3 >> token_value;
129           else
130             uiuc_warnings_errors(1, *command_line);
131           
132           cbar = token_value;
133           geometryParts -> storeCommands (*command_line);
134           break;
135         }
136       case Sw_flag:
137         {
138           if (check_float(linetoken3))
139             token3 >> token_value;
140           else
141             uiuc_warnings_errors(1, *command_line);
142           
143           Sw = token_value;
144           geometryParts -> storeCommands (*command_line);
145           break;
146         }
147       case ih_flag:
148         {
149           if (check_float(linetoken3))
150             token3 >> token_value;
151           else
152             uiuc_warnings_errors(1, *command_line);
153           
154           ih = token_value;
155           geometryParts -> storeCommands (*command_line);
156           break;
157         }
158       case bh_flag:
159         {
160           if (check_float(linetoken3))
161             token3 >> token_value;
162           else
163             uiuc_warnings_errors(1, *command_line);
164           
165           bh = token_value;
166           geometryParts -> storeCommands (*command_line);
167           break;
168         }
169       case ch_flag:
170         {
171           if (check_float(linetoken3))
172             token3 >> token_value;
173           else
174             uiuc_warnings_errors(1, *command_line);
175           
176           chord_h = token_value;
177           geometryParts -> storeCommands (*command_line);
178           break;
179         }
180       case Sh_flag:
181         {
182           if (check_float(linetoken3))
183             token3 >> token_value;
184           else
185             uiuc_warnings_errors(1, *command_line);
186           
187           Sh = token_value;
188           geometryParts -> storeCommands (*command_line);
189           break;
190         }
191       default:
192         {
193           if (ignore_unknown_keywords) {
194             // do nothing
195           } else {
196             // print error message
197             uiuc_warnings_errors(2, *command_line);
198           }
199           break;
200         }
201       };
202 }