1 #include "signatureenc.h"
5 #include "interpreter.h"
7 SignatureEnc::SignatureEnc(Interpreter *inter):
13 SignatureEnc::~SignatureEnc(){
14 for(uint i=0; i<signatures.getSize(); i++){
15 Signature *s = signatures.get(i);
20 void SignatureEnc::updateMaxValue(Set *set){
21 for(uint i=0; i< set->getSize(); i++){
22 if(set->getElement(i) > maxValue){
23 maxValue = set->getElement(i);
28 ValuedSignature *SignatureEnc::getBooleanSignature(Boolean *bvar){
29 ValuedSignature *bsig = (ValuedSignature *)encoded.get((void *)bvar);
31 bsig = interpreter->getBooleanSignature(getUniqueSigID());
32 encoded.put(bvar, bsig);
33 signatures.push(bsig);
34 interpreter->writeToFile(bsig->getSignature());
39 ValuedSignature *SignatureEnc::getElementSignature(Element *element){
40 ValuedSignature *esig = (ValuedSignature *)encoded.get((void *)element);
42 Set *set = element->getRange();
43 Signature *ssig = (Signature *)encoded.get((void *)set);
45 ssig = interpreter->getSetSignature(getUniqueSigID(), set);
46 encoded.put(set, ssig);
47 signatures.push(ssig);
48 interpreter->writeToFile(ssig->getSignature());
51 esig = interpreter->getElementSignature(getUniqueSigID(), ssig);
52 encoded.put(element, esig);
53 signatures.push(esig);
54 interpreter->writeToFile(esig->getSignature());
60 void SignatureEnc::setValue(uint id, uint value){
61 ValuedSignature *sig = getValuedSignature(id);
66 int SignatureEnc::getValue(void *astnode){
67 ValuedSignature *sig = (ValuedSignature *)encoded.get(astnode);
69 return sig->getValue();