|
Nemo
2.2.0
|
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
1.7.5.1 -- Nemo is hosted by