00001 /*!@file Channels/ChannelVisitorInstallFacet.H Install some ChannelFacet */ 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/Channels/ChannelVisitorInstallFacet.H $ 00035 // $Id: ChannelVisitorInstallFacet.H 10794 2009-02-08 06:21:09Z itti $ 00036 // 00037 00038 #ifndef CHANNELS_CHANNELVISITORINSTALLFACET_H_DEFINED 00039 #define CHANNELS_CHANNELVISITORINSTALLFACET_H_DEFINED 00040 00041 #include "Channels/ChannelVisitor.H" 00042 00043 /// ChannelVisitorInstallFacet install some ChannelFacet 00044 /** This visitor installs some ChannelFacet. The two template 00045 arguments are for the ChannelFacetSingle and the 00046 ChannelFacetComplex to be installed. */ 00047 template <class CFS, class CFC> 00048 class ChannelVisitorInstallFacet : public ChannelVisitor { 00049 public: 00050 /// Constructor 00051 ChannelVisitorInstallFacet(); 00052 00053 /// Destructor 00054 virtual ~ChannelVisitorInstallFacet(); 00055 00056 /// Visit the given ChannelBase node. 00057 /** This will just LFATAL() for ChannelVisitorInstallFacet. */ 00058 virtual void visitChannelBase(ChannelBase& chan); 00059 00060 /// Visit the given SingleChannel node. 00061 /** Install appropriate ChannelFacetGainSingle and 00062 ChannelFacetGainComplex if those do not already exist. Then load 00063 up the gains from our ParamMap. */ 00064 virtual void visitSingleChannel(SingleChannel& chan); 00065 00066 /// Visit the given ComplexChannel node. 00067 /** NOTE: ComplexChannel does NOT provide the iteration over its 00068 subchannels; instead, each ChannelVisitor subclass must iterate 00069 over ComplexChannel's subchannels, calling 00070 subChan(i)->accept(*this) for each one. Although this requires 00071 slightly more code for each ChannelVisitor subclass, it is also 00072 much more flexible since it lets the visitor be aware of the 00073 hierarchical structres of the various channels that it 00074 visits. */ 00075 virtual void visitComplexChannel(ComplexChannel& chan); 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