X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fio%2Fsg_file.hxx;h=950cc5d751f91331817d7b4e68bb1baeecb5fdc0;hb=3bcd0bafd5fba1eebadfd1cb8a7294d665cf1932;hp=b116cf1f8c7d3e26cd4d1c070b2a6f5572ee0367;hpb=bf0d95145d8a49410b6ed5ea6c451ee916b9fc02;p=simgear.git diff --git a/simgear/io/sg_file.hxx b/simgear/io/sg_file.hxx index b116cf1f..950cc5d7 100644 --- a/simgear/io/sg_file.hxx +++ b/simgear/io/sg_file.hxx @@ -1,59 +1,44 @@ -/** \file sg_file.hxx - * File I/O routines. - */ - +///@file +/// File I/O routines. +// // Written by Curtis Olson, started November 1999. // -// Copyright (C) 1999 Curtis L. Olson - curt@flightgear.org +// Copyright (C) 1999 Curtis L. Olson - http://www.flightgear.org/~curt // -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License as -// published by the Free Software Foundation; either version 2 of the -// License, or (at your option) any later version. +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Library General Public +// License as published by the Free Software Foundation; either +// version 2 of the License, or (at your option) any later version. // -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. +// Library General Public License for more details. // -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -// -// $Id$ - +// You should have received a copy of the GNU Library General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. #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" -SG_USING_STD(string); - +#include /** * A file I/O class based on SGIOChannel. */ class SGFile : public SGIOChannel { - string file_name; + std::string file_name; int fp; + bool eof_flag; + // Number of repetitions to play. -1 means loop infinitely. + const int repeat; + int iteration; // number of current repetition, + // starting at 0 public: @@ -63,8 +48,14 @@ public: * name. This file is not opened immediately, but instead will be * opened when the open() method is called. * @param file name of file to open + * @param repeat On eof restart at the beginning of the file + */ + SGFile( const std::string& file, int repeat_ = 1 ); + + /** + * Create an SGFile from an existing, open file-descriptor */ - SGFile( const string& file ); + SGFile( int existingFd ); /** Destructor */ ~SGFile(); @@ -87,11 +78,11 @@ public: // close file bool close(); - /** Return the name of the file being manipulated. */ - inline string get_file_name() const { return file_name; } -}; + /** @return the name of the file being manipulated. */ + inline std::string get_file_name() const { return file_name; } + /** @return true of eof conditions exists */ + virtual bool eof() const { return eof_flag; }; +}; #endif // _SG_FILE_HXX - -