00001 #ifndef DERIVATOR_H 00002 #define DERIVATOR_H 00003 00004 #include "afltypes.h" 00005 00006 namespace afl 00007 { 00008 class Field; 00013 class Derivator 00014 { 00015 00017 public: 00021 virtual ~Derivator( ); 00028 virtual Derivative derivative( const Point& x ) const = 0; 00029 00034 virtual void toXML( std::ostream& doc ) const = 0; 00035 00040 virtual Derivator* clone( ) = 0; 00041 00045 const Point& getDeltas( ) const { return _deltas; } 00046 00050 virtual const std::string& getMethod( ) const = 0; 00051 00056 void setParentField( const Field* parent ); 00057 00058 00060 protected: 00068 Derivator( const Field* field, const Parameters& params ); 00069 00071 protected: 00075 const Field* _field; 00076 00080 Point _deltas; 00081 00085 const ddf::PropertySet* _pset; 00086 }; 00087 00088 }; 00089 00090 #endif // DERIVATOR_H