]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/parser.h
Move the definition of Input's operator bool to the header
[libs/datafile.git] / source / parser.h
index 243db1feb5fd186aa8eda14e93ad9a71bc5f113c..32a776082de1896e20fbe5aa001a78669e33ea66 100644 (file)
@@ -2,7 +2,9 @@
 #define MSP_DATAFILE_PARSER_H_
 
 #include <string>
+#include <msp/core/noncopyable.h>
 #include "input.h"
+#include "mspdatafile_api.h"
 
 namespace Msp {
 namespace DataFile {
@@ -10,22 +12,22 @@ namespace DataFile {
 class Loader;
 class LoaderAction;
 class ParserMode;
-class Statement;
-class StatementKey;
+struct Statement;
+struct StatementKey;
 
 /**
 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
+class MSPDATAFILE_API Parser: private NonCopyable
 {
 private:
        Input in;
        std::string main_src;
        std::string src;
-       bool good;
-       ParserMode *mode;
+       bool good = true;
+       ParserMode *mode = nullptr;
 
 public:
        Parser(IO::Base &i, const std::string &s);
@@ -50,7 +52,7 @@ public:
        statement's signature. */
        bool parse_and_load(unsigned, Loader &, const LoaderAction &);
 
-       operator bool() const { return good && in; }
+       explicit operator bool() const { return good && in; }
 };
 
 } // namespace DataFile