X-Git-Url: http://git.tdb.fi/?p=libs%2Fdatafile.git;a=blobdiff_plain;f=source%2Fparser.h;h=c830c3c8367f5c082788ad864f23eed84266439a;hp=5bec123ae74f7aeee3485dbbeeb226d0bad928b7;hb=505042fcda16151f5ace243c243d34af3efcf677;hpb=27630d44298cb67e075c166f4421288cc8ca117e diff --git a/source/parser.h b/source/parser.h index 5bec123..c830c3c 100644 --- a/source/parser.h +++ b/source/parser.h @@ -19,19 +19,32 @@ class ParserMode; class Statement; struct Token; +/** +Frontend for loading datafiles. Handles switching between text and binary +formats. A Parser evaluates into a boolean value indicating whether more +statements may be read. +*/ class Parser { -public: - Parser(std::istream &, const std::string &); - ~Parser(); - - Statement parse(); - operator bool() const { return in; } private: Input in; std::string src; bool good; ParserMode *mode; + +public: + Parser(std::istream &i, const std::string &s); + ~Parser(); + + /** + Reads a statement from the input. If the end of input was reached, an empty + invalid statement will be returned. If an error occurs, the parser will be + marked as bad and no more statements may be read, even if the exception was + caught. + */ + Statement parse(); + + operator bool() const { return good && in; } }; } // namespace DataFile