* Bug 15599 fixed: now degree of zero polynomial is -Inf
[scilab.git] / scilab / modules / ast / includes / ast / breakpoint.hxx
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2015 - Scilab Enterprises - Antoine ELIAS
4  *
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13  *
14  */
15
16 #ifndef __BREAKPOINT_HXX__
17 #define __BREAKPOINT_HXX__
18
19 #include <string>
20 #include "macro.hxx"
21 #include "exp.hxx"
22 #include "tasks.hxx"
23
24 namespace debugger
25 {
26 struct Breakpoint
27 {
28     Breakpoint(const std::wstring& functionName, int iLine = -1, const std::wstring& condition = L"")
29         : _pFunctionName(functionName), _iMacroLine(iLine), _file(L""), _iFileLine(0), _condition(condition), _conditionExp(NULL), enable(true) {}
30
31     ~Breakpoint()
32     {
33         if (_conditionExp)
34         {
35             delete _conditionExp;
36         }
37     };
38
39     void setFile(std::wstring& file)
40     {
41         _file = file;
42     }
43     const std::wstring& getFile() const
44     {
45         return _file;
46     }
47
48     void setFunctionName(std::wstring& functionName)
49     {
50         _pFunctionName = functionName;
51     }
52     const std::wstring& getFunctioName() const
53     {
54         return _pFunctionName;
55     }
56
57     void setMacroLine(int line)
58     {
59         _iMacroLine = line;
60     }
61     int getMacroLine() const
62     {
63         return _iMacroLine;
64     }
65
66     void setFileLine(int line)
67     {
68         _iFileLine = line;
69     }
70     int getFileLine() const
71     {
72         return _iFileLine;
73     }
74
75     bool isMacro() const
76     {
77         return _pFunctionName.empty() == false;
78     }
79
80     bool isFile() const
81     {
82         return isMacro() == false;
83     }
84
85     void setEnable()
86     {
87         enable = true;
88     }
89     void setDisable()
90     {
91         enable = false;
92     }
93     bool isEnable() const
94     {
95         return enable;
96     }
97
98     const std::wstring& getCondition() const
99     {
100         return _condition;
101     }
102
103     ast::Exp* getConditionExp()
104     {
105         if (_conditionExp)
106         {
107             return _conditionExp;
108         }
109
110         _conditionExp = parseCommand(_condition);
111         return _conditionExp;
112     }
113
114 private:
115     std::wstring _pFunctionName;
116     int _iMacroLine;
117     std::wstring _file;
118     int _iFileLine;
119     std::wstring _condition;
120     ast::Exp* _conditionExp;
121     bool enable;
122 };
123
124 typedef std::vector<Breakpoint*> Breakpoints;
125
126 }
127
128 #endif /* !__BREAKPOINT_HXX__ */