/* filesystem/inifile.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #ifndef __INCLUDED_FILESYSTEM_INIFILE_H__ #define __INCLUDED_FILESYSTEM_INIFILE_H__ #include #include #include "math/vector3f.h" #include "math/color.h" #include "filesystem/filestream.h" #include "filesystem/inistream.h" namespace filesystem { /// wrapper class for the IniStream reader class IniFile : public IniStream { public: IniFile(const char *ininame = 0); IniFile(std::string const & ininame); ~IniFile(); /// open an ini file for reading bool open(std::string const & ininame); /// open an ini file for reading bool open(const char *ininame); /// parse one line, returns false on end-of-file bool getline(); /// print a default unkown value error void unknown_value() const; /// print a default unkown key error void unknown_key() const; /// print a default unkown section error void unknown_section() const; /// print a generic error message void unknown_error(const char *text = 0) const; void unknown_error(const std::string &text) const; /// return true of the ini file is open for reading inline bool is_open() { return inifile_stream.is_open(); } /// return true of the ini file is open for reading inline bool good() { return inifile_stream.good(); } /// current name in the virtual filesystem inline std::string const & name() const { return inifile_stream.name(); } /// current actual filename inline std::string const & filename() const { return inifile_stream.filename(); } /// close the file void close(); private: IFileStream inifile_stream; }; } #endif // __INCLUDED_FILESYSTEM_INIFILE_H__