Alloy interpreter
[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 {
8         
9 }
10
11 string ElementSig::toString() const{
12         return "Element" + to_string(id) + ".value";
13 }
14
15 string ElementSig::getSignature() const{
16         return "one sig Element" + to_string(id) + " {\n\
17                 value: Int\n\
18                 }{\n\
19                 value in " + *ssig + "\n\
20                 }";
21         
22 }
23
24 SetSig::SetSig(uint id, Set *set): Signature(id){
25         ASSERT(set->getSize() > 0);
26         domain = to_string(set->getElement(0));
27         for(uint i=1; i< set->getSize(); i++){
28                 domain += " + " + to_string(set->getElement(i));
29         }
30 }
31
32 string SetSig::toString() const{
33         return "Set" + to_string(id) + ".domain";
34 }
35
36 string SetSig::getSignature() const{
37         return "one sig Set" + to_string(id) + " {\n\
38                 domain: set Int\n\
39                 }{\n\
40                 domain = " + domain + "\n\
41                 }";
42         
43 }
44
45 string Signature::operator+(const string& str){
46         return toString() + str;
47 }
48
49 string operator+(const string& str, const Signature& sig){
50         return str + sig.toString();
51 }