00001 /*========================================================================= 00002 Program: bbtk 00003 Module: $RCSfile: Observable.h,v $ 00004 Language: C++ 00005 Date: $Date: 2010/06/22 09:17:27 $ 00006 Version: $Revision: 1.7 $ 00007 =========================================================================*/ 00008 00009 /* --------------------------------------------------------------------- 00010 00011 * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale) 00012 * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux 00013 * 00014 * This software is governed by the CeCILL-B license under French law and 00015 * abiding by the rules of distribution of free software. You can use, 00016 * modify and/ or redistribute the software under the terms of the CeCILL-B 00017 * license as circulated by CEA, CNRS and INRIA at the following URL 00018 * http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html 00019 * or in the file LICENSE.txt. 00020 * 00021 * As a counterpart to the access to the source code and rights to copy, 00022 * modify and redistribute granted by the license, users are provided only 00023 * with a limited warranty and the software's author, the holder of the 00024 * economic rights, and the successive licensors have only limited 00025 * liability. 00026 * 00027 * The fact that you are presently reading this means that you have had 00028 * knowledge of the CeCILL-B license and that you accept its terms. 00029 * ------------------------------------------------------------------------ */ 00030 00031 00032 00043 /**** 00044 * Design and Developpement of BBTK GEditor 00045 * Ricardo A Corredor J <ra.corredor67@uniandes.edu.co> 00046 * RaC - 2010 00047 ****/ 00048 00049 #ifndef __Observable_h__ 00050 #define __Observable_h__ 00051 00052 //Includes same project 00053 00054 #include "Observer.h" 00055 00056 //Includes same project 00057 #include "GlobalConstants.h" 00058 00059 //Includes std 00060 #include <iostream> 00061 #include <vector> 00062 00063 namespace bbtk 00064 { 00065 00066 class Observable 00067 { 00068 00069 public: 00070 00071 //Constructors 00072 Observable(); 00073 ~Observable(); 00074 00075 //Public methods 00076 void addObserver(Observer *observer); 00077 00078 // It is possible to notify the observers with an specific command (See GlobalConstants.h), for example, 00079 // to initialize the contour creation INIT_CREATION_CONTOUR 00080 void notifyObservers(int idCaller,int command=NO_COMMAND); 00081 00082 private: 00083 00084 //Private Attributes 00085 std::vector<Observer*> _observers; 00086 00087 //Private Methods 00088 00089 protected: 00090 00091 //Protected Attributes 00092 00093 //Protected methods 00094 00095 }; 00096 00097 00098 } 00099 // namespace bbtk 00100 #endif 00101