4 bool BooleanSig::encodeAbs = true;
5 bool SetSig::encodeAbs = true;
6 bool ElementSig::encodeAbs = true;
8 BooleanSig::BooleanSig(uint id):
14 bool BooleanSig::getValue(){
19 string BooleanSig::toString() const{
20 return "Boolean" + to_string(id) + ".value";
23 string BooleanSig::getSignature() const{
27 str += getAbsSignature();
29 str += "one sig Boolean" + to_string(id) + " extends AbsBool {}";
33 string BooleanSig::getAbsSignature() const{
35 if(SetSig::encodeAbs){
36 SetSig::encodeAbs = false;
37 str += "abstract sig AbsSet {\
41 str +="one sig BooleanSet extends AbsSet {}{\n\
44 abstract sig AbsBool {\
47 value in BooleanSet.domain\n\
52 ElementSig::ElementSig(uint id, SetSig *_ssig):
59 string ElementSig::toString() const{
60 return "Element" + to_string(id) + ".value";
63 string ElementSig::getSignature() const{
67 str += getAbsSignature();
69 str += "one sig Element" + to_string(id) + " extends AbsElement {}{\n\
70 value in " + *ssig + "\n\
75 string ElementSig::getAbsSignature() const{
76 return "abstract sig AbsElement {\n\
82 SetSig::SetSig(uint id, Set *set): Signature(id){
83 ASSERT(set->getSize() > 0);
84 domain = to_string(set->getElement(0));
85 for(uint i=1; i< set->getSize(); i++){
86 domain += " + " + to_string(set->getElement(i));
90 string SetSig::toString() const{
91 return "Set" + to_string(id) + ".domain";
94 string SetSig::getSignature() const{
98 str += getAbsSignature();
100 str += "one sig Set" + to_string(id) + " extends AbsSet {}{\n\
101 domain = " + domain + "\n\
106 string SetSig::getAbsSignature() const{
107 return "abstract sig AbsSet {\n\
113 string Signature::operator+(const string& str){
114 return toString() + str;
117 string operator+(const string& str, const Signature& sig){
118 return str + sig.toString();