Nemo  2.2.0
simcomponent.h
Go to the documentation of this file.
00001 
00030 #ifndef SIMCOMPONENT_H
00031 #define SIMCOMPONENT_H
00032 
00033 #include <string>
00034 #include "fileservices.h"
00035 #include "statservices.h"
00036 #include "updaterservices.h"
00037 #include "param.h"
00038 #include "binarystoragebuffer.h"
00039 
00045 class SimComponent {
00046 protected:
00048   ParamSet* _paramSet;
00049   
00050 public:
00051   
00052   SimComponent ( ) : _paramSet(0) {}//{ cout << "calling SimComponent()" << endl;}
00053   //**Dstor. Deletes the parameter container. */
00054   virtual ~SimComponent ( ) {if(_paramSet != NULL) delete _paramSet;}
00055   
00058 
00060   virtual void loadFileServices ( FileServices* loader ) = 0;
00061   
00064   virtual void loadStatServices ( StatServices* loader ) = 0;
00065   
00068   virtual void loadUpdaters  ( UpdaterServices* loader ) {
00069     list<ParamUpdaterBase*> updaters = _paramSet->getUpdaters();
00070     //remove duplicates:
00071     updaters.unique();
00072     for (list<ParamUpdaterBase*>::iterator u = updaters.begin(); u != updaters.end(); u++) {
00073       loader->attach( (*u) );
00074     }
00075   }
00077 
00080 
00082   virtual bool setParameters () = 0;
00083   
00086   virtual void set_paramset(ParamSet * paramset)
00087   { _paramSet = paramset; }
00088   
00093   virtual void set_paramset (std::string name, bool required, SimComponent* owner ) {
00094     if(_paramSet != NULL) delete _paramSet;
00095     _paramSet = new ParamSet(); 
00096     _paramSet->setName(name);
00097     _paramSet->setIsRequired(required);
00098     _paramSet->setOwner(owner);
00099   }
00100   
00103   virtual void set_paramsetFromCopy (const ParamSet &PSet) {
00104     if(_paramSet != NULL) delete _paramSet;
00105     _paramSet = new ParamSet(PSet); 
00106   }
00108   virtual ParamSet*  get_paramset () {return _paramSet;}
00109   
00112   virtual void add_parameter (Param* param) {_paramSet->add_param(param);}
00113   
00121   virtual void add_parameter (std::string Name, param_t Type, bool isRequired, bool isBounded,
00122                               double low_bnd, double up_bnd)
00123   {_paramSet->add_param(Name, Type, isRequired, isBounded, low_bnd, up_bnd, 0);}
00124     
00133   virtual void add_parameter (std::string Name, param_t Type, bool isRequired, bool isBounded,
00134                               double low_bnd, double up_bnd, ParamUpdaterBase* updater)
00135   {_paramSet->add_param(Name, Type, isRequired, isBounded, low_bnd, up_bnd, updater);}
00136   
00139   virtual Param*    get_parameter       (std::string name)  {return _paramSet->get_param(name);}
00140   
00143   virtual double    get_parameter_value (std::string name) {return _paramSet->getValue(name);}
00144   
00146   virtual string    get_name () {return _paramSet->getName();}
00148   
00149 };
00150 
00155 class StorableComponent {
00156  
00157 public:
00159   virtual void store_data    ( BinaryStorageBuffer* saver  ) = 0;
00161   virtual bool retrieve_data ( BinaryStorageBuffer* reader ) = 0;
00162   
00163   virtual ~StorableComponent ( ) { }
00164   
00165 };
00166 
00167 #endif  //SIMCOMPONENT_H
00168 

Generated for Nemo v2.2.0 by  doxygen 1.7.5.1 -- Nemo is hosted by  SourceForge.net Logo