anatomist  5.0.5
3D neuroimaging data viewer
Observer.h
Go to the documentation of this file.
1 /* This software and supporting documentation are distributed by
2  * Institut Federatif de Recherche 49
3  * CEA/NeuroSpin, Batiment 145,
4  * 91191 Gif-sur-Yvette cedex
5  * France
6  *
7  * This software is governed by the CeCILL-B license under
8  * French law and abiding by the rules of distribution of free software.
9  * You can use, modify and/or redistribute the software under the
10  * terms of the CeCILL-B license as circulated by CEA, CNRS
11  * and INRIA at the following URL "http://www.cecill.info".
12  *
13  * As a counterpart to the access to the source code and rights to copy,
14  * modify and redistribute granted by the license, users are provided only
15  * with a limited warranty and the software's author, the holder of the
16  * economic rights, and the successive licensors have only limited
17  * liability.
18  *
19  * In this respect, the user's attention is drawn to the risks associated
20  * with loading, using, modifying and/or developing or reproducing the
21  * software by the user in light of its specific status of free software,
22  * that may mean that it is complicated to manipulate, and that also
23  * therefore means that it is reserved for developers and experienced
24  * professionals having in-depth computer knowledge. Users are therefore
25  * encouraged to load and test the software's suitability as regards their
26  * requirements in conditions enabling the security of their systems and/or
27  * data to be ensured and, more generally, to use and operate it in the
28  * same conditions as regards security.
29  *
30  * The fact that you are presently reading this means that you have had
31  * knowledge of the CeCILL-B license and that you accept its terms.
32  */
33 
34 
35 #ifndef ANA_OBSERVER_OBSERVER_H
36 #define ANA_OBSERVER_OBSERVER_H
37 
38 #include <set>
39 
40 namespace anatomist
41 {
42  //--- forward declarations --------------------------------------------------
43 
44  class Observable;
45 
46 
47  //--- class declarations ----------------------------------------------------
48 
54  class Observer
55  {
56  public:
57  virtual ~Observer();
58 
66  virtual void update( const Observable* observable, void* arg ) = 0;
67 
68  protected:
79  virtual void cleanupObserver();
81  virtual void registerObservable( Observable* );
84  virtual void unregisterObservable( Observable* );
85  const std::set<Observable *> & observed() const { return _observed; }
86 
87  private:
88  std::set<Observable *> _observed;
89 
90  friend class Observable;
91  };
92 
93 }
94 
95 
96 #endif
virtual void registerObservable(Observable *)
only called by Observable: don&#39;t use this function directly
A class can implement the Observer interface when it wants to be informed of changes in observable ob...
Definition: Observer.h:54
virtual void update(const Observable *observable, void *arg)=0
This method is called whenever the observed object is changed.
virtual void cleanupObserver()
call this function from inherited classes destructors.
This class can be subclassed to represent an object that the programmer wants to have observed...
Definition: Observable.h:67
const std::set< Observable * > & observed() const
Definition: Observer.h:85
virtual void unregisterObservable(Observable *)
Called when an observable is destroyed, only called by Observable: don&#39;t use this function directly...
::sigc::trackable Observable
Definition: Observer.h:90