/* inistream.h This file is part of the Project::OSiRiON world editor and is distributed under the terms and conditions of the GNU General Public License version 2 */ #ifndef __INCLUDED_EDITOR_INISTREAM__ #define __INCLUDED_EDITOR_INISTREAM__ #include #include #include namespace editor { /** * @brief a class to read an ini file on a text stream * The IniStream class is able to decode the structure of a windows-like * .ini file from a text stream. **/ class IniStream { public: IniStream(); ~IniStream(); /// parse one line, returns false on end-of-file bool getline(QTextStream &textstream); /// current section label inline const QString & section() const { return section_current; } /// current key inline const QString & key() const { return key_current; } /// current value inline const QString & value() const { return value_current; } /// current line number inline unsigned int line() const { return line_number; } /// comment string for the current section or key/value pair inline const QString & comment() const { return comment_current; } /// true if the last read statement was a section header bool got_section() const; /// true if the current section matches bool in_section(const char *sectionlabel) const; /// true if the last read statement was a certain section header bool got_section(const char *sectionlabel) const; /// true if the last read statement was a key=value pair bool got_key() const; bool got_key(const char *keylabel); /// check if the last read key=value pair matches keylabel and store the string value bool got_key_string(const char *keylabel, QString &valuestring); /// check if the last read key=value pair matches keylabel and store the value in x y and z bool got_key_vector3f(const char *keylabel, float &x, float &y, float &z); /// check if the last read key=value pair matches keylabel and store the float value bool got_key_float(const char *keylabel, float &f); /* /// check if the last read key=value pair matches keylabel and store the value in valuestring, converted to label bool got_key_label(const char * keylabel, QString & labelstring); bool got_key_color(const char * keylabel, QColor & color); bool got_key_angle(const char * keylabel, float & f); bool got_key_long(const char * keylabel, long & l); bool got_key_vector3f(const char * keylabel, math::Vector3f & v); bool got_key_bool(const char * keylabel, bool & b); */ void clear(); private: QString section_current; QString key_current; QString value_current; QString comment_current; QString comment_next; bool last_read_was_key; bool last_read_was_section; unsigned int line_number; }; } // namespace editor #endif // __INCLUDED_EDITOR_INISTREAM__