00001 /* 00002 00003 Copyright (C) 2003 Grame 00004 00005 This library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Lesser General Public 00007 License as published by the Free Software Foundation; either 00008 version 2.1 of the License, or (at your option) any later version. 00009 00010 This library is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 Lesser General Public License for more details. 00014 00015 You should have received a copy of the GNU Lesser General Public 00016 License along with this library; if not, write to the Free Software 00017 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00018 00019 Grame Research Laboratory, 9 rue du Garet, 69001 Lyon - France 00020 grame@grame.fr 00021 00022 */ 00023 00024 #ifndef __guidovisitor__ 00025 #define __guidovisitor__ 00026 00027 #include "exports.h" 00028 #include "smartpointer.h" 00029 00030 #include <string> 00031 using namespace std; 00032 00033 typedef SMARTP<class guidoelement> Sguidoelement; 00034 typedef SMARTP<class guidonote> Sguidonote; 00035 typedef SMARTP<class guidoseq> Sguidoseq; 00036 typedef SMARTP<class guidochord> Sguidochord; 00037 typedef SMARTP<class guidotag> Sguidotag; 00038 typedef SMARTP<class guidoparam> Sguidoparam; 00039 00048 class guidovisitor { 00049 00050 public: 00051 guidovisitor() {} 00052 virtual ~guidovisitor() {} 00053 00054 virtual void visite ( Sguidoelement& elt ) = 0; 00055 virtual void visite ( Sguidonote& elt ) = 0; 00056 virtual void visite ( Sguidoseq& elt ) = 0; 00057 virtual void visite ( Sguidochord& elt ) = 0; 00058 virtual void visite ( Sguidotag& elt ) = 0; 00059 virtual void visite ( Sguidoparam& elt ) = 0; 00060 }; 00061 00065 class guidovisitable { 00066 public: 00067 virtual void accept(guidovisitor& visitor) = 0; 00068 }; 00072 #endif