6dcb2e9c92f9ec492141a48216e90268b7f46a65
[satune.git] / src / AlloyEnc / signature.h
1 #ifndef ELEMENTSIG_H
2 #define ELEMENTSIG_H
3 #include <string>
4 #include <iostream>
5 #include "classlist.h"
6 using namespace std;
7
8 class Signature{
9 public:
10         Signature(uint _id):id(_id){}
11         string operator+(const string& s);
12         virtual string toString() const = 0;
13         virtual string getSignature() const =0;
14         virtual ~Signature(){}
15 protected:
16         uint id;
17 };
18
19 class SetSig: public Signature{
20 public:
21         SetSig(uint id, Set *set);
22         virtual ~SetSig(){}
23         virtual string toString() const;
24         virtual string getSignature() const;
25 private:
26         string domain;
27 };
28
29 class ElementSig: public Signature{
30 public:
31         ElementSig(uint id, SetSig *ssig);
32         uint64_t getValue() { return value;}
33         void setValue(uint64_t v){value = v;}
34         virtual ~ElementSig(){}
35         virtual string toString() const;
36         virtual string getSignature() const;
37 private:
38         SetSig *ssig;
39         uint64_t value;
40 };
41
42 string operator+(const string& str, const Signature& sig);
43
44 #endif