#ifndef VISITOR_H #define VISITOR_H #include // Forward declare different kind of Node class Node; class Group; class Switch; class Primitive; class Scene; class ImageSurface; class MediaSurface; class LineStrip; class LineSquare; class LineCircle; class Mesh; class MediaPlayer; class Shader; class ImageShader; // Declares the interface for the visitors class Visitor { public: // Declare overloads for each kind of Node to visit virtual void visit(Scene& n) = 0; virtual void visit(Node& n) = 0; virtual void visit(Group& n) = 0; virtual void visit(Switch& n) = 0; virtual void visit(Primitive& n) = 0; virtual void visit(ImageSurface& n) = 0; virtual void visit(MediaSurface& n) = 0; virtual void visit(LineStrip& n) = 0; virtual void visit(LineSquare& n) = 0; virtual void visit(LineCircle& n) = 0; virtual void visit(Mesh& n) = 0; virtual void visit(MediaPlayer& n) = 0; virtual void visit(Shader& n) = 0; virtual void visit(ImageShader& n) = 0; }; #endif // VISITOR_H