Analysis: infer when a refcount is required and add colors in DebugVisitor
[scilab.git] / scilab / modules / ast / includes / analysis / data / Data.hxx
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2014 - 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 __DATA_HXX__
14 #define __DATA_HXX__
15
16 #include <iostream>
17
18 #include "symbol.hxx"
19 #include "tools.hxx"
20
21 namespace analysis
22 {
23
24 struct Data
25 {
26     bool known;
27     bool valid;
28     tools::SymbolSet sharedSyms;
29
30     Data(const bool _known, const symbol::Symbol & sym);
31     Data(const Data & d) : known(d.known), valid(true), sharedSyms(d.sharedSyms) {  }
32
33     void clear();
34     void add(const symbol::Symbol & sym);
35     void rem(const symbol::Symbol & sym);
36     bool hasOneOwner() const;
37     bool isDeletable() const;
38     bool same(Data * data);
39     void setValidity(const bool v);
40     friend std::wostream & operator<<(std::wostream & out, const Data & data);
41 };
42
43 } // namespace analysis
44
45 #endif // __DATA_HXX__