]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/tokenizer.h
Use default member initializers for simple types
[libs/gl.git] / source / glsl / tokenizer.h
index a7329182df53fcf5c8d7fd0cc844eb206c4f408f..26c4b93c683ac7316fff92fda8aa8ab082215298 100644 (file)
@@ -14,7 +14,10 @@ class Preprocessor;
 struct Location
 {
        std::string name;
-       unsigned line;
+       unsigned line = 0;
+
+       Location() = default;
+       Location(const std::string &n, unsigned l): name(n), line(l) { }
 };
 
 class Tokenizer
@@ -26,7 +29,9 @@ private:
        std::string::const_iterator iter;
        std::string::const_iterator source_end;
        Location location;
-       bool allow_preprocess;
+       bool progress_mark = false;
+       bool allow_preprocess = true;
+       bool suppress_line_advance = false;
        std::string last_token;
        std::deque<std::string> next_tokens;
 
@@ -36,13 +41,18 @@ public:
        void begin(const std::string &, const std::string &);
        const std::string &peek_token(unsigned = 0);
        const std::string &parse_token();
+       const std::string &get_last_token() const { return last_token; }
        void expect(const std::string &);
+       void set_location(const Location &);
+       void clear_progress_mark() { progress_mark = false; }
+       bool get_progress_mark() const { return progress_mark; }
        const Location &get_location() const { return location; }
 private:
        std::string parse_token_();
        void preprocess();
        std::string parse_identifier();
        std::string parse_number();
+       std::string parse_string();
        std::string parse_other();
        void skip_comment_and_whitespace();
 };