Analysis: infer when a refcount is required and add colors in DebugVisitor
[scilab.git] / scilab / modules / ast / includes / analysis / data / TemporaryManager.hxx
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
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 __TEMPORARY_MANAGER_HXX__
14 #define __TEMPORARY_MANAGER_HXX__
15
16 #include <map>
17 #include <stack>
18 #include <unordered_map>
19
20 #include "TIType.hxx"
21 #include "TypeLocal.hxx"
22
23 #include "dynlib_ast.h"
24
25 namespace analysis
26 {
27
28     class EXTERN_AST TemporaryManager
29     {
30
31         int currentId;
32         std::map<TypeLocal, std::stack<int>> availableTmp;
33         std::unordered_map<int, TypeLocal> usedTmp;
34
35     public:
36
37         TemporaryManager() : currentId(0) { }
38
39         int getTmp(const TIType & type, const bool isAnInt = false);
40         void releaseTmp(const int id);
41         const std::map<TypeLocal, std::stack<int>> & getTemp() const;
42     };
43
44 } // namespace analysis
45
46 #endif // __TEMPORARY_MANAGER_HXX__