Changeset b324a3 for src/Observer/Observable.cpp
- Timestamp:
- Sep 5, 2013, 2:14:06 PM (12 years ago)
- Children:
- 44f368
- Parents:
- 37d941
- git-author:
- Frederik Heber <heber@…> (09/05/13 14:09:44)
- git-committer:
- Frederik Heber <heber@…> (09/05/13 14:14:06)
- File:
-
- 1 edited
-
src/Observer/Observable.cpp (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Observer/Observable.cpp
r37d941 rb324a3 27 27 #include "CodePatterns/Observer/Notification.hpp" 28 28 29 //!> This function does nothing with the given Observable 30 void NoOp_informer(const Observable *) 31 {} 32 33 Observable::graveyard_informer_t Observable::noop_informer(&NoOp_informer); 29 34 30 35 // All infrastructure for the observer-pattern is bundled at a central place … … 271 276 callTable.erase(const_cast<Observable *>(this)); 272 277 } 278 graveyard_informer(this); 273 279 } 274 280 … … 293 299 #endif 294 300 notification->removeObserver(target); 301 graveyard_informer(this); 295 302 } 296 303 … … 311 318 } 312 319 320 size_t Observable::getNumberOfObservers() const 321 { 322 size_t ObserverCount = 0; 323 { 324 std::map<Observable*,callees_t>::const_iterator callTableiter = 325 callTable.find(const_cast<Observable *>(this)); 326 // if not present, then we have zero observers 327 if (callTableiter != callTable.end()) 328 ObserverCount += callTableiter->second.size(); 329 } 330 { 331 const ChannelMap::const_iterator iter = 332 NotificationChannels.find(const_cast<Observable * const>(this)); 333 // if not present, then we have zero observers 334 if (iter != NotificationChannels.end()) 335 for (Channels::NotificationTypetoRefMap::const_iterator channeliter = iter->second->ChannelMap.begin(); 336 channeliter != iter->second->ChannelMap.end(); 337 ++channeliter) 338 ObserverCount += (channeliter->second)->getNumberOfObservers(); 339 } 340 return ObserverCount; 341 } 342 313 343 /** Handles sub-observables that just got killed 314 344 * when an sub-observerable dies we usually don't need to do anything … … 321 351 */ 322 352 Observable::Observable(std::string name) : 323 Observer(Observer::BaseConstructor()) 353 Observer(Observer::BaseConstructor()), 354 graveyard_informer(noop_informer) 324 355 { 325 356 #ifdef LOG_OBSERVER
Note:
See TracChangeset
for help on using the changeset viewer.
