00001
00002
00003
00004
00005
00006
00007 #ifndef BALL_CONCEPT_VISITOR_H
00008 #define BALL_CONCEPT_VISITOR_H
00009
00010 #ifndef BALL_COMMON_H
00011 # include <BALL/common.h>
00012 #endif
00013
00014 namespace BALL
00015 {
00016
00023 template <typename Host>
00024 class Visitor
00025 {
00026 public:
00027
00033 Visitor()
00034 ;
00035
00038 Visitor(const Visitor& visitor)
00039 ;
00040
00043 virtual ~Visitor()
00044 ;
00045
00047
00052 virtual void visit(Host &) = 0;
00053
00054 virtual void dummy();
00055 };
00057
00058 template <typename T>
00059 void Visitor<T>::dummy(){}
00060
00061 template <typename T>
00062 BALL_INLINE
00063 Visitor<T>::Visitor()
00064
00065 {
00066 }
00067
00068 template <typename Host>
00069 BALL_INLINE
00070 Visitor<Host>::Visitor(const Visitor<Host>& )
00071
00072 {
00073 }
00074
00075 template <typename T>
00076 Visitor<T>::~Visitor()
00077
00078 {
00079 }
00080 }
00081
00082 #endif // BALL_CONCEPT_VISITOR_H