]> git.tdb.fi Git - libs/gl.git/blobdiff - source/programbuilder.h
Use texture() instead of texture2D() in non-legacy mode
[libs/gl.git] / source / programbuilder.h
index 0883f6a74fd07a6479dc1b01fa62424882455042..9ca9c8539b54c1046a2d97b29e7b854506c128d2 100644 (file)
@@ -56,6 +56,7 @@ private:
        enum VariableScope
        {
                NO_SCOPE,
+               TYPE,
                UNIFORM,
                ATTRIBUTE,
                VERTEX,
@@ -84,7 +85,9 @@ private:
        {
                std::string name;
                const VariableDefinition *variable;
+               const VariableDefinition *type;
                std::string resolved_name;
+               std::string resolved_block;
                bool fuzzy_space;
                std::string resolved_space;
                bool array_sum;
@@ -100,6 +103,7 @@ private:
 
                void resolve(const VariableDefinition &);
                void resolve(ShaderVariable &);
+               void resolve_type(const VariableDefinition &);
                void resolve_space(const std::string &);
                void resolve_array(const StandardFeatures &, unsigned = 0);
                void add_reference(ShaderVariable &);
@@ -107,6 +111,7 @@ private:
                void check_inline(bool, bool);
                bool is_referenced_from(VariableScope) const;
                InterfaceFlags get_interface_flags(VariableScope) const;
+               std::string create_type_declaration() const;
                std::string create_declaration(char = 0, bool = false) const;
                std::string create_replacement(VariableScope, const char * = 0) const;
                std::string create_expression(const char * = 0) const;
@@ -123,6 +128,7 @@ private:
        StandardFeatures features;
        std::list<VariableDefinition> custom_variables;
        std::string feature_flags;
+       std::map<std::string, std::string> aliases;
        bool optimize;
 
        static const VariableDefinition standard_variables[];
@@ -137,10 +143,12 @@ public:
 private:
        std::string create_source(const std::list<ShaderVariable *> &, VariableScope) const;
        bool evaluate_flags(const char *) const;
+       static const char *unqualified_name(const char *);
        static MatchType name_match(const char *, const char *, const char ** = 0);
        static bool parse_identifier(const char *, unsigned &, unsigned &);
        static std::vector<std::string> extract_identifiers(const char *);
        static std::string replace_identifiers(const char *, const std::map<std::string, std::string> &);
+       std::string create_expression(const ShaderVariable &, const char * = 0) const;
 };
 
 } // namespace GL