4 bool BooleanSig::encodeAbs = true;
5 bool SetSig::encodeAbs = true;
6 bool ElementSig::encodeAbs = true;
8 ValuedSignature::ValuedSignature(uint id):
14 int ValuedSignature::getValue(){
19 BooleanSig::BooleanSig(uint id):
24 string BooleanSig::toString() const{
25 return "Boolean" + to_string(id) + ".value";
28 string BooleanSig::getSignature() const{
32 str += getAbsSignature();
34 str += "one sig Boolean" + to_string(id) + " extends AbsBool {}";
38 string BooleanSig::getAbsSignature() const{
40 if(SetSig::encodeAbs){
41 SetSig::encodeAbs = false;
42 str += "abstract sig AbsSet {\
46 str +="one sig BooleanSet extends AbsSet {}{\n\
49 abstract sig AbsBool {\
52 value in BooleanSet.domain\n\
57 ElementSig::ElementSig(uint id, SetSig *_ssig):
63 string ElementSig::toString() const{
64 return "Element" + to_string(id) + ".value";
67 string ElementSig::getSignature() const{
71 str += getAbsSignature();
73 str += "one sig Element" + to_string(id) + " extends AbsElement {}{\n\
74 value in " + *ssig + "\n\
79 string ElementSig::getAbsSignature() const{
80 return "abstract sig AbsElement {\n\
86 SetSig::SetSig(uint id, Set *set): Signature(id){
87 ASSERT(set->getSize() > 0);
88 domain = to_string(set->getElement(0));
89 for(uint i=1; i< set->getSize(); i++){
90 domain += " + " + to_string(set->getElement(i));
94 string SetSig::toString() const{
95 return "Set" + to_string(id) + ".domain";
98 string SetSig::getSignature() const{
102 str += getAbsSignature();
104 str += "one sig Set" + to_string(id) + " extends AbsSet {}{\n\
105 domain = " + domain + "\n\
110 string SetSig::getAbsSignature() const{
111 return "abstract sig AbsSet {\n\
117 string Signature::operator+(const string& str){
118 return toString() + str;
121 string operator+(const string& str, const Signature& sig){
122 return str + sig.toString();