00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef Anchor_h
00010 #define Anchor_h
00011
00012 #include "AGTypes.h"
00013 #include "Signal.h"
00014
00015
00016 using namespace std;
00017
00026 class Anchor {
00027 friend class AG;
00028 friend class AnnotationIndex;
00029
00030 private:
00032 const Id id;
00033
00035 Offset offset;
00036
00038 Unit unit;
00039
00041 string signals;
00042
00044 bool anchored;
00045
00046 protected:
00047
00049 void unsetOffset() { anchored = false; }
00050
00051 public:
00053 Anchor(Id id, Offset offset, Unit unit, string signals);
00054
00056 Anchor(Id id, Unit unit, string signals);
00057
00059 Anchor(Id id, const Anchor*);
00060
00062 const Id getId() const {return id;}
00063
00065 Offset getOffset() const { return offset; }
00066
00068 void setOffset(Offset o) {offset = o; anchored = true;}
00069
00071 bool getAnchored() const { return anchored; }
00072
00074 void setSignals(string signals) { this->signals = signals; }
00075
00077 string getSignals() const { return signals; }
00078
00080 void setUnit(string unit) { this->unit = unit; }
00081
00083 Unit getUnit() const { return unit; }
00084
00086 string toString();
00088 friend bool operator < (const Anchor&, const Anchor&);
00089 };
00090
00096 class AnchorCompFunc {
00097 public:
00098 bool operator() (const Anchor* a1, const Anchor* a2) const {
00099 return *a1 < *a2;
00100 }
00101 };
00102
00107 typedef set<Anchor*,AnchorCompFunc> AnchorSeq;
00109 typedef set<Anchor*> AnchorSet;
00110
00111 #endif