X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Fparser.h;h=9ab1232aaa0d9ad7aec82b24ee873b8b4e998e16;hb=30465dd3b9f55ec42c4b19c3c2077eede7237a26;hp=b6c8369debb91d379e66d8f1a2afda5f2e53bea9;hpb=7a16308e72aef363727b21348779673edf8e5c07;p=libs%2Fgl.git diff --git a/source/glsl/parser.h b/source/glsl/parser.h index b6c8369d..9ab1232a 100644 --- a/source/glsl/parser.h +++ b/source/glsl/parser.h @@ -16,7 +16,7 @@ class Parser { private: std::string source; - std::string source_name; + unsigned base_index; unsigned source_index; Tokenizer tokenizer; Preprocessor preprocessor; @@ -33,12 +33,15 @@ public: Module &parse(IO::Base &, const std::string &, unsigned = 0); private: - void parse_source(const std::string &); + void parse_source(const std::string &, unsigned); void set_required_version(const Version &); + void source_reference(unsigned, const std::string &); void stage_change(Stage::Type); + void line_change(int, unsigned); std::string expect_type(); std::string expect_identifier(); + int expect_integer(); bool check(const std::string &); static bool is_interface_qualifier(const std::string &); @@ -61,12 +64,14 @@ private: RefPtr parse_import(); RefPtr parse_precision(); RefPtr parse_layout(); - void parse_block(Block &, bool); + template + void parse_block(Block &, bool, RefPtr (Parser::*)()); RefPtr parse_expression(unsigned = 0); RefPtr parse_binary(const RefPtr &, const Operator *); RefPtr parse_function_call(const VariableReference &); RefPtr parse_struct_declaration(); RefPtr parse_variable_declaration(); + RefPtr parse_variable_declaration_with_layout(); RefPtr parse_function_declaration(); RefPtr parse_interface_block(); RefPtr parse_conditional();