X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fio%2Fsg_file.hxx;h=7d84286389778812efdd72b49dfd9022eb223723;hb=201cb61f842ef50a19438e3872ba22e588fa1afc;hp=a64dd6eeba97a21772d0c01ff0293ecc8f834452;hpb=d4c7e950927b1e19a7a7622a7919f32233a6b7a8;p=simgear.git diff --git a/simgear/io/sg_file.hxx b/simgear/io/sg_file.hxx index a64dd6ee..7d842863 100644 --- a/simgear/io/sg_file.hxx +++ b/simgear/io/sg_file.hxx @@ -26,36 +26,25 @@ #ifndef _SG_FILE_HXX #define _SG_FILE_HXX - -#ifndef __cplusplus -# error This library requires C++ -#endif - #include #include -#include // for open(), read(), write(), close() -#include // for open(), read(), write(), close() -#include // for open(), read(), write(), close() -#if !defined( _MSC_VER ) -# include // for open(), read(), write(), close() -#endif - #include "iochannel.hxx" -using std::string; - /** * A file I/O class based on SGIOChannel. */ class SGFile : public SGIOChannel { - string file_name; + std::string file_name; int fp; bool eof_flag; - bool repeat; + // Number of repetitions to play. -1 means loop infinitely. + const int repeat; + int iteration; // number of current repetition, + // starting at 0 public: @@ -67,7 +56,12 @@ public: * @param file name of file to open * @param repeat On eof restart at the beginning of the file */ - SGFile( const string& file, bool repeat_ = false ); + SGFile( const std::string& file, int repeat_ = 1 ); + + /** + * Create an SGFile from an existing, open file-descriptor + */ + SGFile( int existingFd ); /** Destructor */ ~SGFile(); @@ -91,10 +85,10 @@ public: bool close(); /** @return the name of the file being manipulated. */ - inline string get_file_name() const { return file_name; } + inline std::string get_file_name() const { return file_name; } /** @return true of eof conditions exists */ - inline bool eof() const { return eof_flag; }; + virtual bool eof() const { return eof_flag; }; };