Changeset e2e035e


Ignore:
Timestamp:
Dec 13, 2011, 9:46:10 AM (14 years ago)
Author:
Frederik Heber <heber@…>
Children:
549b62
Parents:
bc2698
git-author:
Frederik Heber <heber@…> (12/01/11 10:20:57)
git-committer:
Frederik Heber <heber@…> (12/13/11 09:46:10)
Message:

Refactored all Observer stuff into own subfolder and split up into distinct modules.

  • Observer/all.hpp is all that's needed.
Location:
src
Files:
15 added
1 deleted
5 edited
10 moved

Legend:

Unmodified
Added
Removed
  • src/Makefile.am

    rbc2698 re2e035e  
    1111TESTS =
    1212
     13TESTLIBS = \
     14        libCodePatterns-debug.la \
     15        $(BOOST_THREAD_LIBS)
     16
    1317include Helpers/unittests/Makefile.am
    1418include Patterns/unittests/Makefile.am
     19include Patterns/Observer/unittests/Makefile.am
    1520include unittests/Makefile.am
    1621
     
    3338
    3439PATTERNSOURCE = \
    35         Patterns/ObservedContainer_impl.hpp \
    36         Patterns/Registry_impl.hpp \
    37         Patterns/Singleton_impl.hpp
     40        Patterns/Observer/Channels.cpp \
     41        Patterns/Observer/Notification.cpp \
     42        Patterns/Observer/Observable.cpp \
     43        Patterns/Observer/Observer.cpp \
     44        Patterns/Observer/ObserverLog.cpp
    3845PATTERNHEADER = \
    3946        Patterns/Cacheable.hpp \
     
    4653        Patterns/ManipulablePrototypeFactory.hpp \
    4754        Patterns/ManipulablePrototypeFactory_impl.hpp \
    48         Patterns/ObservedContainer.hpp \
    49         Patterns/ObservedIterator.hpp \
    50         Patterns/Observer.hpp \
     55        Patterns/Observer/Channels.hpp \
     56        Patterns/Observer/defs.hpp \
     57        Patterns/Observer/Notification.hpp \
     58        Patterns/Observer/Observable.hpp \
     59        Patterns/Observer/Observer.hpp \
     60        Patterns/Observer/ObservedContainer.hpp \
     61        Patterns/Observer/ObserverLog.hpp \
     62        Patterns/Observer/ObservedIterator.hpp \
     63        Patterns/Observer/ObservedContainer_impl.hpp \
     64        Patterns/Registry_impl.hpp \
     65        Patterns/Singleton_impl.hpp \
    5166        Patterns/PrototypeFactory.hpp \
    5267        Patterns/PrototypeFactory_impl.hpp \
     
    6176# this includes source files that need to be present at multiple points
    6277HELPERSSOURCE =  \
    63         Patterns/Observer.cpp \
    6478        Helpers/Assert.cpp \
    6579        Helpers/Chronos.cpp \
     
    106120## which are already listed elsewhere in a _HEADERS variable assignment.
    107121#-$(CODEPATTERNS_API_VERSION)
    108 libCodePatterns_la_SOURCES = ${HELPERSSOURCE}
    109 libCodePatterns_debug_la_SOURCES = ${HELPERSSOURCE}
     122libCodePatterns_la_SOURCES = $(HELPERSSOURCE) $(PATTERNSOURCE)
     123libCodePatterns_debug_la_SOURCES = $(HELPERSSOURCE) $(PATTERNSOURCE)
    110124
    111125## Instruct libtool to include ABI version information in the generated shared
     
    129143libCodePatterns_libincludedir = $(includedir)/CodePatterns/
    130144#-$(CODEPATTERNS_API_VERSION)
    131 libCodePatterns_libinclude_HEADERS = $(HELPERSHEADER) $(PATTERNSOURCE) $(PATTERNHEADER) $(top_builddir)/libCodePatterns_config.h
     145libCodePatterns_libinclude_HEADERS = $(HELPERSHEADER) $(PATTERNHEADER) $(top_builddir)/libCodePatterns_config.h
    132146
    133147## Install the generated pkg-config file (.pc) into the expected location for
  • src/Patterns/Cacheable.hpp

    rbc2698 re2e035e  
    1414#endif
    1515
    16 #include "Observer.hpp"
     16#include "Observer/Observable.hpp"
     17#include "Observer/Observer.hpp"
    1718#include <boost/function.hpp>
    1819#include <boost/shared_ptr.hpp>
  • src/Patterns/Observer/Observable.cpp

    rbc2698 re2e035e  
    77
    88/*
    9  * Observer.cpp
    10  *
    11  *  Created on: Jan 19, 2010
    12  *      Author: crueger
     9 * Observable.cpp
     10 *
     11 *  Created on: Dec 1, 2011
     12 *      Author: heber
    1313 */
    1414
     
    2020#include "MemDebug.hpp"
    2121
    22 #include "Observer.hpp"
    23 
    24 #include <iostream>
    25 
    2622#include "Assert.hpp"
    27 #include "MemDebug.hpp"
    28 
    29 using namespace std;
    30 
    31 /****************** Static stuff for the observer mechanism ************/
     23#include "Channels.hpp"
     24#include "Notification.hpp"
     25#include "Observable.hpp"
     26
    3227
    3328// All infrastructure for the observer-pattern is bundled at a central place
     
    3934// See [Gamma et al, 1995] p. 297
    4035
    41 map<Observable*, int> Observable::depth;  //!< Map of Observables to the depth of the DAG of Observers
    42 map<Observable*,multimap<int,Observer*> > Observable::callTable; //!< Table for each Observable of all its Observers
     36std::map<Observable*, int> Observable::depth;  //!< Map of Observables to the depth of the DAG of Observers
     37std::map<Observable*,std::multimap<int,Observer*> > Observable::callTable; //!< Table for each Observable of all its Observers
    4338std::map<Observable*,std::set<Notification*> > Observable::notifications;
    44 set<Observable*> Observable::busyObservables; //!< Set of Observables that are currently busy notifying their sign-on'ed Observers
     39std::set<Observable*> Observable::busyObservables; //!< Set of Observables that are currently busy notifying their sign-on'ed Observers
    4540Observable::ChannelMap Observable::NotificationChannels; //!< Map of Observables to their Channels.
    4641
     
    5954  // by the STL and initialized to 0 (see STL documentation)
    6055#ifdef LOG_OBSERVER
    61   observerLog().addMessage(depth[publisher]) << ">> Locking " << observerLog().getName(publisher) << endl;
     56  observerLog().addMessage(depth[publisher]) << ">> Locking " << observerLog().getName(publisher) << std::endl;
    6257#endif
    6358  depth[publisher]++;
     
    8075  --depth[publisher];
    8176#ifdef LOG_OBSERVER
    82   observerLog().addMessage(depth[publisher]) << "<< Unlocking " << observerLog().getName(publisher) << endl;
     77  observerLog().addMessage(depth[publisher]) << "<< Unlocking " << observerLog().getName(publisher) << std::endl;
    8378#endif
    8479  if(depth[publisher]){}
     
    9287
    9388void Observable::enque_notification_internal(Observable *publisher, Notification_ptr notification){
    94   ASSERT(notification->owner==publisher,"Some object tried to send a notification it does not own");
    9589  notifications[publisher].insert(notification);
    9690}
     
    148142        observerLog().addMessage() << "-> Sending update from " << observerLog().getName(this)
    149143                                   << " to " << observerLog().getName((*iter).second)
    150                                    << " (priority=" << (*iter).first << ")"<< endl;
     144                                   << " (priority=" << (*iter).first << ")"<< std::endl;
    151145#endif
    152146        (*iter).second->update(this);
     
    161155  for(notificationSet::iterator it = currentNotifications.begin();
    162156      it != currentNotifications.end();++it){
    163     (*it)->notifyAll();
     157    (*it)->notifyAll(this);
    164158  }
    165159
     
    194188#ifdef LOG_OBSERVER
    195189      observerLog().addMessage() << "-* Update from " << observerLog().getName(publisher)
    196                                  << " propagated by " << observerLog().getName(this) << endl;
     190                                 << " propagated by " << observerLog().getName(this) << std::endl;
    197191#endif
    198192      notifyAll();
     
    201195#ifdef LOG_OBSERVER
    202196      observerLog().addMessage() << "-| Update from " <<  observerLog().getName(publisher)
    203                                  << " not propagated by " << observerLog().getName(this) << endl;
     197                                 << " not propagated by " << observerLog().getName(this) << std::endl;
    204198#endif
    205199    }
     
    214208void Observable::signOn(Observer *target,int priority) const
    215209{
    216   ASSERT(priority>=-20 && priority<=+20, "Priority out of range [-20:+20] when signing on Observer");
    217 #ifdef LOG_OBSERVER
    218   observerLog().addMessage() << "@@ Signing on " << observerLog().getName(target) << " to " << observerLog().getName(const_cast<Observable *>(this)) << endl;
     210  ASSERT(priority>=-20 && priority<=+20,
     211      "Priority out of range [-20:+20] when signing on Observer");
     212#ifdef LOG_OBSERVER
     213  observerLog().addMessage() << "@@ Signing on " << observerLog().getName(target) << " to " << observerLog().getName(const_cast<Observable *>(this)) << std::endl;
    219214#endif
    220215  bool res = false;
     
    226221  }
    227222  if(!res)
    228     callees.insert(pair<int,Observer*>(priority,target));
     223    callees.insert(std::pair<int,Observer*>(priority,target));
    229224}
    230225
     
    235230void Observable::signOff(Observer *target) const
    236231{
    237   ASSERT(callTable.count(const_cast<Observable *>(this)),"SignOff called for an Observable without Observers.");
    238 #ifdef LOG_OBSERVER
    239   observerLog().addMessage() << "** Signing off " << observerLog().getName(target) << " from " << observerLog().getName(const_cast<Observable *>(this)) << endl;
     232  ASSERT(callTable.count(const_cast<Observable *>(this)),
     233      "SignOff called for an Observable without Observers.");
     234#ifdef LOG_OBSERVER
     235  observerLog().addMessage() << "** Signing off " << observerLog().getName(target) << " from " << observerLog().getName(const_cast<Observable *>(this)) << std::endl;
    240236#endif
    241237  callees_t &callees = callTable[const_cast<Observable *>(this)];
     
    258254void Observable::signOn(Observer *target, Notification_ptr notification) const
    259255{
    260   ASSERT(notification->owner==this,
    261          "Trying to sign on for a notification that is not provided by this object");
    262 
    263256  notification->addObserver(target);
    264257}
     
    266259void Observable::signOff(Observer *target, Notification_ptr notification) const
    267260{
    268   ASSERT(notification->owner==this,
    269          "Trying to sign off from a notification that is not provided by this object");
    270 
    271261  notification->removeObserver(target);
    272262}
     
    279269Notification_ptr Observable::getChannel(size_t no) const
    280270{
    281   ChannelMap::iterator iter = NotificationChannels.find(const_cast<Observable *>(this));
     271  const ChannelMap::const_iterator iter = NotificationChannels.find(const_cast<Observable * const>(this));
    282272  ASSERT(iter != NotificationChannels.end(),
    283273      "Observable::getChannel() - we do not have a channel in NotificationChannels.");
     
    297287/** Constructor for class Observable.
    298288 */
    299 Observable::Observable(string name) :
     289Observable::Observable(std::string name) :
    300290  Observer(Observer::BaseConstructor())
    301291{
    302292#ifdef LOG_OBSERVER
    303293  observerLog().addName(this,name);
    304   observerLog().addMessage() << "++ Creating Observable " << observerLog().getName(this) << endl;
     294  observerLog().addMessage() << "++ Creating Observable " << observerLog().getName(this) << std::endl;
    305295#endif
    306296}
     
    312302{
    313303#ifdef LOG_OBSERVER
    314   observerLog().addMessage() << "-- Destroying Observable " << observerLog().getName(this) << endl;
     304  observerLog().addMessage() << "-- Destroying Observable " << observerLog().getName(this) << std::endl;
    315305#endif
    316306  if(callTable.count(this)) {
     
    324314  }
    325315}
    326 
    327 /** Constructor for class Observer.
    328  */
    329 Observer::Observer(string name)
    330 {
    331 #ifdef LOG_OBSERVER
    332   observerLog().addName(this,name);
    333   observerLog().addMessage() << "++ Creating Observer " << observerLog().getName(this) << endl;
    334 #endif
    335 }
    336 
    337 /**
    338  * Base Constructor for class Observer
    339  *
    340  * only called from Observable Constructor
    341  */
    342 Observer::Observer(Observer::BaseConstructor){
    343 #ifdef LOG_OBSERVER
    344   observerLog().addObservable(this);
    345 #endif
    346 }
    347 
    348 /** Destructor for class Observer.
    349  */
    350 Observer::~Observer()
    351 {
    352 #ifdef LOG_OBSERVER
    353   if(!observerLog().isObservable(this)){
    354     observerLog().addMessage() << "-- Destroying Observer " << observerLog().getName(this) << endl;
    355   }
    356 #endif
    357 }
    358 
    359 /**
    360  * Method for specialized notifications.
    361  * Most Observers wont need or use this, so it is implemented
    362  * empty in the base case;
    363  */
    364 void Observer::recieveNotification(Observable *publisher, Notification_ptr notification){
    365   ASSERT(0,"Notification received by object that did not sign on for it.");
    366 }
    367 
    368 Notification::Notification(Observable *_owner) :
    369     owner(_owner), channelno(-1)
    370 {}
    371 
    372 Notification::Notification(Observable *_owner, size_t _channelno) :
    373     owner(_owner), channelno(_channelno)
    374 {}
    375 
    376 Notification::~Notification(){}
    377 
    378 void Notification::addObserver(Observer *target){
    379   targets.insert(target);
    380 }
    381 
    382 void Notification::removeObserver(Observer *target){
    383   targets.erase(target);
    384 }
    385 
    386 void Notification::notifyAll(){
    387   for(std::set<Observer*>::iterator it=targets.begin();
    388       it!=targets.end();++it){
    389     (*it)->recieveNotification(owner,this);
    390   }
    391 }
    392 
    393 Channels::Channels(Observable *_owner) :
    394   owner(_owner)
    395 {}
    396 
    397 Channels::~Channels()
    398 {
    399   // free all present Notifications
    400   for(NotificationTypetoRefMap::iterator iter = ChannelMap.begin();
    401       !ChannelMap.empty(); iter = ChannelMap.begin()) {
    402     delete iter->second;
    403     ChannelMap.erase(iter);
    404   }
    405 }
    406 
    407 void Channels::addChannel(size_t no)
    408 {
    409   NotificationTypetoRefMap::const_iterator iter = ChannelMap.find(no);
    410   ASSERT(iter == ChannelMap.end(),
    411       "Channels::addChannel() - channel "+toString(int(no))+" is already present in ChannelMap.");
    412   ChannelMap.insert( std::make_pair(no, new Notification(owner, no)) );
    413 }
    414 
    415 void Channels::removeChannel(size_t no)
    416 {
    417   NotificationTypetoRefMap::iterator iter = ChannelMap.find(no);
    418   ASSERT(iter != ChannelMap.end(),
    419       "Channels::removeChannel() - channel "+toString(int(no))+" not present in ChannelMap.");
    420   delete iter->second;
    421   ChannelMap.erase(iter);
    422 }
    423 
    424 Notification_ptr Channels::getChannel(size_t no) const
    425 {
    426   NotificationTypetoRefMap::const_iterator iter = ChannelMap.find(no);
    427   ASSERT(iter != ChannelMap.end(),
    428       "Channels::getChannel() - channel "+toString(int(no))+" not present in ChannelMap.");
    429   return iter->second;
    430 }
    431 
    432 size_t Channels::getType(Notification_ptr channel) const
    433 {
    434   return channel->getChannelNo();
    435 }
    436 
    437 
    438 #ifdef LOG_OBSERVER
    439 
    440 /************************* Methods to do logging of the Observer Mechanism *********/
    441 
    442 // The log needs to exist fairly early, so we make it construct on first use,
    443 // and never destroy it
    444 ObserverLog &observerLog(){
    445   // yes, this memory is never freed... we need it around for the whole programm,
    446   // so no freeing is possible
    447   static ObserverLog *theLog = Memory::ignore(new ObserverLog());
    448   return *theLog;
    449 }
    450 
    451 
    452 ObserverLog::ObserverLog() :
    453   count (0)
    454 {}
    455 
    456 ObserverLog::~ObserverLog(){}
    457 
    458 string ObserverLog::getLog(){return log.str();}
    459 
    460 std::string ObserverLog::getName(void* obj){
    461   return names[obj];
    462 }
    463 
    464 bool ObserverLog::isObservable(void* obj){
    465   return observables.count(obj);
    466 }
    467 
    468 void ObserverLog::addName(void* obj , string name){
    469   stringstream sstr;
    470   sstr << name << "_" << count++;
    471   names[obj] = sstr.str();
    472 }
    473 
    474 void ObserverLog::addObservable(void* obj){
    475   observables.insert(obj);
    476 }
    477 
    478 void ObserverLog::deleteName(void* obj){
    479   names.erase(obj);
    480 }
    481 
    482 void ObserverLog::deleteObservable(void* obj){
    483   observables.erase(obj);
    484 }
    485 
    486 stringstream &ObserverLog::addMessage(int depth){
    487   for(int i=depth;i--;)
    488     log << "  ";
    489   return log;
    490 }
    491 
    492 #endif
  • src/Patterns/Observer/ObservedContainer.hpp

    rbc2698 re2e035e  
    1515
    1616#include <utility>
    17 #include "ObservedIterator.hpp"
     17#include "Observer/ObservedIterator.hpp"
    1818
    1919/**
  • src/Patterns/Observer/ObservedContainer_impl.hpp

    rbc2698 re2e035e  
    1414#endif
    1515
    16 #include "ObservedContainer.hpp"
     16#include "Observer/ObservedContainer.hpp"
    1717
    1818template <class Container>
  • src/Patterns/Observer/ObservedIterator.hpp

    rbc2698 re2e035e  
    1414#endif
    1515
    16 #include "Observer.hpp"
     16#include "Observer/Observer.hpp"
    1717
    1818#include <iterator>
  • src/Patterns/Observer/unittests/ObservedContainerUnitTest.cpp

    rbc2698 re2e035e  
    2828
    2929#include "stubs/ObserverStub.hpp"
    30 #include "ObservedContainer.hpp"
    31 #include "ObservedContainer_impl.hpp"
     30#include "Observer/ObservedContainer.hpp"
     31#include "Observer/ObservedContainer_impl.hpp"
    3232
    3333#include "ObservedContainerUnitTest.hpp"
  • src/Patterns/Observer/unittests/ObserverUnitTest.cpp

    rbc2698 re2e035e  
    2828
    2929#include "stubs/ObserverStub.hpp"
    30 #include "ObservedContainer.hpp"
    31 #include "ObservedContainer_impl.hpp"
     30#include "Observer/Notification.hpp"
     31#include "Observer/ObservedContainer.hpp"
     32#include "Observer/ObservedContainer_impl.hpp"
    3233
    3334#include "ObserverUnitTest.hpp"
  • src/Patterns/Observer/unittests/stubs/ObserverStub.cpp

    rbc2698 re2e035e  
    2424#include "ObserverStub.hpp"
    2525
     26#include "Observer/Channels.hpp"
     27#include "Observer/Notification.hpp"
     28
    2629/************ UpdateCountObserver **************/
    2730
     
    132135  Observable("NotificationObservable")
    133136{
    134   Channels *OurChannel = new Channels(this);
     137  Channels *OurChannel = new Channels();
    135138  NotificationChannels.insert( std::make_pair(this, OurChannel) );
    136139  OurChannel->addChannel(Operation1Notify);
  • src/Patterns/Observer/unittests/stubs/ObserverStub.hpp

    rbc2698 re2e035e  
    99#define OBSERVERSTUB_HPP_
    1010
    11 #include "Observer.hpp"
    12 #include "ObservedIterator.hpp"
     11#include "Observer/Observer.hpp"
     12#include "Observer/Observable.hpp"
     13#include "Observer/ObservedIterator.hpp"
    1314
    1415class UpdateCountObserver : public Observer {
  • src/Patterns/unittests/Makefile.am

    rbc2698 re2e035e  
    1111  ManipulableCloneUnitTest \
    1212  ManipulablePrototypeFactoryUnitTest \
    13   ObservedContainerUnitTest \
    14   ObserverUnitTest \
    1513  PrototypeFactoryUnitTest \
    1614  RegistryUnitTest \
     
    2018check_PROGRAMS += $(TESTS)
    2119noinst_PROGRAMS += $(TESTS)
    22 
    23 TESTLIBS = \
    24         libCodePatterns-debug.la \
    25         $(BOOST_THREAD_LIBS)
    2620
    2721CacheableUnitTest_SOURCES = unittests/UnitTestMain.cpp \
     
    9589ManipulablePrototypeFactoryUnitTest_LDADD = $(TESTLIBS)
    9690
    97 ObserverUnitTest_SOURCES = unittests/UnitTestMain.cpp \
    98         Patterns/unittests/ObserverUnitTest.cpp \
    99         Patterns/unittests/ObserverUnitTest.hpp \
    100         Patterns/unittests/stubs/ObserverStub.cpp \
    101         Patterns/unittests/stubs/ObserverStub.hpp
    102 nodist_ObserverUnitTest_SOURCES = \
    103         Patterns/Observer.hpp \
    104         Patterns/ObserverContainer.hpp \
    105         Patterns/ObserverContainer_impl.hpp \
    106         Patterns/ObserverIterator.hpp
    107 ObserverUnitTest_LDADD = $(TESTLIBS)
    108 
    109 ObservedContainerUnitTest_SOURCES = unittests/UnitTestMain.cpp \
    110         Patterns/unittests/ObservedContainerUnitTest.cpp \
    111         Patterns/unittests/ObservedContainerUnitTest.hpp \
    112         Patterns/unittests/stubs/ObserverStub.cpp \
    113         Patterns/unittests/stubs/ObserverStub.hpp
    114 nodist_ObservedContainerUnitTest_SOURCES = \
    115         Patterns/ObserverContainer.hpp \
    116         Patterns/ObserverContainer_impl.hpp
    117 ObservedContainerUnitTest_LDADD = $(TESTLIBS)
    118 
    11991PrototypeFactoryUnitTest_SOURCES = unittests/UnitTestMain.cpp \
    12092        Patterns/unittests/PrototypeFactoryUnitTest.cpp \
  • src/documentation/main.dox

    rbc2698 re2e035e  
    4242 *  - \ref ManipulablePrototypeFactory - contains table of clones or prototypes
    4343 *    and spawns new \a manipulated instances on user request.
    44  *  - \ref Observer - class can observe changes in other class via this
     44 *  - \ref pattern-observer - class can observe changes in other class via this
    4545 *    interface.
    4646 *  - \ref PrototypeFactory - contains table of clones or prototypes and spawns
  • src/unittests/Makefile.am

    rbc2698 re2e035e  
    1313  Helpers/unittests/LogUnitTest.cpp \
    1414  Helpers/unittests/RangeUnitTest.cpp \
     15  Patterns/Observer/unittests/ObserverUnitTest.cpp \
     16  Patterns/Observer/unittests/ObservedContainerUnitTest.cpp \
     17  Patterns/Observer/unittests/stubs/ObserverStub.cpp \
    1518  Patterns/unittests/CacheableUnitTest.cpp \
    1619  Patterns/unittests/CloneUnitTest.cpp \
     
    1922  Patterns/unittests/ManipulableCloneUnitTest.cpp \
    2023  Patterns/unittests/ManipulablePrototypeFactoryUnitTest.cpp \
    21   Patterns/unittests/ObserverUnitTest.cpp \
    2224  Patterns/unittests/PrototypeFactoryUnitTest.cpp \
    2325  Patterns/unittests/RegistryUnitTest.cpp \
     
    2931  Patterns/unittests/stubs/ManipulableCloneStub.cpp \
    3032  Patterns/unittests/stubs/ManipulablePrototypeFactoryStub.cpp \
    31   Patterns/unittests/stubs/ObserverStub.cpp \
    3233  Patterns/unittests/stubs/PrototypeFactoryStub.cpp \
    3334  Patterns/unittests/stubs/RegistryStub.cpp
     
    3940  Helpers/unittests/LogUnitTest.hpp \
    4041  Helpers/unittests/RangeUnitTest.hpp \
     42  Patterns/unittests/Observer/ObserverUnitTest.hpp \
     43  Patterns/unittests/Observer/ObservedContainerUnitTest.hpp \
     44  Patterns/unittests/stubs/Observer/ObserverStub.hpp \
    4145  Patterns/unittests/CacheableUnitTest.hpp \
    4246  Patterns/unittests/CloneUnitTest.hpp \
     
    4549  Patterns/unittests/ManipulableCloneUnitTest.hpp \
    4650  Patterns/unittests/ManipulablePrototypeFactoryUnitTest.hpp \
    47   Patterns/unittests/ObserverUnitTest.hpp \
    4851  Patterns/unittests/PrototypeFactoryUnitTest.hpp \
    4952  Patterns/unittests/RegistryUnitTest.hpp \
     
    6265  Patterns/unittests/stubs/ManipulablePrototypeFactoryStub.def \
    6366  Patterns/unittests/stubs/ManipulablePrototypeFactoryStub.undef \
    64   Patterns/unittests/stubs/ObserverStub.hpp \
    6567  Patterns/unittests/stubs/PrototypeFactoryStub.def \
    6668  Patterns/unittests/stubs/PrototypeFactoryStub.undef \
     
    7274        $(TESTHEADERS)
    7375nodist_TestRunner_SOURCES = \
     76        Patterns/Observer/Channels.hpp \
     77        Patterns/Observer/defs.hpp \
     78        Patterns/Observer/Notification.hpp \
     79        Patterns/Observer/Observable.hpp \
     80        Patterns/Observer/Observer.hpp \
     81        Patterns/Observer/ObserverLog.hpp \
     82        Patterns/Observer/ObservedContainer_impl.hpp \
     83        Patterns/Observer/ObservedContainer.hpp \
     84        Patterns/Observer/ObserverIterator.hpp \
    7485        Patterns/Cachable.hpp \
    7586        Patterns/Clone.hpp \
     
    8192        Patterns/ManipulablePrototypeFactory_impl.hpp \
    8293        Patterns/ManipulablePrototypeFactory.hpp \
    83         Patterns/ObservedContainer_impl.hpp \
    84         Patterns/ObservedContainer.hpp \
    85         Patterns/Observer.hpp \
    86         Patterns/ObserverIterator.hpp \
    8794        Patterns/PrototypeFactory_impl.hpp \
    8895        Patterns/PrototypeFactory.hpp \
Note: See TracChangeset for help on using the changeset viewer.