HyperspaceExplorer 0.7.1
Observer.h
00001 /*
00002     Hyperspace Explorer - vizualizing higher-dimensional geometry
00003     Copyright (C) 2010  Lene Preuss <lene.preuss@gmail.com>
00004 
00005     This program is free software; you can redistribute it and/or modify
00006     it under the terms of the GNU General Public License as published by
00007     the Free Software Foundation; either version 2 of the License, or
00008     (at your option) any later version.
00009 
00010     This program is distributed in the hope that it will be useful,
00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013     GNU General Public License for more details.
00014 
00015     You should have received a copy of the GNU General Public License along
00016     with this program; if not, write to the Free Software Foundation, Inc.,
00017     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
00018 
00019 */
00020 
00021 #ifndef OBSERVER_H
00022 #define OBSERVER_H
00023 
00024 #include <memory>
00025 
00026 template <class Parent> class Observer;
00027 
00029 
00053 template <class Parent>
00054 class Subject: public Parent {
00055 
00056   public:
00057 
00058     Subject();
00059     virtual ~Subject();
00060 
00061     virtual void attach(std::shared_ptr< Observer<Parent> > observer);
00062     virtual void detach(std::shared_ptr< Observer<Parent> > observer);
00063 
00064   protected:
00065 
00066     virtual void notify();
00067 
00068   private:
00069 
00070     class Impl;
00071     std::shared_ptr<Impl> pImpl_;
00072 };
00073 
00075 
00096 template <class Parent>
00097 class Observer {
00098 
00099   public:
00100 
00101     virtual ~Observer();
00102 
00103     virtual void update(std::shared_ptr< const Subject<Parent> > changedSubject) = 0;
00104 
00105 };
00106 
00107 #endif // OBSERVER_H
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends

Generated on Mon Apr 9 2012 20:25:16 for HyperspaceExplorer 0.7.1 by doxygen 1.7.4  -  Hosted bySourceForge.net Logo