STK++ 1.0
STK_IRunnerRef2D.h
Go to the documentation of this file.
00001 /*--------------------------------------------------------------------*/
00002 /*     Copyright (C) 2004-2011  Serge Iovleff
00003 
00004  This program is free software; you can redistribute it and/or modify
00005  it under the terms of the GNU Lesser General Public License as
00006  published by the Free Software Foundation; either version 2 of the
00007  License, or (at your option) any later version.
00008 
00009  This program is distributed in the hope that it will be useful,
00010  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  GNU Lesser General Public License for more details.
00013 
00014  You should have received a copy of the GNU Lesser General Public
00015  License along with this program; if not, write to the
00016  Free Software Foundation, Inc.,
00017  59 Temple Place,
00018  Suite 330,
00019  Boston, MA 02111-1307
00020  USA
00021 
00022  Contact : Serge.Iovleff@stkpp.org
00023  */
00024 
00025 /*
00026  * Project:  stkpp::Sdk
00027  * created on: 29 juil. 2011
00028  * Purpose:  main interface base class for running class on 2D Container.
00029  * Author:   iovleff, serge.iovleff@stkpp.org
00030  *
00031  **/
00032 
00038 #ifndef STK_IRUNNERREF2D_H
00039 #define STK_IRUNNERREF2D_H
00040 
00041 #include "STK_IRunnerBase.h"
00042 #include "STK_ITContainer2D.h"
00043 
00044 namespace STK
00045 {
00055 template < typename TContainer2D>
00056 class IRunnerRef2D : virtual public IRunnerBase
00057 {
00058   protected:
00060     IRunnerRef2D( TContainer2D const& data)
00061                 : p_data_(&data)
00062     { }
00064     IRunnerRef2D( IRunnerRef2D const& runner)
00065                 : IRunnerBase(runner)
00066                 , p_data_(runner.p_data_)
00067     { }
00068 
00069   public:
00071     virtual ~IRunnerRef2D() { }
00072 
00076     inline TContainer2D const& data() const { return *p_data_;}
00077 
00081     virtual void setData( TContainer2D const& data)
00082     {
00083       p_data_ = &data;
00084       update();
00085     }
00086 
00092     virtual bool run() =0;
00098     virtual bool run( typename TContainer2D::TContainerVe const& weights) =0;
00099 
00100   protected:
00102     TContainer2D const* p_data_;
00107     virtual void update() {}
00108 };
00109 
00110 } // namespace STK
00111 
00112 #endif /* STK_IRUNNERREF2D_H_ */