Diana  0.8.3
DianaParameter.hpp
00001 /* -----------------------------------------------------------------------------
00002  *  Diana process modelling, simulation and analysis software
00003  *  Copyright (c) 2005, Michael Krasnyk
00004  *  All rights reserved.
00005  *
00006  *  This file is a part of Diana process modelling, simulation and analysis software
00007  *
00008  *  Diana is free software; you can redistribute it and/or modify it
00009  *  under the terms of the GNU General Public License as published
00010  *  by the Free Software Foundation (see accompanying file LICENSE)
00011  * -----------------------------------------------------------------------------
00012  *  $Id: DianaParameter.hpp 8160 2009-03-16 18:36:30Z miha $
00013  * -----------------------------------------------------------------------------
00014  *  Description:
00015  */
00016 
00017 #ifndef DIANA_PARAMETER_H
00018 #define DIANA_PARAMETER_H
00019 
00020 #include <CapeOpen.hpp>
00021 #include <Diana/IDianaParameter.hpp>
00022 
00023 namespace Diana{
00024 
00028   class DianaRealParameterSpec : virtual public Common::Parameter::ICapeRealParameterSpec {
00029   public:
00031     DianaRealParameterSpec(const Common::Types::CapeString& name,
00032                            const Common::Types::CapeString& description=Common::Types::CapeStringUNDEFINED,
00033                            Common::Types::CapeDouble _defaultValue=0.0,
00034                            Common::Types::CapeDouble _lowerBound=0.0,
00035                            Common::Types::CapeDouble _upperBound=0.0);
00036 
00038     virtual Common::Identification::ICapeIdentification* clone()
00039       throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl);
00040     
00042     const Common::Types::CapeString& GetComponentName() const
00043       throw (Common::Error::ECapeUnknown);
00044 
00047     void SetComponentName(const Common::Types::CapeString& _name)
00048       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument);
00049 
00051     const Common::Types::CapeString& GetComponentDescription() const
00052       throw (Common::Error::ECapeUnknown);
00053 
00056     void SetComponentDescription(const Common::Types::CapeString& _description)
00057       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument);
00058     
00060     Common::Parameter::CapeParamType Type()   const throw (Common::Error::ECapeUnknown);
00061 
00067     Common::Types::CapeVariant Dimensionality() const
00068       throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl);
00069     
00071     Common::Types::CapeDouble DefaultValue()  const throw (Common::Error::ECapeUnknown);
00072       
00074     void setDefaultValue(Common::Types::CapeDouble _val);
00075     
00077     Common::Types::CapeDouble LowerBound()    const throw (Common::Error::ECapeUnknown);
00078 
00080     void setLowerBound(Common::Types::CapeDouble lb);
00081     
00083     Common::Types::CapeDouble UpperBound()    const throw (Common::Error::ECapeUnknown);
00084 
00086     void setUpperBound(Common::Types::CapeDouble ub);
00087     
00095     Common::Types::CapeBoolean Validate(Common::Types::CapeDouble value,
00096                                         Common::Types::CapeString& message)
00097       throw (Common::Error::ECapeUnknown,
00098              Common::Error::ECapeInvalidArgument,
00099              Common::Error::ECapeNoImpl);
00100 
00101   protected:
00102     Common::Types::CapeString name;         
00103     Common::Types::CapeString description;  
00104     
00105     Common::Types::CapeDouble defaultValue;  
00106     Common::Types::CapeDouble lowerBound;    
00107     Common::Types::CapeDouble upperBound;    
00108   };
00109 
00113   class DianaStateSpec : public DianaRealParameterSpec, public IDianaStateSpec{
00114   public:
00116     DianaStateSpec(const Common::Types::CapeString& name,
00117                    const Common::Types::CapeString& description=Common::Types::CapeStringUNDEFINED,
00118                    Common::Types::CapeDouble _defaultValue=0.0,
00119                    Common::Types::CapeDouble _lowerBound=0.0,
00120                    Common::Types::CapeDouble _upperBound=0.0,
00121                    Common::Types::CapeDouble _absoluteError=1.0e-9);
00122 
00124     Common::Identification::ICapeIdentification* clone()
00125       throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl);
00126 
00128     Common::Types::CapeDouble AbsoluteError() const
00129       throw (Common::Error::ECapeUnknown);
00130 
00132     void setAbsoluteError(Common::Types::CapeDouble _absoluteError);
00133 
00134   protected:
00135     Common::Types::CapeDouble absoluteError;   
00136   };
00137 
00141   class DianaIntegerParameterSpec : public Common::Parameter::ICapeIntegerParameterSpec {
00142   public:
00144     DianaIntegerParameterSpec(const Common::Types::CapeString& name,
00145                               const Common::Types::CapeString& description=Common::Types::CapeStringUNDEFINED,
00146                               Common::Types::CapeLong _defaultValue=0,
00147                               Common::Types::CapeLong _lowerBound=0,
00148                               Common::Types::CapeLong _upperBound=0);
00149 
00151     Common::Identification::ICapeIdentification* clone()
00152       throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl);
00153     
00155     const Common::Types::CapeString& GetComponentName() const
00156       throw (Common::Error::ECapeUnknown);
00157 
00160     void SetComponentName(const Common::Types::CapeString& _name)
00161       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument);
00162 
00164     const Common::Types::CapeString& GetComponentDescription() const
00165       throw (Common::Error::ECapeUnknown);
00166 
00169     void SetComponentDescription(const Common::Types::CapeString& _description)
00170       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument);
00171     
00173     Common::Parameter::CapeParamType Type() const throw (Common::Error::ECapeUnknown);
00174 
00180     Common::Types::CapeVariant Dimensionality() const
00181       throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl);
00182     
00184     Common::Types::CapeLong DefaultValue()  const throw (Common::Error::ECapeUnknown);
00185       
00187     void setDefaultValue(Common::Types::CapeLong _val);
00188 
00189 
00191     Common::Types::CapeLong LowerBound()    const throw (Common::Error::ECapeUnknown);
00192 
00194     void setLowerBound(Common::Types::CapeLong lb);
00195 
00197     Common::Types::CapeLong UpperBound()    const throw (Common::Error::ECapeUnknown);
00198 
00200     void setUpperBound(Common::Types::CapeLong ub);
00201 
00202 
00210     Common::Types::CapeBoolean Validate(Common::Types::CapeLong value,
00211                                         Common::Types::CapeString& message)
00212       throw (Common::Error::ECapeUnknown,
00213              Common::Error::ECapeInvalidArgument,
00214              Common::Error::ECapeNoImpl);
00215 
00216   protected:
00217     Common::Types::CapeString name;         
00218     Common::Types::CapeString description;  
00219 
00220     Common::Types::CapeLong   defaultValue; 
00221     Common::Types::CapeLong   lowerBound;   
00222     Common::Types::CapeLong   upperBound;   
00223   };
00224 
00225 
00229   class DianaBooleanParameterSpec : public Common::Parameter::ICapeBooleanParameterSpec {
00230   public:
00232     DianaBooleanParameterSpec(const Common::Types::CapeString& name,
00233                               const Common::Types::CapeString& description=Common::Types::CapeStringUNDEFINED,
00234                               Common::Types::CapeBoolean _defaultValue=false);
00235 
00237     Common::Identification::ICapeIdentification* clone()
00238       throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl);
00239     
00241     const Common::Types::CapeString& GetComponentName() const
00242       throw (Common::Error::ECapeUnknown);
00243 
00246     void SetComponentName(const Common::Types::CapeString& _name)
00247       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument);
00248 
00250     const Common::Types::CapeString& GetComponentDescription() const
00251       throw (Common::Error::ECapeUnknown);
00252 
00255     void SetComponentDescription(const Common::Types::CapeString& _description)
00256       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument);
00257     
00259     Common::Parameter::CapeParamType Type()    const throw (Common::Error::ECapeUnknown);
00260     
00266     Common::Types::CapeVariant Dimensionality() const
00267       throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl);
00268     
00270     Common::Types::CapeBoolean DefaultValue()  const throw (Common::Error::ECapeUnknown);
00272     void setDefaultValue(Common::Types::CapeBoolean _val);
00273 
00274 
00282     Common::Types::CapeBoolean Validate(Common::Types::CapeBoolean value,
00283                                         Common::Types::CapeString& message)
00284       throw (Common::Error::ECapeUnknown,
00285              Common::Error::ECapeInvalidArgument,
00286              Common::Error::ECapeNoImpl);
00287 
00288   protected:
00289     Common::Types::CapeString  name;          
00290     Common::Types::CapeString  description;   
00291     
00292     Common::Types::CapeBoolean defaultValue;  
00293   };
00294 
00298   class DianaPointerParameterSpec : public Common::Parameter::ICapePointerParameterSpec {
00299   public:
00301     DianaPointerParameterSpec(const Common::Types::CapeString& name,
00302                               const Common::Types::CapeString& description=Common::Types::CapeStringUNDEFINED,
00303                               Common::Types::CapePointer _defaultValue=NULL);
00304 
00306     Common::Identification::ICapeIdentification* clone()
00307       throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl);
00308     
00310     const Common::Types::CapeString& GetComponentName() const
00311       throw (Common::Error::ECapeUnknown);
00312 
00315     void SetComponentName(const Common::Types::CapeString& _name)
00316       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument);
00317 
00319     const Common::Types::CapeString& GetComponentDescription() const
00320       throw (Common::Error::ECapeUnknown);
00321 
00324     void SetComponentDescription(const Common::Types::CapeString& _description)
00325       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument);
00326     
00328     Common::Parameter::CapeParamType Type()    const throw (Common::Error::ECapeUnknown);
00329     
00335     Common::Types::CapeVariant Dimensionality() const
00336       throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl);
00337     
00339     Common::Types::CapePointer DefaultValue()  const throw (Common::Error::ECapeUnknown);
00340 
00348     Common::Types::CapeBoolean Validate(Common::Types::CapePointer value,
00349                                         Common::Types::CapeString& message)
00350       throw (Common::Error::ECapeUnknown,
00351              Common::Error::ECapeInvalidArgument,
00352              Common::Error::ECapeNoImpl);
00353 
00354   protected:
00355     Common::Types::CapeString  name;          
00356     Common::Types::CapeString  description;   
00357     
00358     Common::Types::CapePointer defaultValue;  
00359   };
00360 
00361 
00365   class DianaOptionParameterSpec : public Common::Parameter::ICapeOptionParameterSpec {
00366   public:
00368     DianaOptionParameterSpec(const Common::Types::CapeString& name,
00369                              const Common::Types::CapeString& description=Common::Types::CapeStringUNDEFINED);
00370 
00372     DianaOptionParameterSpec(const Common::Types::CapeString& name,
00373                              const Common::Types::CapeString& description,
00374                              const Common::Types::CapeString& _defaultValue,
00375                              const Common::Types::CapeArrayString& _optionList);
00376 
00378     Common::Identification::ICapeIdentification* clone()
00379       throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl);
00380     
00382     const Common::Types::CapeString& GetComponentName() const
00383       throw (Common::Error::ECapeUnknown);
00384 
00387     void SetComponentName(const Common::Types::CapeString& _name)
00388       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument);
00389 
00391     const Common::Types::CapeString& GetComponentDescription() const
00392       throw (Common::Error::ECapeUnknown);
00393 
00396     void SetComponentDescription(const Common::Types::CapeString& _description)
00397       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument);
00398     
00400     Common::Parameter::CapeParamType Type()       const throw (Common::Error::ECapeUnknown);
00401 
00407     Common::Types::CapeVariant Dimensionality() const
00408       throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl);
00409     
00413     const Common::Types::CapeString& DefaultValue()      const throw (Common::Error::ECapeUnknown);
00414 
00418     const Common::Types::CapeArrayString& OptionList()   const throw (Common::Error::ECapeUnknown);
00419 
00422     Common::Types::CapeBoolean RestrictedToList() const throw (Common::Error::ECapeUnknown);
00423 
00431     Common::Types::CapeBoolean Validate(Common::Types::CapeString value, Common::Types::CapeString& message)
00432       throw (Common::Error::ECapeUnknown,
00433              Common::Error::ECapeInvalidArgument,
00434              Common::Error::ECapeNoImpl);
00435 
00436   protected:
00437     Common::Types::CapeString      name;          
00438     Common::Types::CapeString      description;   
00439     
00440     Common::Types::CapeString      defaultValue;  
00441     Common::Types::CapeArrayString optionList;    
00442     Common::Types::CapeBoolean     bRestricted;
00443   };
00444 
00448   class DianaArrayParameterSpec : virtual public Diana::IDianaArrayParameterSpec {
00449   public:
00451     DianaArrayParameterSpec(const Common::Types::CapeString& name,
00452                             const Common::Types::CapeString& description,
00453                             const Diana::DianaArrayParameter&  pointers,
00454                             const Common::Types::CapeArrayLong& idxLowerBounds);
00456     Common::Identification::ICapeIdentification* clone()
00457       throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl);
00458     
00460     const Common::Types::CapeString& GetComponentName() const
00461       throw (Common::Error::ECapeUnknown);
00462 
00465     void SetComponentName(const Common::Types::CapeString& _name)
00466       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument);
00467 
00469     const Common::Types::CapeString& GetComponentDescription() const
00470       throw (Common::Error::ECapeUnknown);
00471 
00474     void SetComponentDescription(const Common::Types::CapeString& _description)
00475       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument);
00476     
00478     Common::Parameter::CapeParamType Type()   const throw (Common::Error::ECapeUnknown);
00479 
00481     const Common::Types::CapeArrayLong& GetIdxLowerBounds() const;
00482 
00488     Common::Types::CapeVariant Dimensionality() const
00489       throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl);
00490 
00492     const Diana::DianaArrayParameter& ParametersArray() const
00493       throw (Common::Error::ECapeUnknown);
00494 
00502     Common::Types::CapeBoolean Validate(const Diana::DianaArray& value,
00503                                         Common::Types::CapeString& message)
00504       throw (Common::Error::ECapeUnknown,
00505              Common::Error::ECapeInvalidArgument,
00506              Common::Error::ECapeNoImpl);
00507 
00508   protected:
00509       Common::Types::CapeString name;         
00510       Common::Types::CapeString description;  
00511 
00512 
00513       DianaArrayParameter ptrParameters; 
00514       Common::Types::CapeArrayLong idxLowerBounds; 
00515   };
00516 
00517 #ifndef SWIG
00518 
00521   class DianaArrayRealParameterSpec : virtual public IDianaArrayRealParameterSpec {
00522   public:
00523 
00525     DianaArrayRealParameterSpec(const Common::Types::CapeString& name,
00526                                 const Common::Types::CapeString& description=Common::Types::CapeStringUNDEFINED,
00527                                 Diana::DianaArray _defaultValue=Diana::DianaArray(),
00528                                 Diana::DianaArray _lowerBound=Diana::DianaArray(),
00529                                 Diana::DianaArray _upperBound=Diana::DianaArray());
00530 
00532     Common::Identification::ICapeIdentification* clone()
00533       throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl);
00534     
00536     const Common::Types::CapeString& GetComponentName() const
00537       throw (Common::Error::ECapeUnknown);
00538 
00541     void SetComponentName(const Common::Types::CapeString& _name)
00542       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument);
00543 
00545     const Common::Types::CapeString& GetComponentDescription() const
00546       throw (Common::Error::ECapeUnknown);
00547 
00550     void SetComponentDescription(const Common::Types::CapeString& _description)
00551       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument);
00552     
00554     Common::Parameter::CapeParamType Type()   const throw (Common::Error::ECapeUnknown);
00555 
00561     Common::Types::CapeVariant Dimensionality() const
00562       throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl);
00563     
00565     Diana::DianaArray DefaultValue()  const throw (Common::Error::ECapeUnknown);
00566       
00568     void setDefaultValue(const Diana::DianaArray& _val);
00569     
00571     Diana::DianaArray LowerBound()    const throw (Common::Error::ECapeUnknown);
00572 
00574     void setLowerBound(const Diana::DianaArray& lb);
00575     
00577     Diana::DianaArray UpperBound()    const throw (Common::Error::ECapeUnknown);
00578 
00580     void setUpperBound(const Diana::DianaArray& ub);
00581     
00589     Common::Types::CapeBoolean Validate(Diana::DianaArray value,
00590                                         Common::Types::CapeString& message)
00591       throw (Common::Error::ECapeUnknown,
00592              Common::Error::ECapeInvalidArgument,
00593              Common::Error::ECapeNoImpl);
00594 
00595   protected:
00596     Common::Types::CapeString name;         
00597     Common::Types::CapeString description;  
00598     
00599     Diana::DianaArray         defaultValue;  
00600     Diana::DianaArray         lowerBound;    
00601     Diana::DianaArray         upperBound;    
00602   };
00603 #endif
00604 
00609   class DianaArrayStringParameterSpec : public IDianaArrayStringParameterSpec{
00610   public:
00612     DianaArrayStringParameterSpec(const Common::Types::CapeString& name,
00613                                   const Common::Types::CapeString& description=Common::Types::CapeStringUNDEFINED);
00614 
00616     DianaArrayStringParameterSpec(const Common::Types::CapeString& name,
00617                                   const Common::Types::CapeString& description,
00618                                   const Common::Types::CapeArrayString& _defaultValue,
00619                                   const Common::Types::CapeArrayString& _optionList);
00620 
00622     Common::Identification::ICapeIdentification* clone()
00623       throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl);
00624     
00626     const Common::Types::CapeString& GetComponentName() const
00627       throw (Common::Error::ECapeUnknown);
00628 
00631     void SetComponentName(const Common::Types::CapeString& _name)
00632       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument);
00633 
00635     const Common::Types::CapeString& GetComponentDescription() const
00636       throw (Common::Error::ECapeUnknown);
00637 
00640     void SetComponentDescription(const Common::Types::CapeString& _description)
00641       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument);
00642     
00644     Common::Parameter::CapeParamType Type()       const throw (Common::Error::ECapeUnknown);
00645 
00651     Common::Types::CapeVariant Dimensionality() const
00652       throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl);
00653     
00657     const Common::Types::CapeArrayString& DefaultValue() const throw (Common::Error::ECapeUnknown);
00658 
00662     const Common::Types::CapeArrayString& OptionList() const throw (Common::Error::ECapeUnknown);
00663 
00666     Common::Types::CapeBoolean RestrictedToList() const throw (Common::Error::ECapeUnknown);
00667 
00675     Common::Types::CapeBoolean Validate(Common::Types::CapeString value, Common::Types::CapeString& message)
00676       throw (Common::Error::ECapeUnknown,
00677              Common::Error::ECapeInvalidArgument,
00678              Common::Error::ECapeNoImpl);
00679 
00680   protected:
00681     Common::Types::CapeString      name;          
00682     Common::Types::CapeString      description;   
00683     
00684     Common::Types::CapeArrayString defaultValue;  
00685     Common::Types::CapeArrayString optionList;    
00686     Common::Types::CapeBoolean     bRestricted;
00687   };
00688 
00692   class DianaNLPRealParameterSpec : public Diana::DianaRealParameterSpec, public Common::Parameter::ICapeNLPRealParameterSpec {
00693   public:
00695     DianaNLPRealParameterSpec(const Common::Types::CapeString& name,
00696                               const Common::Types::CapeString& description=Common::Types::CapeStringUNDEFINED,
00697                               Common::Types::CapeDouble _defaultValue=0.0,
00698                               Common::Types::CapeDouble _lowerBound=0.0,
00699                               Common::Types::CapeDouble _upperBound=0.0,
00700                               Common::Types::CapeDouble _precision=0.001);
00701 
00702     DianaNLPRealParameterSpec(const DianaRealParameterSpec& _realSpec,
00703                               Common::Types::CapeDouble _precision=0.001);
00704 
00706     Common::Identification::ICapeIdentification* clone()
00707       throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl);
00708 
00710     void setPrecision(Common::Types::CapeDouble _precision);
00711 
00713     Common::Types::CapeDouble Precision() const
00714       throw (Common::Error::ECapeUnknown);
00715 
00716   protected:
00717     Common::Types::CapeDouble dblPrecision;     
00718   };
00719 
00720 #ifndef SWIG
00721 
00725   class DianaParameter : virtual public Common::Parameter::ICapeParameter {
00726   public:
00727 
00728     class PtrData {
00729     public:
00730       typedef size_t size_type;
00731 
00732       PtrData();
00733       PtrData(Common::Utilities::ICapeUtilities* _owner, void* _ptr, size_type _memsize);
00734       void* operator()() const;
00735       size_type size() const;
00736       Common::Utilities::ICapeUtilities* owner() const;
00737     private:
00738       Common::Utilities::ICapeUtilities* owner_ptr;
00739       void* ptr;
00740       size_type   memsize;
00741     };
00742 
00743   public:
00745     DianaParameter(const DianaParameter& param);
00746 
00748     DianaParameter& operator=(const DianaParameter& param);
00749 
00751     DianaParameter(const DianaRealParameterSpec& spec,
00752                    Common::Parameter::CapeParamMode _mode, const PtrData& _ptr);
00754     DianaParameter(const DianaRealParameterSpec& spec,
00755                    Common::Parameter::CapeParamMode _mode);
00757     DianaParameter(const Diana::DianaNLPRealParameterSpec& spec,
00758                    Common::Parameter::CapeParamMode _mode);
00760     DianaParameter(const DianaStateSpec& spec,
00761                    Common::Parameter::CapeParamMode _mode, const PtrData& _ptr);
00763     DianaParameter(const DianaIntegerParameterSpec& spec,
00764                    Common::Parameter::CapeParamMode _mode, const PtrData& _ptr);
00766     DianaParameter(const DianaIntegerParameterSpec& spec,
00767                    Common::Parameter::CapeParamMode _mode);
00769     DianaParameter(const DianaBooleanParameterSpec& spec,
00770                    Common::Parameter::CapeParamMode _mode, const PtrData& _ptr);
00772     DianaParameter(const DianaBooleanParameterSpec& spec,
00773                    Common::Parameter::CapeParamMode _mode);
00775     DianaParameter(const DianaOptionParameterSpec& spec,
00776                    Common::Parameter::CapeParamMode _mode);
00778     DianaParameter(const DianaPointerParameterSpec& spec,
00779                    Common::Parameter::CapeParamMode _mode, const PtrData& _ptr);
00781     DianaParameter(const DianaArrayParameterSpec& spec,
00782                    Common::Parameter::CapeParamMode _mode);
00784     DianaParameter(const DianaArrayRealParameterSpec& spec,
00785                    Common::Parameter::CapeParamMode _mode);
00787     DianaParameter(const DianaArrayStringParameterSpec& spec,
00788                    Common::Parameter::CapeParamMode _mode);
00789 
00791     virtual ~DianaParameter();
00792 
00794     const Common::Types::CapeString& GetComponentName() const
00795       throw (Common::Error::ECapeUnknown);
00796 
00799     void SetComponentName(const Common::Types::CapeString& _name)
00800       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument);
00801 
00803     const Common::Types::CapeString& GetComponentDescription() const
00804       throw (Common::Error::ECapeUnknown);
00805 
00808     void SetComponentDescription(const Common::Types::CapeString& _description)
00809       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument);
00810     
00813     Common::Types::CapeVariant GetValue()
00814       throw (Common::Error::ECapeUnknown);
00815 
00820     virtual void SetValue(const Common::Types::CapeVariant& _value)
00821       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument);
00822 
00832     Common::Types::CapeValidationStatus ValStatus()  const
00833       throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl);
00834 
00843     Common::Parameter::CapeParamMode GetMode()  const
00844       throw (Common::Error::ECapeUnknown);
00845 
00856     void SetMode(Common::Parameter::CapeParamMode _mode)
00857       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument);
00858 
00862     Common::Parameter::ICapeParameterSpec* Specification() const
00863       throw (Common::Error::ECapeUnknown);
00864 
00868     Common::Types::CapeBoolean Validate(Common::Types::CapeString& message)
00869       throw (Common::Error::ECapeUnknown,
00870              Common::Error::ECapeNoImpl);
00871 
00873     void Reset()
00874       throw (Common::Error::ECapeUnknown);
00875 
00876 
00878     Common::Identification::ICapeIdentification* clone()
00879       throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl);
00880       
00885     Common::Identification::ICapeIdentification* clone(const PtrData& _ptr)
00886       throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl);
00887 
00888   protected:
00889 
00894     void updateValueByPointer(Common::Types::CapeBoolean bUpdateDirection)
00895       throw (Common::Error::ECapeUnknown);
00896 
00897     void updateArrayValue(Common::Types::CapeBoolean bUpdateDirection)
00898       throw (Common::Error::ECapeUnknown);
00899 
00900     void updateValue(Common::Types::CapeBoolean bUpdateDirection)
00901       throw (Common::Error::ECapeUnknown);
00902 
00903   protected:
00904     Common::Types::CapeString name;                        
00905     Common::Types::CapeString description;                 
00906 
00907     Common::Parameter::ICapeParameterSpec* specification;  
00908     Common::Parameter::CapeParamMode       mode;           
00909     Common::Types::CapeVariant             value;          
00910 
00914     PtrData ptrInternal;
00915   };
00916 
00917 #endif
00918 };
00919 
00920 #endif // DIANA_PARAMETER_H