X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fparser.h;h=aeab71d2d3fbd4022e30a9c8b26b0ab3d14a31ed;hb=6653c7d83dbe1fe81a541a125be8bb808b234eb7;hp=5bec123ae74f7aeee3485dbbeeb226d0bad928b7;hpb=27630d44298cb67e075c166f4421288cc8ca117e;p=libs%2Fdatafile.git diff --git a/source/parser.h b/source/parser.h index 5bec123..aeab71d 100644 --- a/source/parser.h +++ b/source/parser.h @@ -1,14 +1,6 @@ -/* $Id$ - -This file is part of libmspdatafile -Copyright © 2006-2007 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - #ifndef MSP_DATAFILE_PARSER_H_ #define MSP_DATAFILE_PARSER_H_ -#include #include #include "input.h" @@ -19,19 +11,33 @@ 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 { +private: + Input in; + std::string main_src; + std::string src; + bool good; + ParserMode *mode; + public: - Parser(std::istream &, const std::string &); + Parser(IO::Base &i, const std::string &s); ~Parser(); - Statement parse(); - operator bool() const { return in; } -private: - Input in; - std::string src; - bool good; - ParserMode *mode; + /** + 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(bool raw = false); + + operator bool() const { return good && in; } }; } // namespace DataFile