Salome HOME
merge from branch DEV tag mergeto_trunk_04apr08
[modules/yacs.git] / src / engine / Visitor.hxx
1 #ifndef __VISITOR_HXX__
2 #define __VISITOR_HXX__
3
4 #include <string>
5 #include <map>
6 #include <list>
7
8 namespace YACS
9 {
10   namespace ENGINE
11   {
12     class Node;
13     class Bloc;
14     class ElementaryNode;
15     class ComposedNode;
16     class ForEachLoop;
17     class InlineNode;
18     class InlineFuncNode;
19     class Loop;
20     class ForLoop;
21     class Proc;
22     class ServiceNode;
23     class ServiceInlineNode;
24     class DataNode;
25     class Switch;
26     class WhileLoop;
27     class TypeCode;
28     class TypeCodeObjref;
29     class Container;
30
31     class Visitor
32     {
33     public:
34       Visitor(ComposedNode *root);
35       virtual void visitBloc(Bloc *node) = 0;
36       virtual void visitElementaryNode(ElementaryNode *node) = 0;
37       virtual void visitForEachLoop(ForEachLoop *node) = 0;
38       virtual void visitForLoop(ForLoop *node) = 0;
39       virtual void visitInlineNode(InlineNode *node) = 0;
40       virtual void visitInlineFuncNode(InlineFuncNode *node) = 0;
41       virtual void visitLoop(Loop *node) = 0;
42       virtual void visitProc(Proc *node) = 0;
43       virtual void visitServiceNode(ServiceNode *node) = 0;
44       virtual void visitServiceInlineNode(ServiceInlineNode *node) = 0;
45       virtual void visitSwitch(Switch *node) = 0;
46       virtual void visitWhileLoop(WhileLoop *node) = 0;
47       virtual void visitPresetNode(DataNode *node) = 0;
48       virtual void visitOutNode(DataNode *node) = 0;
49       virtual void visitStudyInNode(DataNode *node) = 0;
50       virtual void visitStudyOutNode(DataNode *node) = 0;
51
52     protected:
53       std::map<std::string, std::string> getNodeProperties(Node *node);
54       std::map<std::string, TypeCode*> getTypeCodeMap(Proc *proc);
55       std::map<std::string, Container*> getContainerMap(Proc *proc);
56       std::list<TypeCodeObjref *> getListOfBases(TypeCodeObjref *objref);
57
58       ComposedNode *_root;
59     };
60   }
61 }
62 #endif