]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/debug.h
Recognize unknown index as matching any index
[libs/gl.git] / source / glsl / debug.h
index b377b84488a5cd897645f63ad728d80337262858..c3e9c701075b87974a7e5101ad635bf0bf8e5d8b 100644 (file)
@@ -22,33 +22,48 @@ private:
                REACH = 0x2574         // ╴
        };
 
+       struct Branch
+       {
+               std::string text;
+               Node *node;
+
+               Branch(const char *t, Node *n = 0): text(t), node(n) { }
+               Branch(const std::string &t, Node *n = 0): text(t), node(n) { }
+               Branch(Node *n): node(n) { }
+       };
+
        std::map<const Node *, unsigned> node_labels;
        std::string formatted;
        std::vector<TreeChars> tree;
 
 public:
-       const std::string &apply(Stage &);
+       std::string apply(Stage &);
+       std::string apply(Node &n) { n.visit(*this); return formatted; }
 
 private:
        void append(const std::string &);
+       void append(const Node &, const std::string &);
+       void append_subtree(const std::vector<Branch> &);
+       void append_subtree(Node &);
        void begin_sub();
        void last_branch();
        void end_sub();
-       void annotated_branch(const std::string &, Node &);
        unsigned get_label(const Node &);
+       std::string format_type(TypeDeclaration *);
 
        template<typename T>
        typename T::const_iterator increment(typename T::const_iterator &, const T &);
 
        virtual void visit(Block &);
        virtual void visit(Literal &);
-       virtual void visit(ParenthesizedExpression &);
        virtual void visit(VariableReference &);
        virtual void visit(InterfaceBlockReference &);
        virtual void visit(MemberAccess &);
+       virtual void visit(Swizzle &);
        virtual void visit(UnaryExpression &);
        virtual void visit(BinaryExpression &);
        virtual void visit(Assignment &);
+       virtual void visit(TernaryExpression &);
        virtual void visit(FunctionCall &);
        virtual void visit(ExpressionStatement &);
        virtual void visit(Import &);