00001 /* 00002 This file is part of geometria. 00003 00004 geometria is free software; you can redistribute it and/or modify 00005 it under the terms of the GNU General Public License as published 00006 by the Free Software Foundation; either version 2 of the License, 00007 or (at your option) any later version. 00008 00009 geometria is distributed in the hope that it will be useful, but 00010 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 00011 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 00012 License for more details. 00013 00014 You should have received a copy of the GNU General Public 00015 License along with geometria; if not, write to the Free Software 00016 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA 00017 00018 (c) Philipp Moritz, 2006 00019 */ 00020 00021 #include "subject.hpp" 00022 00023 subject::subject() 00024 : m_observers(new std::list<observer*>()) 00025 { 00026 } 00027 00028 subject::~subject(void) 00029 { 00030 } 00031 00032 void subject::register_observer(observer *ob) 00033 { 00034 m_observers->push_back(ob); 00035 } 00036 00037 void subject::unregister_observer(observer *ob) 00038 { 00039 m_observers->remove(ob); 00040 } 00041 00042 void subject::notice_all_observers() 00043 { 00044 typedef std::list<observer*>::iterator LI; 00045 for(LI iter = m_observers->begin(); iter != m_observers->end();iter++) 00046 { 00047 (*iter)->update(); 00048 } 00049 }