/*********************************************************************************
 **
 ** Very simple factory for generating decition tools.  Just chooses between them
 ** with the dtGen function.
 **
 *********************************************************************************/
#include "DecisionTool.hh"

// Any new decision tools should be added here.
#include "dtClusterHMM.hh"
#include "dtFrontMomentum.hh"
#include "dtSimpleThreshold.hh"
#include "dtGPThreshold.hh"
#include "dtGPOnline.hh"
#include "ssdbg.hh"

DecisionTool::~DecisionTool(){
  // Gotta have this, even empty.
  ssdbg(DBG_CLEAN)("destroying DecisionTool instance");
}

static DecisionTool *DecisionTool::genDT(DecisionTool::model_type genModel,char *instname){  
  switch(genModel){
  case DecisionTool::dt_model_simplethreshold:
    return new dtSimpleThreshold(instname);
  case DecisionTool::dt_model_clusterhmm:
    return new dtClusterHMM(instname);
  case DecisionTool::dt_model_frontmomentum:
    return new dtFrontMomentum(instname);
  case DecisionTool::dt_model_gpthreshold:
    return new dtGPThreshold(instname);
  case DecisionTool::dt_model_gponline:
    return new dtGPOnline(instname);
  default:
    return NULL;
  }
}
