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