libsesstype  2.0.0
Library for Session Types programming.
node_visitor.h
Go to the documentation of this file.
00001 
00005 #ifndef SESSTYPE__UTIL__NODE_VISITOR_H__
00006 #define SESSTYPE__UTIL__NODE_VISITOR_H__
00007 
00008 #include "sesstype/msg.h"
00009 #include "sesstype/role.h"
00010 #include "sesstype/node.h"
00011 #include "sesstype/node/interaction.h"
00012 #include "sesstype/node/choice.h"
00013 #include "sesstype/node/recur.h"
00014 #include "sesstype/node/continue.h"
00015 #include "sesstype/node/par.h"
00016 #include "sesstype/node/nested.h"
00017 #include "sesstype/node/interruptible.h"
00018 
00019 #ifdef __cplusplus
00020 
00021 namespace sesstype {
00022 
00023 namespace util {
00024 class NodeVisitor;
00025 } // namespace util
00026 
00027 template class BlockNodeTmpl<Node, Role, MsgSig, util::NodeVisitor>;
00028 template class InteractionNodeTmpl<Node, Role, MsgSig, util::NodeVisitor>;
00029 template class ChoiceNodeTmpl<Node, Role, MsgSig, util::NodeVisitor>;
00030 template class RecurNodeTmpl<Node, Role, MsgSig, util::NodeVisitor>;
00031 template class ContinueNodeTmpl<Node, Role, MsgSig, util::NodeVisitor>;
00032 template class ParNodeTmpl<Node, Role, MsgSig, util::NodeVisitor>;
00033 template class NestedNodeTmpl<Node, Role, MsgSig, util::NodeVisitor>;
00034 template class InterruptibleNodeTmpl<Node, Role, MsgSig, util::NodeVisitor>;
00035 
00036 } // namespace sesstype
00037 #endif
00038 
00039 #ifdef __cplusplus
00040 namespace sesstype {
00041 namespace util {
00042 #endif
00043 
00044 #ifdef __cplusplus
00045 
00048 class NodeVisitor {
00049   public:
00050     virtual void visit(Node *node) = 0;
00051     virtual void visit(BlockNodeTmpl<Node, Role, MsgSig, util::NodeVisitor> *node) = 0;
00052     virtual void visit(InteractionNodeTmpl<Node, Role, MsgSig, util::NodeVisitor> *node) = 0;
00053     virtual void visit(ChoiceNodeTmpl<Node, Role, MsgSig, util::NodeVisitor> *node) = 0;
00054     virtual void visit(RecurNodeTmpl<Node, Role, MsgSig, util::NodeVisitor> *node) = 0;
00055     virtual void visit(ContinueNodeTmpl<Node, Role, MsgSig, util::NodeVisitor> *node) = 0;
00056     virtual void visit(ParNodeTmpl<Node, Role, MsgSig, util::NodeVisitor> *node) = 0;
00057     virtual void visit(NestedNodeTmpl<Node, Role, MsgSig, util::NodeVisitor> *node) = 0;
00058     virtual void visit(InterruptibleNodeTmpl<Node, Role, MsgSig, util::NodeVisitor> *node) = 0;
00059 };
00060 #endif // __cplusplus
00061 
00062 #ifdef __cplusplus
00063 } // namespace util
00064 } // namespace sesstype
00065 #endif
00066 
00067 #endif//SESSTYPE__UTIL__NODE_VISITOR_H__
 All Classes Namespaces Files Functions