Fix MacOS compilation
[scilab.git] / scilab / modules / slint / includes / checkers / DecimalChecker.hxx
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
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 __SLINT_DECIMAL_CHECKER_HXX__
17 #define __SLINT_DECIMAL_CHECKER_HXX__
18
19 #include "SLintChecker.hxx"
20
21 namespace slint
22 {
23
24 /**
25  * Check if there is a number before a dot and if the exponent in scientific notation is the correct letter:
26  * - 0.1234 instead of .1234
27  * - 1e10 instead of 1D10
28  */
29 class DecimalChecker : public SLintChecker
30 {
31
32     const std::wstring character;
33     const bool checkDot;
34
35 public:
36
37     DecimalChecker(const std::wstring & checkerId, const std::wstring & _character) : SLintChecker(checkerId), character(_character), checkDot(false) { }
38     DecimalChecker(const std::wstring & checkerId, const bool _checkDot) : SLintChecker(checkerId), character(), checkDot(_checkDot) { }
39     DecimalChecker(const std::wstring & checkerId, const std::wstring & _character, const bool _checkDot) : SLintChecker(checkerId), character(_character), checkDot(_checkDot) { }
40
41     ~DecimalChecker() { }
42
43     void preCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result);
44     void postCheckNode(const ast::Exp & e, SLintContext & context, SLintResult & result);
45     const std::string getName() const;
46
47     virtual const std::vector<ast::Exp::ExpType> getAstNodes() const
48     {
49         return { ast::Exp::DOUBLEEXP };
50     }
51
52 };
53
54 } // namespace slint
55
56 #endif // __SLINT_DECIMAL_CHECKER_HXX__