Go to the documentation of this file.00001
00002
00014 #ifndef _FunctionBase_H_
00015 #define _FunctionBase_H_
00016
00017 #include "pattern/libhippo.h"
00018
00019 #include <string>
00020 #include <vector>
00021
00022 namespace hippodraw {
00023
00024 class FunctionHelper;
00025
00090 class MDL_HIPPOPLOT_API FunctionBase
00091 {
00092
00093 protected:
00094
00096 FunctionBase ();
00097
00100 FunctionBase ( const FunctionBase & );
00101
00103 std::string m_name;
00104
00106 std::vector<std::string> m_parm_names;
00107
00109 std::vector < double > m_parms;
00110
00111
00114 void setName ( const char * );
00115
00120 virtual void resize ();
00121
00129 virtual void initialize ();
00130
00131 public:
00132
00133
00135 virtual ~FunctionBase();
00136
00138 const std::string & name () const;
00139
00147 virtual FunctionBase * clone () const;
00148
00150 virtual int size () const;
00151
00153 virtual const std::vector < std::string > & parmNames ( ) const;
00154
00157 void setParmNames ( const std::vector < std::string > & names );
00158
00162 virtual bool isComposite () const;
00163
00167 virtual void addToComposite ( FunctionBase * );
00168
00172 virtual void removeFromComposite ( FunctionBase * );
00173
00177 virtual int count ();
00178
00182 virtual const std::vector< double > & getParameters () const;
00183
00188 virtual void setParameters ( const std::vector< double > & incr );
00189
00193 virtual std::vector< double >::const_iterator
00194 setParameters ( std::vector< double >::const_iterator it );
00195
00207 virtual double derivByParm ( int i, double x ) const;
00208
00213 virtual double operator() ( double x ) const;
00214
00220 virtual double operator () ( const std::vector < double > & v ) const;
00221
00224 virtual void initialParameters ( const FunctionHelper * helper );
00225
00233 virtual bool hasDerivatives () const;
00234
00240 virtual double integrate ( double lower_limit, double upper_limit ) const;
00241
00247 virtual unsigned int dimensions () const;
00248
00249 };
00250
00251 }
00252
00253 #endif // _FunctionBase_H_