00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef TRACKER_H
00017 #define TRACKER_H
00018
00019 #include <globalsearch/structure.h>
00020
00021 #include <QtCore/QDebug>
00022 #include <QtCore/QList>
00023 #include <QtCore/QReadWriteLock>
00024
00025 namespace GlobalSearch {
00026
00043 class Tracker : public QObject
00044 {
00045 Q_OBJECT
00046
00047 public:
00048
00054 Tracker(QObject *parent = 0);
00055
00059 virtual ~Tracker();
00060
00064 void lockForRead() {m_mutex.lockForRead();};
00065
00069 void lockForWrite() {m_mutex.lockForWrite();};
00070
00074 void unlock() {m_mutex.unlock();};
00075
00079 QReadWriteLock* rwLock() {return &m_mutex;}
00080
00084 QList<Structure*>* list() {return &m_list;};
00085
00090 Structure* at(int i) {return m_list.at(i);};
00091
00101 bool append(QList<Structure*> s);
00102
00114 bool append(Structure* s);
00115
00126 bool popFirst(Structure *&s);
00127
00137 bool remove(Structure *s);
00138
00147 bool contains(Structure* s);
00148
00152 int size();
00153
00158 void reset();
00159
00163 void deleteAllStructures();
00164
00165 signals:
00170 void newStructureAdded(GlobalSearch::Structure *s);
00171
00177 void structureCountChanged(int c);
00178
00179 private:
00180 QReadWriteLock m_mutex;
00181 QList<Structure*> m_list;
00182 };
00183 }
00184
00185 #endif