Simulation.H

Go to the documentation of this file.
00001 /*!@file Simulation/Simulation.H Main loop of a 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/Simulation.H $
00035 // $Id: Simulation.H 7279 2006-10-19 04:48:22Z itti $
00036 //
00037 
00038 #ifndef SIMULATION_SIMULATION_H_DEFINED
00039 #define SIMULATION_SIMULATION_H_DEFINED
00040 
00041 #include "Component/ModelComponent.H"
00042 #include "Simulation/SimEventQueueConfigurator.H"
00043 #include "Simulation/SimModule.H"
00044 
00045 //! Encapsulation of the main loop of a simulation
00046 /*! This class encapsulates the main loop of a typical
00047   simulation. Basically it holds a SimEventQueue and a bunch of
00048   SimModules, and will keep evolving the modules and the queue until
00049   some simulation break event terminates the simulation. Modules are
00050   evolved in the order in which they have been added using
00051   addModule(), and the queue is evolved last. */
00052 class Simulation : public ModelComponent
00053 {
00054 public:
00055   //! Constructor
00056   Simulation(OptionManager& mgr);
00057 
00058   //! Destructor
00059   virtual ~Simulation();
00060 
00061   //! Add a module to our evolve list
00062   /*! At each time step, SimModule::evolve() will be called on each
00063     added module, then on our internal SimEventQueue. */
00064   void addModule(nub::ref<SimModule> mod);
00065 
00066   //! Run the simulation until it breaks
00067   /*! Keep evolve()'ing the simulation until some module posts a
00068     SimBreak event. Returns 0 if the simulation ended normally through
00069     catching a SimBreak event, or -1 if a Unix signal was caught
00070     (e.g., CTRL-C). */
00071   int run();
00072 
00073 private:
00074   nub::ref<SimEventQueueConfigurator> itsQC;
00075   std::vector<nub::ref<SimModule> > itsModules;
00076 };
00077 
00078 // ######################################################################
00079 /* So things look consistent in everyone's emacs... */
00080 /* Local Variables: */
00081 /* mode: c++ */
00082 /* indent-tabs-mode: nil */
00083 /* End: */
00084 
00085 #endif // SIMULATION_SIMULATION_H_DEFINED
Generated on Sun May 8 08:42:18 2011 for iLab Neuromorphic Vision Toolkit by  doxygen 1.6.3