#include <simgear/compiler.h>
-#include <stdlib.h> // atoi()
+#include <cstdlib> // atoi()
-#include STL_STRING
+#include <string>
#include <simgear/debug/logstream.hxx>
#include <simgear/io/iochannel.hxx>
#include "globals.hxx"
#include "fg_io.hxx"
-SG_USING_STD(string);
+using std::atoi;
+using std::string;
FGIO::FGIO()
{
}
-#include STL_ALGORITHM
-SG_USING_STD(for_each);
+#include <algorithm>
+using std::for_each;
static void delete_ptr( FGProtocol* p ) { delete p; }
FGRUL *rul = new FGRUL;
io = rul;
} else if ( protocol == "generic" ) {
- int n = 6;
- if (tokens[1] == "socket") n++;
- else if (tokens[1] == "file") n--;
- FGGeneric *generic = new FGGeneric( tokens[n] );
+ int configToken;
+ if (tokens[1] == "socket")
+ configToken = 7;
+ else if (tokens[1] == "file")
+ configToken = 5;
+ else
+ configToken = 6;
+ FGGeneric *generic = new FGGeneric( tokens[configToken] );
io = generic;
} else if ( protocol == "multiplay" ) {
if ( tokens.size() != 5 ) {
string baud = tokens[5];
SG_LOG( SG_IO, SG_INFO, " baud = " << baud );
+
SGSerial *ch = new SGSerial( device, baud );
io->set_io_channel( ch );
} else if ( medium == "file" ) {
string file = tokens[4];
SG_LOG( SG_IO, SG_INFO, " file name = " << file );
-
- SGFile *ch = new SGFile( file );
+ int repeat = 1;
+ if (tokens.size() >= 7 && tokens[6] == "repeat") {
+ if (tokens.size() >= 8) {
+ repeat = atoi(tokens[7].c_str());
+ FGGeneric* generic = dynamic_cast<FGGeneric*>(io);
+ if (generic)
+ generic->setExitOnError(true);
+ } else {
+ repeat = -1;
+ }
+ }
+ SGFile *ch = new SGFile( file, repeat );
io->set_io_channel( ch );
} else if ( medium == "socket" ) {
if ( tokens.size() < 6) {