Command line debugger first version
[scilab.git] / scilab / modules / ast / includes / ast / macrovarvisitor.hxx
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2013 - Scilab Enterprises - Antoine ELIAS
4  *
5  *  This file must be used under the terms of the CeCILL.
6  *  This source file is licensed as described in the file COPYING, which
7  *  you should have received as part of this distribution.  The terms
8  *  are also available at
9  *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  *
11  */
12
13 #ifndef __MACROVARVISITOR_HXX__
14 #define __MACROVARVISITOR_HXX__
15
16 #include "visitor.hxx"
17 #include "allexp.hxx"
18 #include "allvar.hxx"
19 #include "alldec.hxx"
20 #include "dummyvisitor.hxx"
21
22 /*
23 ** This class defines a dummy visitor which only purpose is to
24 ** followup itself through the AST.
25 */
26
27 namespace ast
28 {
29 class EXTERN_AST MacrovarVisitor : public DummyVisitor
30 {
31 public:
32     MacrovarVisitor()
33     {
34         isAssignExpLeftExp = false;
35     }
36     ~MacrovarVisitor() {}
37
38     MacrovarVisitor* clone()
39     {
40         return new MacrovarVisitor();
41     }
42
43     void visit (const MatrixLineExp &e);
44     void visit (const SimpleVar &e);
45     void visit(const OpExp &e);
46     void visit(const CallExp &e);
47     void visit(const ForExp &e);
48     void visit (const VarDec &e);
49     void visit (const FunctionDec &e);
50     void visit(const FieldExp &e);
51     void visit(const AssignExp &e);
52     void visit(const AssignListExp &e);
53
54     std::list<std::wstring>& getIn();
55     std::list<std::wstring>& getOut();
56     std::list<std::wstring>& getExternal();
57     std::list<std::wstring>& getCalled();
58     std::list<std::wstring>& getLocal();
59     void add(std::list<std::wstring>& lst);
60     void add();
61
62     bool isAlreadyIn(std::list<std::wstring>& lst);
63     bool isAlreadyUsed();
64
65     void addIn(const std::wstring& st)
66     {
67         m_in.push_back(st);
68     }
69
70     void addOut(const std::wstring& st)
71     {
72         m_out.push_back(st);
73     }
74
75     std::list<std::wstring> m_in; //inout variables
76     std::list<std::wstring> m_out; //output functions
77     std::list<std::wstring> m_external; //external variables
78     std::list<std::wstring> m_called; //called functions
79     std::list<std::wstring> m_local; // local variables
80
81     std::wstring m_current;
82     bool isAssignExpLeftExp;
83 };
84 }
85
86 #endif /* !__MACROVARVISITOR_HXX__ */