ast, elementary_functions, string, fileio, output_stream memory leaks
[scilab.git] / scilab / modules / ast / includes / ast / treevisitor.hxx
1 /*
2 *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 *  Copyright (C) 2015 - 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.1-en.txt
10 *
11 */
12
13 #ifndef __LISTVISITOR_HXX__
14 #define __LISTVISITOR_HXX__
15
16 #include "dummyvisitor.hxx"
17 #include "tlist.hxx"
18
19 //used by macr2tree to generate a tlist from an AST
20
21 namespace ast
22 {
23 class EXTERN_AST TreeVisitor : public DummyVisitor
24 {
25 public:
26     TreeVisitor() : l(nullptr), eol(nullptr) {}
27     ~TreeVisitor() 
28     {
29         eol->killMe();
30         l->killMe();
31     }
32
33     virtual void visit(const SeqExp  &e);
34     virtual void visit(const CommentExp &e);
35     virtual void visit(const SimpleVar &e);
36     virtual void visit(const DoubleExp &e);
37     virtual void visit(const StringExp &e);
38     virtual void visit(const BoolExp &e);
39     virtual void visit(const DollarVar &e);
40     virtual void visit(const ColonVar &e);
41     virtual void visit(const MatrixExp &e);
42     virtual void visit(const MatrixLineExp &e);
43     virtual void visit(const OpExp &e);
44     virtual void visit(const LogicalOpExp &e);
45     virtual void visit(const IfExp &e);
46     virtual void visit(const ListExp &e);
47     virtual void visit(const AssignExp &e);
48     virtual void visit(const CallExp &e);
49     virtual void visit(const ForExp &e);
50     virtual void visit(const FieldExp &e);
51     virtual void visit(const TryCatchExp  &e);
52     virtual void visit(const WhileExp  &e);
53     virtual void visit(const ContinueExp &/*e*/);
54     virtual void visit(const BreakExp &/*e*/);
55     virtual void visit(const ReturnExp &e);
56     virtual void visit(const SelectExp &e);
57     virtual void visit(const CaseExp &e);
58     virtual void visit(const ArrayListExp &e);
59     virtual void visit(const NotExp &e);
60     virtual void visit(const TransposeExp &e);
61     virtual void visit(const FunctionDec &e);
62
63     inline types::List* getList()
64     {
65         return l;
66     }
67
68     static types::List* createVar(const std::wstring& str);
69     static types::List* createConst(types::InternalType* pIT);
70     static types::List* createOperation();
71     static types::List* createAssign();
72     static types::InternalType* getVerbose(const Exp& e);
73
74     types::InternalType* getEOL();
75 private:
76
77     types::List* l;
78     types::List* eol;
79 };
80 }
81 #endif /* !__LISTVISITOR_HXX__ */