00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 // $Id: visitor.h,v 1.14 2004/02/23 15:19:58 anhi Exp $ 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>& /* visitor */) 00071 00072 { 00073 } 00074 00075 template <typename T> 00076 Visitor<T>::~Visitor() 00077 00078 { 00079 } 00080 } 00081 00082 #endif // BALL_CONCEPT_VISITOR_H