1 /* 2 GUIDO Library 3 Copyright (C) 2006-2008 Grame 4 5 This library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public 7 License as published by the Free Software Foundation; either 8 version 2.1 of the License, or (at your option) any later version. 9 10 This library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public 16 License along with this library; if not, write to the Free Software 17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 19 Grame Research Laboratory, 9 rue du Garet, 69001 Lyon - France 20 research@grame.fr 21 22 */ 23 24 #ifndef __guidoEvalSusp__ 25 #define __guidoEvalSusp__ 26 27 #include "guidosusp.h" 28 #include "guidoexpression.h" 29 #include "guidoEnv.h" 30 31 namespace guidolang 32 { 33 34 /*! 35 \brief A guido eval value suspension 36 */ 37 class export guidoEvalSusp : public guidosusp 38 { 39 protected: 40 Sguidoexpression fExp; 41 SguidoEnv fEnv; 42 43 guidoEvalSusp(Sguidoexpression e, SguidoEnv env); ~guidoEvalSusp()44 virtual ~guidoEvalSusp() {} 45 46 public: 47 static Sguidovalue create(Sguidoexpression e, SguidoEnv env); 48 virtual Sguidovalue force(); 49 virtual void acceptIn(guido::basevisitor& visitor); 50 virtual void acceptOut(guido::basevisitor& visitor); 51 virtual void print(std::ostream& os); 52 }; 53 typedef guido::SMARTP<guidoEvalSusp> SguidoEvalSusp; 54 55 } // namespace 56 57 #endif 58