owlps/owlps-positioning/src/textfilereader.hh

64 lines
1.3 KiB
C++

/*
* This file is part of the Owl Positioning System (OwlPS).
* OwlPS is a project of the University of Franche-Comté
* (Université de Franche-Comté), France.
*/
#ifndef _OWLPS_POSITIONING_TEXTFILEREADER_HH_
#define _OWLPS_POSITIONING_TEXTFILEREADER_HH_
#include <string>
#include <fstream>
/// Reads text from a file, line by line
/**
* If the file name is a dash ('-'), the standard input is used.
*/
class TextFileReader
{
protected:
/// Name of the input file
std::string file_name ;
/// Stream associated with the file
std::ifstream file ;
/// Original rdbuf of the stream
std::streambuf *file_buf ;
/// Number of the last line read
unsigned int current_line_nb ;
/// Checks if the file is readable and closes it if not
bool eof_close(void) ;
public:
TextFileReader(const std::string &_file_name) ;
virtual ~TextFileReader(void) ;
/** @name Operations */
//@{
/// Reads the next non-blank line
bool read_nonblank_line(std::string &text) ;
/// Reads the next line
bool read_line(std::string &text) ;
bool eof(void) const ;
//@}
} ;
/* *** Operations *** */
/**
* @return \em true if the end of file is reached.
* @return \em false if there is something more to read.
*/
inline bool TextFileReader::eof() const
{
return ! file && file.eof() ;
}
#endif // _OWLPS_POSITIONING_TEXTFILEREADER_HH_