Files
vimix/Visitor.h
2020-03-31 17:01:33 +02:00

54 lines
1.2 KiB
C++

#ifndef VISITOR_H
#define VISITOR_H
#include <string>
namespace tinyxml2 {
class XMLDocument;
class XMLElement;
}
// Forward declare different kind of Node
class Node;
class Primitive;
class Group;
class Scene;
class TexturedRectangle;
class MediaRectangle;
class LineStrip;
// Declares the interface for the visitors
class Visitor {
public:
// Declare overloads for each kind of Node to visit
virtual void visit(Node& n) = 0;
virtual void visit(Primitive& n) = 0;
virtual void visit(Group& n) = 0;
virtual void visit(TexturedRectangle& n) = 0;
virtual void visit(MediaRectangle& n) = 0;
virtual void visit(LineStrip& n) = 0;
virtual void visit(Scene& n) = 0;
};
class SessionVisitor : public Visitor {
std::string filename_;
tinyxml2::XMLDocument *xmlDoc_;
tinyxml2::XMLElement *xmlCurrent_;
public:
SessionVisitor(std::string filename);
void visit(Node& n) override;
void visit(Primitive& n) override;
void visit(Group& n) override;
void visit(TexturedRectangle& n) override;
void visit(MediaRectangle& n) override;
void visit(LineStrip& n) override;
void visit(Scene& n) override;
};
#endif // VISITOR_H