where : value returned was inverted.
[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 "internal.hxx"
19
20 #include "visitor.hxx"
21 #include "dynlib_types.h"
22
23 //disable warnings about exports STL items
24 #pragma warning (disable : 4251)
25
26 using namespace ast;
27 namespace types
28 {
29 class TYPES_IMPEXP Callable : public InternalType
30 {
31 public :
32     enum ReturnValue
33     {
34         OK,
35         OK_NoResult,
36         Error
37     };
38
39     Callable(): InternalType()
40     {
41         m_iFirstLine = 0;
42     }
43     virtual             ~Callable() {}
44
45     bool                isCallable()
46     {
47         return true;
48     }
49
50     virtual ReturnValue   call(typed_list &in, optional_list &opt, int _iRetCount, typed_list &out, ast::ConstVisitor* execFunc) = 0;
51
52     void                  setName(std::wstring _wstName)
53     {
54         m_wstName = _wstName;
55     }
56     std::wstring        getName()
57     {
58         return m_wstName;
59     }
60     void                  setModule(std::wstring _wstModule)
61     {
62         m_wstModule = _wstModule;
63     }
64     std::wstring        getModule()
65     {
66         return m_wstModule;
67     }
68
69     /* return type as string ( double, int, cell, list, ... )*/
70     virtual std::wstring  getTypeStr()
71     {
72         return L"callable";
73     }
74     /* return type as short string ( s, i, ce, l, ... )*/
75     virtual std::wstring  getShortTypeStr() = 0;
76     virtual InternalType* clone(void) = 0;
77
78     virtual bool        isAssignable(void)
79     {
80         return true;
81     }
82
83     virtual int        getNbInputArgument(void)
84     {
85         return -1;
86     }
87
88     virtual int        getNbOutputArgument(void)
89     {
90         return -1;
91     }
92
93     virtual int        getFirstLine(void)
94     {
95         return m_iFirstLine;
96     }
97
98     virtual void       setFirstLine(int _iFirstLine)
99     {
100         m_iFirstLine = _iFirstLine;
101     }
102
103 protected :
104     std::wstring           m_wstName;
105     std::wstring           m_wstModule;
106     int                    m_iFirstLine;
107 };
108 }
109
110
111 #endif /* !__CALLABLE_HXX__ */