kernel modules Wiedervereinigung
[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     ~MacrovarVisitor() {}
34
35     void visit (const SimpleVar &e);
36     void visit(const CallExp &e);
37     void visit (const VarDec &e);
38     void visit(const AssignExp &e);
39
40     std::list<std::wstring>& getIn();
41     std::list<std::wstring>& getOut();
42     std::list<std::wstring>& getExternal();
43     std::list<std::wstring>& getCalled();
44     std::list<std::wstring>& getLocal();
45     void add(std::list<std::wstring>& lst);
46     void add();
47
48     bool isAlreadyIn(std::list<std::wstring>& lst);
49     bool isAlreadyUsed();
50
51     void addIn(std::wstring st)
52     {
53         m_in.push_back(st);
54     }
55
56     void addOut(std::wstring st)
57     {
58         m_out.push_back(st);
59     }
60
61     std::list<std::wstring> m_in; //inout variables
62     std::list<std::wstring> m_out; //output functions
63     std::list<std::wstring> m_external; //external variables
64     std::list<std::wstring> m_called; //called functions
65     std::list<std::wstring> m_local; // local variables
66
67     std::wstring m_current;
68 };
69 }
70
71 #endif /* !__MACROVARVISITOR_HXX__ */