Diana  0.8.3
IDianaParameter.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: IDianaParameter.hpp 8160 2009-03-16 18:36:30Z miha $
00013  * -----------------------------------------------------------------------------
00014  *  Description:
00015  */
00016 
00017 #ifndef IDIANA_PARAMETER_HPP
00018 #define IDIANA_PARAMETER_HPP
00019 
00020 #include <CapeOpen.hpp>
00021 #include <Basic/DianaArray.hpp>
00022 
00023 namespace Diana {
00024 
00025   typedef Diana::array<Common::Parameter::ICapeParameter*> DianaArrayParameter;
00026   
00031   class IDianaStateSpec : virtual public Common::Parameter::ICapeRealParameterSpec {
00032   public:
00034     virtual Common::Types::CapeDouble AbsoluteError() const
00035       throw (Common::Error::ECapeUnknown) = 0;
00036   };
00037 
00042         class IDianaArrayParameterSpec : public Common::Parameter::ICapeParameterSpec{
00043 #ifndef SWIG
00044 
00045       friend std::ostream& operator<<(std::ostream& out_file, const IDianaArrayParameterSpec& pspec);
00046 #endif
00047         public:
00049                 virtual const DianaArrayParameter& ParametersArray() const
00050                         throw (Common::Error::ECapeUnknown) = 0;
00051                 
00059                 virtual Common::Types::CapeBoolean Validate(const Diana::DianaArray& value,
00060                                                                                                                                                                                                 Common::Types::CapeString& message)
00061                         throw (Common::Error::ECapeUnknown,
00062                                                  Common::Error::ECapeInvalidArgument,
00063                                                  Common::Error::ECapeNoImpl) = 0;
00064         };
00065 
00070   class IDianaArrayRealParameterSpec : public Common::Parameter::ICapeParameterSpec{
00071 #ifndef SWIG
00072 
00073     friend std::ostream& operator<<(std::ostream& os, const IDianaArrayRealParameterSpec& pspec);
00074 #endif
00075   public:
00077     virtual Diana::DianaArray DefaultValue()  const throw (Common::Error::ECapeUnknown) = 0;
00078       
00080     virtual Diana::DianaArray LowerBound()    const throw (Common::Error::ECapeUnknown) = 0;
00081 
00083     virtual Diana::DianaArray UpperBound()    const throw (Common::Error::ECapeUnknown) = 0;
00084 
00092     virtual Common::Types::CapeBoolean Validate(Diana::DianaArray value,
00093                                         Common::Types::CapeString& message)
00094       throw (Common::Error::ECapeUnknown,
00095              Common::Error::ECapeInvalidArgument,
00096              Common::Error::ECapeNoImpl) = 0;
00097   };
00098 
00103   class IDianaArrayStringParameterSpec : public Common::Parameter::ICapeParameterSpec{
00104 #ifndef SWIG
00105 
00106     friend std::ostream& operator<<(std::ostream& os, const IDianaArrayStringParameterSpec& pspec);
00107 #endif
00108   public:
00112     virtual const Common::Types::CapeArrayString& DefaultValue() const
00113       throw (Common::Error::ECapeUnknown) = 0;
00114     
00118     virtual const Common::Types::CapeArrayString& OptionList() const
00119       throw (Common::Error::ECapeUnknown) = 0;
00120     
00123     virtual Common::Types::CapeBoolean RestrictedToList() const
00124       throw (Common::Error::ECapeUnknown) = 0;
00125     
00133     virtual Common::Types::CapeBoolean Validate(Common::Types::CapeString value, Common::Types::CapeString& message)
00134       throw (Common::Error::ECapeUnknown,
00135              Common::Error::ECapeInvalidArgument,
00136              Common::Error::ECapeNoImpl) = 0;
00137   };
00138 };
00139 
00140 #endif // IDIANA_PARAMETER_HPP
00141