Initializing the ElementSig Value
[satune.git] / src / AlloyEnc / signature.cc
1 #include "signature.h"
2 #include "set.h"
3
4 ElementSig::ElementSig(uint id, SetSig *_ssig): 
5         Signature(id),
6         ssig(_ssig),
7         value(0)
8 {
9         
10 }
11
12 string ElementSig::toString() const{
13         return "Element" + to_string(id) + ".value";
14 }
15
16 string ElementSig::getSignature() const{
17         return "one sig Element" + to_string(id) + " {\n\
18                 value: Int\n\
19                 }{\n\
20                 value in " + *ssig + "\n\
21                 }";
22         
23 }
24
25 SetSig::SetSig(uint id, Set *set): Signature(id){
26         ASSERT(set->getSize() > 0);
27         domain = to_string(set->getElement(0));
28         for(uint i=1; i< set->getSize(); i++){
29                 domain += " + " + to_string(set->getElement(i));
30         }
31 }
32
33 string SetSig::toString() const{
34         return "Set" + to_string(id) + ".domain";
35 }
36
37 string SetSig::getSignature() const{
38         return "one sig Set" + to_string(id) + " {\n\
39                 domain: set Int\n\
40                 }{\n\
41                 domain = " + domain + "\n\
42                 }";
43         
44 }
45
46 string Signature::operator+(const string& str){
47         return toString() + str;
48 }
49
50 string operator+(const string& str, const Signature& sig){
51         return str + sig.toString();
52 }