]> git.mxchange.org Git - flightgear.git/blob - src/FDM/UIUCModel/uiuc_menu_misc.cpp
Provide a better(?) solution to the windows GDI problem
[flightgear.git] / src / FDM / UIUCModel / uiuc_menu_misc.cpp
1 /**********************************************************************
2                                                                        
3  FILENAME:     uiuc_menu_misc.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
22 ----------------------------------------------------------------------
23
24  AUTHOR(S):    Robert Deters      <rdeters@uiuc.edu>
25                Michael Selig      <m-selig@uiuc.edu>
26
27 ----------------------------------------------------------------------
28
29  VARIABLES:
30
31 ----------------------------------------------------------------------
32
33  INPUTS:       n/a
34
35 ----------------------------------------------------------------------
36
37  OUTPUTS:      n/a
38
39 ----------------------------------------------------------------------
40
41  CALLED BY:    uiuc_menu()
42
43 ----------------------------------------------------------------------
44
45  CALLS TO:     check_float() if needed
46                d_2_to_3() if needed
47                d_1_to_2() if needed
48                i_1_to_2() if needed
49                d_1_to_1() if needed
50
51  ----------------------------------------------------------------------
52
53  COPYRIGHT:    (C) 2003 by Michael Selig
54
55  This program is free software; you can redistribute it and/or
56  modify it under the terms of the GNU General Public License
57  as published by the Free Software Foundation.
58
59  This program is distributed in the hope that it will be useful,
60  but WITHOUT ANY WARRANTY; without even the implied warranty of
61  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
62  GNU General Public License for more details.
63
64  You should have received a copy of the GNU General Public License
65  along with this program; if not, write to the Free Software
66  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
67  USA or view http://www.gnu.org/copyleft/gpl.html.
68
69 **********************************************************************/
70
71 #include <simgear/compiler.h>
72
73 #if defined( __MWERKS__ )
74 // -dw- optimizer chokes (big-time) trying to optimize humongous
75 // loop/switch statements
76 #pragma optimization_level 0
77 #endif
78
79 #include <cstdlib>
80 #include <string>
81 #include STL_IOSTREAM
82
83 #include "uiuc_menu_misc.h"
84
85 SG_USING_STD(cerr);
86 SG_USING_STD(cout);
87 SG_USING_STD(endl);
88
89 #ifndef _MSC_VER
90 SG_USING_STD(exit);
91 #endif
92
93 void parse_misc( const string& linetoken2, const string& linetoken3,
94                  const string& linetoken4, const string& linetoken5, 
95                  const string& linetoken6, const string& linetoken7, 
96                  const string& linetoken8, const string& linetoken9,
97                  const string& linetoken10, const string& aircraft_directory, 
98                  LIST command_line ) {
99   double token_value;
100   istrstream token3(linetoken3.c_str());
101   istrstream token4(linetoken4.c_str());
102   istrstream token5(linetoken5.c_str());
103   istrstream token6(linetoken6.c_str());
104   istrstream token7(linetoken7.c_str());
105   istrstream token8(linetoken8.c_str());
106   istrstream token9(linetoken9.c_str());
107   istrstream token10(linetoken10.c_str());
108
109   switch(misc_map[linetoken2])
110     {
111     case simpleHingeMomentCoef_flag:
112       {
113         if (check_float(linetoken3))
114           token3 >> token_value;
115         else
116           uiuc_warnings_errors(1, *command_line);
117         
118         simpleHingeMomentCoef = token_value;
119         break;
120       }
121     case dfTimefdf_flag:
122       {
123         dfTimefdf = linetoken3;
124         /* call 1D File Reader with file name (dfTimefdf);
125            function returns array of dfs (dfArray) and 
126            corresponding time values (TimeArray) and max 
127            number of terms in arrays (ndf) */
128         uiuc_1DdataFileReader(dfTimefdf,
129                               dfTimefdf_dfArray,
130                               dfTimefdf_TimeArray,
131                               dfTimefdf_ndf);
132         break;
133       }
134     case flapper_flag:
135       {
136         string flap_file;
137         
138         flap_file = aircraft_directory + "flap.dat";
139         flapper_model = true;
140         flapper_data = new FlapData(flap_file.c_str());
141         break;
142       }
143     case flapper_phi_init_flag:
144       {
145         if (check_float(linetoken3))
146           token3 >> token_value;
147         else
148           uiuc_warnings_errors(1, *command_line);
149         
150         flapper_phi_init = token_value*DEG_TO_RAD;
151         break;
152       }
153     default:
154       {
155         if (ignore_unknown_keywords) {
156           // do nothing
157         } else {
158           // print error message
159           uiuc_warnings_errors(2, *command_line);
160         }
161         break;
162       }
163     };
164 }