ast: fix memleaks detected by ASAN during testing
[scilab.git] / scilab / modules / ast / includes / analysis / call / Call.hxx
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2014 - 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 __CALL_HXX__
17 #define __CALL_HXX__
18
19 #include <iostream>
20 #include <string>
21 #include <vector>
22
23 #include "TIType.hxx"
24
25 namespace analysis
26 {
27 class Call
28 {
29
30 protected:
31
32     const std::wstring name;
33     std::vector<TIType> args;
34
35 public:
36
37     Call(const std::wstring & _name, const std::vector<TIType> & _args) : name(_name), args(_args) { }
38     Call(const std::wstring & _name, const TIType & _arg) : name(_name), args(1, _arg) { }
39     Call(const std::wstring & _name) : name(_name) { }
40     Call(Call && call) : name(call.name), args(call.args) { }
41     virtual ~Call() = default;
42
43     inline const std::wstring & getName() const
44     {
45         return name;
46     }
47
48     inline void setArgs(const std::vector<TIType> & _args)
49     {
50         args = _args;
51     }
52
53     inline const std::vector<TIType> & getArgs() const
54     {
55         return args;
56     }
57
58     friend std::wostream & operator<<(std::wostream & out, const Call & res)
59     {
60         out << L"Call " << res.name;
61         return out;
62     }
63 };
64
65 } // namespace analysis
66
67 #endif // __CALL_HXX__