#ifndef Integrator_H
#define Integrator_H

#include "oo/Function.h"

namespace integrators
{

  /**
   * This abstract class declares the Integrator interface.
   */
  class Integrator
  {
  public:
    virtual ~ Integrator ()
    {
    }
      /** 
       * Sets the function, which will be evaluated by the integration algorithm.
       */
    virtual void setFunction (functions::Function *
                              function_to_integrate) = 0;

      /** 
       * Returns integration result.
       */
    virtual double integrate (double lowBound, double upBound, int count) = 0;
  };
}
#endif //  Integrator_H