# include "../DataTransformer.hh"

class Averager :public UpdateFunctor<1> {
public:
  Averager(std::pair<Symbol, ArgList const *> const &args)
    :UpdateFunctor<1>(args), m_counter(0), m_result(0.0) {}
  virtual ~Averager() {}

private:
  double compute(dbEntry **args) {
    double val = args[0]->getValue();
    unsigned long prev = m_counter;

    m_counter += 1;
    if( prev<=m_counter ) {
      double ratio = m_counter, oitar;

      ratio = 1.0/ratio;
      oitar = 1.0-ratio;
      
      m_result = oitar*m_result+ratio*val;
    }
    return m_result;
  }

  unsigned long m_counter;
  double m_result;
}; // Normalizer

DevOpDeclare<Averager> averager_declare("avg");
