00001 /* drawervisitor -- Base class for classes that operate on the Drawer hierarchy 00002 Copyright (C) 2002 Aaron Bentley 00003 00004 This program is free software; you can redistribute it and/or modify 00005 it under the terms of the GNU General Public License as published by 00006 the Free Software Foundation; either version 2, or (at your option) 00007 any later version. 00008 00009 This program is distributed in the hope that it will be useful, 00010 but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 GNU General Public License for more details. 00013 00014 You should have received a copy of the GNU General Public License 00015 along with this program; if not, write to the Free Software Foundation, 00016 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ 00017 00018 using meta::Typelist; 00019 00020 typedef meta::List<DarkFirst, PrettyDrawer, Drawer>::Ret Drawertypelist; 00021 namespace visitor 00022 { 00024 typedef TlVisitor<Drawertypelist>::Ret DrawerVisitor; 00025 } 00026 00027 00028 class DrawerName: public visitor::DrawerVisitor 00029 { 00030 private: 00031 void do_visit(DarkFirst &source) 00032 { 00033 context::ContException foo("DarkFirst"); 00034 throw foo; 00035 } 00036 void do_visit(PrettyDrawer &source) 00037 { 00038 context::ContException foo("PrettyDrawer"); 00039 throw foo; 00040 } 00041 void do_visit(Drawer &source) 00042 { 00043 context::ContException foo("Drawer"); 00044 throw foo; 00045 } 00046 00047 }; 00048 00049