X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fglsl%2Fcompiler.h;h=6448ae6cfa6fe962dc5097ffcf2011f835ebbaf9;hp=9891293af303e5552c1d970977f7ac528c4af6a7;hb=c1d3a1d7c1997bc71a30af2e2c25cb4a2b66784b;hpb=4414f0245005c8cfcd02b51ea394d612cc5776c4 diff --git a/source/glsl/compiler.h b/source/glsl/compiler.h index 9891293a..6448ae6c 100644 --- a/source/glsl/compiler.h +++ b/source/glsl/compiler.h @@ -28,6 +28,16 @@ private: REDO_PREVIOUS }; + enum ResolveFlags + { + RESOLVE_BLOCKS = 1, + RESOLVE_TYPES = 2, + RESOLVE_VARIABLES = 4, + RESOLVE_EXPRESSIONS = 8, + RESOLVE_FUNCTIONS = 16, + RESOLVE_ALL = 31 + }; + Features features; Module *module; std::vector imported_names; @@ -113,8 +123,13 @@ private: variables. */ void generate(Stage &, Mode); - /** Resolves references and expression types. */ - void resolve(Stage &); + template + bool resolve(Stage &, unsigned &, unsigned); + + /** Resolves various references between nodes. Flags can be specified to + request resolving particular aspects. Resolving may ripple into other + aspects as necessary. */ + void resolve(Stage &, unsigned = RESOLVE_ALL); bool validate(Stage &);