SimEvent.H

Go to the documentation of this file.
00001 /*!@file Simulation/SimEvent.H Base class for events that arise in simulation*/
00002 
00003 // //////////////////////////////////////////////////////////////////// //
00004 // The iLab Neuromorphic Vision C++ Toolkit - Copyright (C) 2000-2005   //
00005 // by the University of Southern California (USC) and the iLab at USC.  //
00006 // See http://iLab.usc.edu for information about this project.          //
00007 // //////////////////////////////////////////////////////////////////// //
00008 // Major portions of the iLab Neuromorphic Vision Toolkit are protected //
00009 // under the U.S. patent ``Computation of Intrinsic Perceptual Saliency //
00010 // in Visual Environments, and Applications'' by Christof Koch and      //
00011 // Laurent Itti, California Institute of Technology, 2001 (patent       //
00012 // pending; application number 09/912,225 filed July 23, 2001; see      //
00013 // http://pair.uspto.gov/cgi-bin/final/home.pl for current status).     //
00014 // //////////////////////////////////////////////////////////////////// //
00015 // This file is part of the iLab Neuromorphic Vision C++ Toolkit.       //
00016 //                                                                      //
00017 // The iLab Neuromorphic Vision C++ Toolkit is free software; you can   //
00018 // redistribute it and/or modify it under the terms of the GNU General  //
00019 // Public License as published by the Free Software Foundation; either  //
00020 // version 2 of the License, or (at your option) any later version.     //
00021 //                                                                      //
00022 // The iLab Neuromorphic Vision C++ Toolkit is distributed in the hope  //
00023 // that it will be useful, but WITHOUT ANY WARRANTY; without even the   //
00024 // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
00025 // PURPOSE.  See the GNU General Public License for more details.       //
00026 //                                                                      //
00027 // You should have received a copy of the GNU General Public License    //
00028 // along with the iLab Neuromorphic Vision C++ Toolkit; if not, write   //
00029 // to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,   //
00030 // Boston, MA 02111-1307 USA.                                           //
00031 // //////////////////////////////////////////////////////////////////// //
00032 //
00033 // Primary maintainer for this file: Laurent Itti <itti@usc.edu>
00034 // $HeadURL: svn://isvn.usc.edu/software/invt/trunk/saliency/src/Simulation/SimEvent.H $
00035 // $Id: SimEvent.H 13103 2010-03-31 02:24:47Z itti $
00036 //
00037 
00038 #ifndef SIMULATION_SIMEVENT_H_DEFINED
00039 #define SIMULATION_SIMEVENT_H_DEFINED
00040 
00041 #include "rutz/shared_ptr.h"
00042 #include "Simulation/SimModule.H"
00043 #include <set>
00044 
00045 //! Base class for events that arise in simulation
00046 /*! Actual events would normally derive from this base. See
00047   Simulation/SimEvents.H */
00048 class SimEvent {
00049 public:
00050   //! Constuctor
00051   /*! Normally a SimModule would pass "this" as src. This is used in SimEventQueue to prune older events that have been
00052     pushed by the same SimModule. The event will be visible to anyone through SimEventQueue::check() after it has been
00053     posted to the SimEventQueue. */
00054   SimEvent(SimModule* src);
00055 
00056   //! Destructor
00057   virtual ~SimEvent();
00058 
00059   //! Get a description for printing out
00060   /*! The base class implementation only returns the demangled name of the class. Overload as necessary in derived
00061     classes if you want to also return additional information. */
00062   virtual std::string toString() const;
00063 
00064   //! Get comma-separated list of receivers done with the event
00065   /*! Normally, few people except for SimEventQueue would use this function. */
00066   std::string getDoneList() const;
00067 
00068 private:
00069   friend class SimEventQueue; // allow SimEventQueue to access our private data
00070 
00071   //! Returns true if receiver is done with event
00072   /*! Normally, few people except for SimEventQueue would use this function. */
00073   bool isDone(const SimModule* const receiver) const;
00074 
00075   //! Mark that receiver is done with the event
00076   /*! Normally, few people except for SimEventQueue would use this function. */
00077   void markDone(const SimModule* const receiver);
00078 
00079   SimModule* const itsSource; // source of the event (a brain module)
00080   std::set<const SimModule*> itsReceiversDone;
00081 };
00082 
00083 
00084 // ######################################################################
00085 /* So things look consistent in everyone's emacs... */
00086 /* Local Variables: */
00087 /* mode: c++ */
00088 /* indent-tabs-mode: nil */
00089 /* End: */
00090 
00091 #endif // SIMULATION_SIMEVENT_H_DEFINED
Generated on Sun May 8 08:42:17 2011 for iLab Neuromorphic Vision Toolkit by  doxygen 1.6.3