IntaRNA 3.4.1
RNA-RNA interaction prediction | C++ API
Loading...
Searching...
No Matches
PredictionTrackerHub.h
Go to the documentation of this file.
1
2#ifndef INTARNA_PREDICTIONTRACKERHUB_H_
3#define INTARNA_PREDICTIONTRACKERHUB_H_
4
6
7#include <list>
8
9namespace IntaRNA {
10
17{
18protected:
19
21 std::list< PredictionTracker * > trackList;
22
26
27public:
28
35
42
43
47 virtual ~PredictionTrackerHub();
48
59 virtual
60 void
61 updateOptimumCalled( const size_t i1, const size_t j1
62 , const size_t i2, const size_t j2
63 , const E_type energy
64 );
65
70 virtual
71 void
73
79 virtual
80 void
81 setDeleteOnDestruction( const bool deleteOnDestruction );
82
88 virtual
89 bool
91
92
103 operator= ( const PredictionTrackerHub & toCopy);
104
105
110 bool
111 empty() const;
112
113};
114
115
117
118inline
119PredictionTrackerHub
120::PredictionTrackerHub( const bool deleteOnDestruction )
122 , trackList()
123 , deleteTrackListOnDestruction(deleteOnDestruction)
124{
125}
126
128
129inline
130PredictionTrackerHub
131::PredictionTrackerHub( const PredictionTrackerHub & toCopy )
133 , trackList( toCopy.trackList )
134 // dont delete on destruction (should be done by original) to avoid double cleanup
135 , deleteTrackListOnDestruction(false)
136{
137}
138
140
141inline
144{
145 // check if something is to be done
146 if (isDeleteOnDestruction()) {
147 // delete all tracker
148 for( auto it = trackList.begin(); it != trackList.end(); it++ ) {
149 INTARNA_CLEANUP( (*it) );
150 }
151 }
152}
153
154
155
157
158inline
159void
162{
163#if INTARNA_IN_DEBUG_MODE
164 if (tracker != NULL) {
165 // check if already present
166 for (auto it=trackList.begin(); it!=trackList.end(); it++) {
167 if (tracker == (*it)) {
168 throw std::runtime_error("PredictionTrackerHub::addPredictionTracker() : repeated adding of the same PredictionTracker pointer");
169 }
170 }
171 }
172#endif
173 // add if not null
174 if (tracker != NULL) {
175 trackList.push_back(tracker);
176 }
177}
178
180
181inline
182void
184updateOptimumCalled( const size_t i1, const size_t j1
185 , const size_t i2, const size_t j2
186 , const E_type energy
187 )
188{
189 // forward to all in list
190 for (auto trackIt=trackList.begin(); trackIt!=trackList.end(); trackIt++) {
191 (*trackIt)->updateOptimumCalled(i1,j1,i2,j2,energy);
192 }
193}
194
196
197inline
198void
200setDeleteOnDestruction( const bool deleteOnDestruction )
201{
202 this->deleteTrackListOnDestruction = deleteOnDestruction;
203}
204
206
207inline
208bool
214
216
217inline
220operator= ( const PredictionTrackerHub & toCopy)
221{
222 // clean up current content
224 for (auto it=trackList.begin(); it!=trackList.end(); it++) {
225 INTARNA_CLEANUP( (*it) );
226 }
227 }
228 trackList.clear();
229
230 // copy data
231 trackList = toCopy.trackList;
232 // ensure this copy doesnt delete the list content
234
235 // modified object access
236 return *this;
237}
238
240
241inline
242bool
244empty() const
245{
246 // return whether or not the tracker list is empty
247 return trackList.empty();
248}
249
251
252} // namespace
253
254#endif /* PREDICTIONTRACKERHUB_H_ */
Definition PredictionTrackerHub.h:17
std::list< PredictionTracker * > trackList
list of PredictionTracker objects to forward to
Definition PredictionTrackerHub.h:21
virtual ~PredictionTrackerHub()
Definition PredictionTrackerHub.h:143
bool deleteTrackListOnDestruction
Definition PredictionTrackerHub.h:25
virtual bool isDeleteOnDestruction() const
Definition PredictionTrackerHub.h:210
virtual void updateOptimumCalled(const size_t i1, const size_t j1, const size_t i2, const size_t j2, const E_type energy)
Definition PredictionTrackerHub.h:184
PredictionTrackerHub & operator=(const PredictionTrackerHub &toCopy)
Definition PredictionTrackerHub.h:220
virtual void addPredictionTracker(PredictionTracker *tracker)
Definition PredictionTrackerHub.h:161
bool empty() const
Definition PredictionTrackerHub.h:244
virtual void setDeleteOnDestruction(const bool deleteOnDestruction)
Definition PredictionTrackerHub.h:200
Definition PredictionTracker.h:15
void INTARNA_CLEANUP(T *&pointer)
Definition general.h:30
Definition Accessibility.h:13
int E_type
type for energy values (energy + accessibility [ED]) (internally)
Definition general.h:78