add runvisitor hierarchy
[scilab.git] / scilab / modules / types / includes / callable.hxx
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2008-2008 - DIGITEO - Antoine ELIAS
4  *  Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
5  *
6  *  This file must be used under the terms of the CeCILL.
7  *  This source file is licensed as described in the file COPYING, which
8  *  you should have received as part of this distribution.  The terms
9  *  are also available at
10  *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
11  *
12  */
13
14 #ifndef __CALLABLE_HXX__
15 #define __CALLABLE_HXX__
16
17 #include <string>
18 #include "types.hxx"
19
20 #include "runvisitor.hxx"
21
22 namespace types
23 {
24   class Callable : public InternalType
25   {
26   public :
27     enum ReturnValue
28       {
29         OK,
30         OK_NoResult,
31         Error
32       };
33     
34     Callable(): InternalType() {}
35     virtual ~Callable() {}
36
37     Callable *  getAsCallable() { return this; }
38     bool isCallable() { return true; }
39
40                 virtual ReturnValue call(typed_list &in, int _iRetCount, typed_list &out, ast::RunVisitor* execFunc) = 0;
41     
42     void setName(std::string _stName) { m_stName = _stName; }
43     std::string getName() { return m_stName; }
44     void setModule(std::string _stModule) { m_stModule = _stModule; }
45     std::string getModule() { return m_stModule; }
46     
47   protected :
48     std::string m_stName;
49     std::string m_stModule;
50   };
51 }
52
53
54 #endif /* !__CALLABLE_HXX__ */