00001 00002 /* Copyright (c) 2008, Stefan Eilemann <[email protected]> 00003 All rights reserved. */ 00004 00005 #ifndef EQ_CHANNELVISITOR_H 00006 #define EQ_CHANNELVISITOR_H 00007 00008 #include <iostream> 00009 00010 namespace eq 00011 { 00012 class Channel; 00013 00017 class ChannelVisitor 00018 { 00019 public: 00021 ChannelVisitor(){} 00022 00024 virtual ~ChannelVisitor(){} 00025 00027 enum Result 00028 { 00029 TRAVERSE_CONTINUE, 00030 TRAVERSE_TERMINATE, 00031 TRAVERSE_PRUNE 00032 }; 00033 00035 virtual Result visit( Channel* channel ) 00036 { return TRAVERSE_CONTINUE; } 00037 }; 00038 00039 inline std::ostream& operator << ( std::ostream& os, 00040 const ChannelVisitor::Result result ) 00041 { 00042 switch( result ) 00043 { 00044 case ChannelVisitor::TRAVERSE_CONTINUE: 00045 os << "continue"; 00046 break; 00047 case ChannelVisitor::TRAVERSE_TERMINATE: 00048 os << "terminate"; 00049 break; 00050 case ChannelVisitor::TRAVERSE_PRUNE: 00051 os << "prune"; 00052 break; 00053 default: 00054 os << "ERROR"; 00055 break; 00056 } 00057 return os; 00058 } 00059 } 00060 #endif // EQ_CHANNELVISITOR_H
0.6 by
1.5.5