]> git.mxchange.org Git - flightgear.git/blob - src/FDM/UIUCModel/uiuc_menu_fog.cpp
Reset: work with threaded OSG modes
[flightgear.git] / src / FDM / UIUCModel / uiuc_menu_fog.cpp
1 /**********************************************************************
2                                                                        
3  FILENAME:     uiuc_menu_fog.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
76 #include <cstdlib>
77 #include <string>
78 #include <iostream>
79
80 #include "uiuc_menu_fog.h"
81
82 using std::cerr;
83 using std::cout;
84 using std::endl;
85
86 #ifndef _MSC_VER
87 using std::exit;
88 #endif
89
90 void parse_fog( 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,
95                 LIST command_line ) {
96   double token_value;
97   int token_value_convert1;
98   istringstream token3(linetoken3.c_str());
99   istringstream token4(linetoken4.c_str());
100   istringstream token5(linetoken5.c_str());
101   istringstream token6(linetoken6.c_str());
102   istringstream token7(linetoken7.c_str());
103   istringstream token8(linetoken8.c_str());
104   istringstream token9(linetoken9.c_str());
105   istringstream token10(linetoken10.c_str());
106
107     switch(fog_map[linetoken2])
108       {
109       case fog_segments_flag:
110         {
111           if (check_float(linetoken3))
112             token3 >> token_value_convert1;
113           else
114             uiuc_warnings_errors(1, *command_line);
115           
116           if (token_value_convert1 < 1 || token_value_convert1 > 100)
117             uiuc_warnings_errors(1, *command_line);
118           
119           fog_field = true;
120           fog_point_index = 0;
121           delete[] fog_time;
122           delete[] fog_value;
123           fog_segments = token_value_convert1;
124           fog_time = new double[fog_segments+1];
125           fog_time[0] = 0.0;
126           fog_value = new int[fog_segments+1];
127           fog_value[0] = 0;
128           
129           break;
130         }
131       case fog_point_flag:
132         {
133           if (check_float(linetoken3))
134             token3 >> token_value;
135           else
136             uiuc_warnings_errors(1, *command_line);
137           
138           if (token_value < 0.1)
139             uiuc_warnings_errors(1, *command_line);
140           
141           if (check_float(linetoken4))
142             token4 >> token_value_convert1;
143           else
144             uiuc_warnings_errors(1, *command_line);
145           
146           if (token_value_convert1 < -1000 || token_value_convert1 > 1000)
147             uiuc_warnings_errors(1, *command_line);
148           
149           if (fog_point_index == fog_segments || fog_point_index == -1)
150             uiuc_warnings_errors(1, *command_line);
151           
152           fog_point_index++;
153           fog_time[fog_point_index] = token_value;
154           fog_value[fog_point_index] = token_value_convert1;
155           
156           break;
157         }
158       default:
159         {
160           if (ignore_unknown_keywords) {
161             // do nothing
162           } else {
163             // print error message
164             uiuc_warnings_errors(2, *command_line);
165           }
166           break;
167         }
168       };
169 }