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
00117 std::vector < int > m_fixed_flags;
00118
00119
00122 void setName ( const char * );
00123
00128 virtual void resize ();
00129
00137 virtual void initialize ();
00138
00139 public:
00140
00141
00143 virtual ~FunctionBase();
00144
00146 const std::string & name () const;
00147
00155 virtual FunctionBase * clone () const;
00156
00158 virtual int size () const;
00159
00161 virtual const std::vector < std::string > & parmNames ( ) const;
00162
00165 void setParmNames ( const std::vector < std::string > & names );
00166
00170 virtual bool isComposite () const;
00171
00175 virtual void addToComposite ( FunctionBase * );
00176
00180 virtual void removeFromComposite ( FunctionBase * );
00181
00185 virtual int count ();
00186
00190 virtual const std::vector< double > & getParameters () const;
00191
00194 virtual const std::vector < int > & getFixedFlags () const;
00195
00198 virtual void setFixedFlags ( const std::vector < int > & flags );
00199
00200
00201 virtual std::vector < int > :: const_iterator
00202 setFixedFlags ( std::vector < int > ::const_iterator it );
00203
00208 virtual void setParameters ( const std::vector< double > & incr );
00209
00213 virtual std::vector< double >::const_iterator
00214 setParameters ( std::vector< double >::const_iterator it );
00215
00227 virtual double derivByParm ( int i, double x ) const;
00228
00233 virtual double operator() ( double x ) const;
00234
00240 virtual double operator () ( const std::vector < double > & v ) const;
00241
00244 virtual void initialParameters ( const FunctionHelper * helper );
00245
00253 virtual bool hasDerivatives () const;
00254
00260 virtual double integrate ( double lower_limit, double upper_limit ) const;
00261
00267 virtual unsigned int dimensions () const;
00268
00269 };
00270
00271 }
00272
00273 #endif // _FunctionBase_H_