|
solarpowerlog trunk
|
00001 /* ---------------------------------------------------------------------------- 00002 solarpowerlog 00003 Copyright (C) 2009 Tobias Frost 00004 00005 This file is part of solarpowerlog. 00006 00007 Solarpowerlog is free software; However, it is dual-licenced 00008 as described in the file "COPYING". 00009 00010 For this file (IObserverObserver.cpp), the license terms are: 00011 00012 You can redistribute it and/or modify it under the terms of the GNU 00013 General Public License as published by the Free Software Foundation; either 00014 version 3 of the License, or (at your option) any later version. 00015 00016 This program is distributed in the hope that it will be useful, but 00017 WITHOUT ANY WARRANTY; without even the implied warranty of 00018 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00019 Lesser General Public License for more details. 00020 00021 You should have received a copy of the GNU Library General Public 00022 License along with this proramm; if not, see 00023 <http://www.gnu.org/licenses/>. 00024 ---------------------------------------------------------------------------- 00025 */ 00026 00035 #ifdef HAVE_CONFIG_H 00036 #include "config.h" 00037 #endif 00038 00039 #include <stddef.h> 00040 #include "IObserverObserver.h" 00041 #include "IObserverSubject.h" 00042 00043 using namespace std; 00044 00050 IObserverObserver::IObserverObserver(IObserverSubject *subject) { 00051 00052 /* auto-subscribe */ 00053 if (subject != NULL) setSubject(subject); 00054 } 00055 00057 IObserverObserver::~IObserverObserver() { 00058 00059 /* auto-unsubsribe */ 00060 if (subject) subject->UnSubscribe(this); 00061 // TODO Auto-generated destructor stub 00062 } 00063 00065 IObserverSubject *IObserverObserver::getSubject() const 00066 { 00067 return subject; 00068 } 00069 00076 void IObserverObserver::setSubject(IObserverSubject *subject) 00077 { 00078 if(this->subject == subject) return; 00079 if(this->subject) subject->UnSubscribe(this); 00080 this->subject = subject; 00081 subject->Subscribe(this); 00082 }