#include "Syslog.h"

#include "FakeClassifier.hh"

DeclareClassifier<FakeClassifier> fake_declare("fake");

FakeClassifier::FakeClassifier(ArgList const &args)
  :AbstractClassifier(args), m_curSeq(0), m_seq(1), m_freqCount(0)  {
  Argument const &freq = args.get("freq");
  m_frequency = strtod(freq->c_str(), (char **)NULL);

  Syslog::write("cluster[%s]: FakeClassifier(freq = %d)",
		getId().c_str(), m_frequency);
}

bool FakeClassifier::classify(AbstractClassifier::cluster_type &winner,
			      AbstractClassifier::dist_type &distance) {

  distance = 0.5;

  if( m_curSeq<m_seq ) {
    winner = 1;
    distance *= m_seq-m_curSeq;
    distance /= m_seq;
    ++m_curSeq;
  } else {
    ++m_freqCount;
    if( m_freqCount>m_frequency ) {
      m_freqCount = 0;
      m_curSeq = 0;
      ++m_seq;
    }
    winner = 0;
  }
  return true;
}
