#ifndef MidpointIntegrator_H
#define MidpointIntegrator_H

#include "Integrator.h"

class
  functions::Function;

namespace integrators
{
  namespace oo
  {

    /**
     * A class that implements the Ingrator interface
     * using the midpoint integration technique.
     */
    class MidpointIntegrator:
      public virtual Integrator
    {
    public:

      MidpointIntegrator ();

      virtual void
      setFunction (functions::Function * function_to_integrate);
      virtual double
      integrate (double lowBound, double upBound, int count);

    private:

      functions::Function *function_m;
    };
  }
}
#endif                          // MidpointIntegrator_H