#include <string.h> // strcmp()
#include <algorithm>
-#include STL_STRING
+#include <iostream>
+#include <string>
#include <plib/ul.h>
#include <simgear/math/sg_random.h>
+#include <simgear/props/props_io.hxx>
#include <simgear/misc/sgstream.hxx>
#include <simgear/misc/sg_path.hxx>
#include <simgear/scene/material/mat.hxx>
#include "options.hxx"
#include "util.hxx"
#include "viewmgr.hxx"
+#include <Main/viewer.hxx>
-
-SG_USING_STD(string);
-SG_USING_STD(sort);
-SG_USING_NAMESPACE(std);
+using std::string;
+using std::sort;
+using std::cout;
+using std::cerr;
+using std::endl;
#ifndef VERSION
#define VERSION "CVS "__DATE__
static double
atof( const string& str )
{
-
-#ifdef __MWERKS__
- // -dw- if ::atof is called, then we get an infinite loop
- return std::atof( str.c_str() );
-#else
return ::atof( str.c_str() );
-#endif
}
static int
atoi( const string& str )
{
-#ifdef __MWERKS__
- // -dw- if ::atoi is called, then we get an infinite loop
- return std::atoi( str.c_str() );
-#else
return ::atoi( str.c_str() );
-#endif
}
/**
fgSetDefaults ()
{
// set a possibly independent location for scenery data
- char *envp = ::getenv( "FG_SCENERY" );
+ const char *envp = ::getenv( "FG_SCENERY" );
if ( envp != NULL ) {
// fg_root could be anywhere, so default to environmental
//
// Format is "--protocol=medium,direction,hz,medium_options,..."
//
-// protocol = { native, nmea, garmin, AV400, fgfs, rul, pve, etc. }
+// protocol = { native, nmea, garmin, AV400, AV400Sim, fgfs, rul, pve, etc. }
// medium = { serial, socket, file, etc. }
// direction = { in, out, bi }
// hz = number of times to process channel per second (floating
while ( true ) {
string line;
-
-#if defined( macintosh )
- getline( in, line, '\r' );
-#else
getline( in, line, '\n' );
-#endif
+
// catch extraneous (DOS) line ending character
if ( line[line.length() - 1] < 32 )
line = line.substr( 0, line.length()-1 );
static int
fgOptWind( const char *arg )
{
- double min_hdg, max_hdg, speed, gust;
+ double min_hdg = 0.0, max_hdg = 0.0, speed = 0.0, gust = 0.0;
if (!parse_wind( arg, &min_hdg, &max_hdg, &speed, &gust)) {
SG_LOG( SG_GENERAL, SG_ALERT, "bad wind value " << arg );
return FG_OPTIONS_ERROR;
return FG_OPTIONS_EXIT;
}
+static int
+fgOptFpe(const char* arg)
+{
+ // Actually handled in bootstrap.cxx
+ return FG_OPTIONS_OK;
+}
+
+static int
+fgOptFgviewer(const char* arg)
+{
+ // Actually handled in bootstrap.cxx
+ return FG_OPTIONS_OK;
+}
+
+
+
static map<string,size_t> fgOptionMap;
/*
value set to the property if has_param is false
func : function called if type==OPTION_FUNC. if has_param is true,
the value is passed to the function as a string, otherwise,
- 0 is passed.
+ s_param is passed.
For OPTION_DOUBLE and OPTION_INT, the parameter value is converted into a
double or an integer and set to the property.
enum OptionType { OPTION_BOOL, OPTION_STRING, OPTION_DOUBLE, OPTION_INT, OPTION_CHANNEL, OPTION_FUNC };
struct OptionDesc {
- char *option;
+ const char *option;
bool has_param;
enum OptionType type;
- char *property;
+ const char *property;
bool b_param;
- char *s_param;
+ const char *s_param;
int (*func)( const char * );
} fgOptionArray[] = {
{"disable-random-objects", false, OPTION_BOOL, "/sim/rendering/random-objects", false, "", 0 },
{"enable-random-objects", false, OPTION_BOOL, "/sim/rendering/random-objects", true, "", 0 },
{"disable-real-weather-fetch", false, OPTION_BOOL, "/environment/params/real-world-weather-fetch", false, "", 0 },
- {"enable-real-weather-fetch", false, OPTION_BOOL, "/environment/params/real-world-weather-fetch", true, "", 0 },
+ {"enable-real-weather-fetch", false, OPTION_BOOL, "/environment/params/real-world-weather-fetch", true, "", 0 },
+ {"metar", true, OPTION_STRING, "/environment/metar/data", false, "", 0 },
{"disable-ai-models", false, OPTION_BOOL, "/sim/ai/enabled", false, "", 0 },
{"enable-ai-models", false, OPTION_BOOL, "/sim/ai/enabled", true, "", 0 },
{"disable-freeze", false, OPTION_BOOL, "/sim/freeze/master", false, "", 0 },
{"native-gui", true, OPTION_CHANNEL, "", false, "", 0 },
{"opengc", true, OPTION_CHANNEL, "", false, "", 0 },
{"AV400", true, OPTION_CHANNEL, "", false, "", 0 },
+ {"AV400Sim", true, OPTION_CHANNEL, "", false, "", 0 },
{"garmin", true, OPTION_CHANNEL, "", false, "", 0 },
{"nmea", true, OPTION_CHANNEL, "", false, "", 0 },
{"generic", true, OPTION_CHANNEL, "", false, "", 0 },
{"ai-scenario", true, OPTION_FUNC, "", false, "", fgOptScenario },
{"parking-id", true, OPTION_FUNC, "", false, "", fgOptParking },
{"version", false, OPTION_FUNC, "", false, "", fgOptVersion },
+ {"enable-fpe", false, OPTION_FUNC, "", false, "", fgOptFpe},
+ {"fgviewer", false, OPTION_FUNC, "", false, "", fgOptFgviewer},
{0}
};
if ( pt->has_param && !arg_value.empty() ) {
return pt->func( arg_value.c_str() );
} else if ( !pt->has_param && arg_value.empty() ) {
- return pt->func( 0 );
+ return pt->func( pt->s_param );
} else if ( pt->has_param ) {
SG_LOG( SG_GENERAL, SG_ALERT, "Option '" << arg << "' needs a parameter" );
return FG_OPTIONS_ERROR;
SG_LOG( SG_GENERAL, SG_INFO, "Processing config file: " << path );
in >> skipcomment;
-#ifndef __MWERKS__
while ( ! in.eof() ) {
-#else
- char c = '\0';
- while ( in.get(c) && c != '\0' ) {
- in.putback(c);
-#endif
string line;
-
-#if defined( macintosh )
- getline( in, line, '\r' );
-#else
getline( in, line, '\n' );
-#endif
// catch extraneous (DOS) line ending character
int i;
{
// changes should also be reflected in $FG_ROOT/data/options.xml &
// $FG_ROOT/data/Translations/string-default.xml
- const char levels[][20]= {"alpha","beta","early-production","production",0};
+ const char* levels[] = {"alpha","beta","early-production","production"};
- for (unsigned int i=0; i<(sizeof(levels)/sizeof(levels[0])-1);i++)
+ for (size_t i=0; i<(sizeof(levels)/sizeof(levels[0]));i++)
if (strcmp(str,levels[i])==0)
return i;