00001 #ifndef UNKNOWNPARAMETER_H 00002 #define UNKNOWNPARAMETER_H 00003 00004 #include "SundanceDefs.h" 00005 #include "UnknownFunction.h" 00006 00007 namespace Sundance 00008 { 00009 00010 using namespace TSF; 00011 using std::string; 00012 00013 using std::ostream; 00014 00015 /** 00016 * \ingroup UserLevelSymbolics 00017 * Expression subtype that can represent an unknown design parameter 00018 */ 00019 00020 class UnknownParameter : public UnknownFunction 00021 { 00022 public: 00023 /** \name User-level methods */ 00024 //@{ 00025 /** */ 00026 UnknownParameter(const string& name = ""); 00027 //@} 00028 virtual ~UnknownParameter(){;} 00029 00030 /** \name Developer-only methods */ 00031 //@{ 00032 /** identify self as an unknown parameter */ 00033 virtual bool isUnknownParameter() const {return true;} 00034 00035 /** */ 00036 virtual int sortPriority() const {return UNKNOWNPARAMETER;} 00037 00038 /** */ 00039 virtual ExprBase* clone() const ; 00040 00041 /** */ 00042 virtual void getVariation(Expr& result) const ; 00043 00044 /** */ 00045 virtual void getDifferential(Expr& result) const ; 00046 00047 /** */ 00048 virtual double value() const ; 00049 //@} 00050 00051 protected: 00052 00053 }; 00054 00055 00056 } 00057 #endif