00001 00012 #ifndef _SimpleUnivariateAdapter_h 00013 #define _SimpleUnivariateAdapter_h 00014 00015 00016 // SYSTEM INCLUDES 00017 // 00018 00019 // PROJECT INCLUDES 00020 // 00021 00022 // LOCAL INCLUDES 00023 // 00024 #include "CountedPtr.h" 00025 #include "UnivariateFunction.h" 00026 00027 // FORWARD REFERENCES 00028 // 00029 00030 00031 class SimpleUnivariateAdapter 00032 : public UnivariateFunction 00033 { 00034 public: 00035 // LIFECYCLE 00036 00042 // SimpleUnivariateAdapter(CountedPtr<const FunctionBase> function); 00043 SimpleUnivariateAdapter(auto_ptr<FunctionBase> function); 00044 00047 virtual ~SimpleUnivariateAdapter(void); 00048 00049 00050 // OPERATORS 00051 00052 // OPERATIONS 00053 00054 virtual std::auto_ptr<FunctionBase> Clone() const; 00055 00056 // ACCESS 00057 00060 const FunctionBase& InnerFunction() const; 00061 00066 FunctionBase& rInnerFunction(); 00067 00070 unsigned EvaluationCount() const; 00071 00074 virtual wxString ToString(bool full = true) const; 00075 00078 virtual VariableNames PresentVariables() const; 00079 00080 // INQUIRY 00081 00082 // /** Sprawdza, czy funkcja jest różniczkowalna. 00083 // */ 00084 // virtual bool IsDifferentiable() const; 00085 00088 virtual bool ContainsUnknown(const VariableNames& variables) const; 00089 00090 protected: 00091 SimpleUnivariateAdapter(const SimpleUnivariateAdapter& from); 00092 00095 virtual double DoEvaluateNoThrow(const ColumnVector& point) const 00096 throw(); 00097 00098 virtual double DoEvaluate(const ColumnVector& point) const 00099 throw(EvaluationError); 00100 00101 // CountedPtr<const FunctionBase> mcpFunction; ///< Funkcja podstawowa 00102 std::auto_ptr<FunctionBase> mapFunction; 00103 00104 00105 private: 00106 }; 00107 00108 // INLINE METHODS 00109 // 00110 00111 // EXTERNAL REFERENCES 00112 // 00113 00114 #endif // _SimpleUnivariateAdapter_h