1951b66c273fb983532c8dd01bf0f118933362f7
[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 #include <set>
18
19 #include "tools.hxx"
20 #include "symbol.hxx"
21
22 namespace analysis
23 {
24
25 struct Data
26 {
27     bool known;
28     bool valid;
29     tools::SymbolSet sharedSyms;
30
31     Data(const bool _known, const symbol::Symbol & sym);
32     Data(const Data & d) : known(d.known), valid(true), sharedSyms(d.sharedSyms) {  }
33
34     void clear();
35     void add(const symbol::Symbol & sym);
36     void rem(const symbol::Symbol & sym);
37     bool hasOneOwner() const;
38     bool isDeletable() const;
39     bool same(Data * data);
40     friend std::wostream & operator<<(std::wostream & out, const Data & data);
41 };
42
43 } // namespace analysis
44
45 #endif // __DATA_HXX__