/**
* @file FPCDecisionTree.h
* @brief simple decision tree classifier
* @author Erik Rodner
* @date 04/21/2008

*/
#ifndef FPCDECISIONTREEINCLUDE
#define FPCDECISIONTREEINCLUDE

#include "core/vector/VectorT.h"
#include "core/vector/MatrixT.h"

#include "core/basics/Config.h"

#include "vislearning/classifier/classifierbase/FeaturePoolClassifier.h"
#include "vislearning/cbaselib/CachedExample.h"

#include "DecisionTreeBuilder.h"
#include "DecisionTree.h"

#undef ROADWORKS
#define ROADWORKS fthrow( NICE::Exception, "Persistent interface not yet implemented.");


namespace OBJREC
{

/** simple decision tree classifier */
class FPCDecisionTree : public FeaturePoolClassifier
{

  protected:
    const NICE::Config *conf;
    DecisionTree *dt;
    DecisionTreeBuilder *builder;

  public:

    /** simple constructor */
    FPCDecisionTree ( const NICE::Config *conf, std::string section );

    /** simple destructor */
    virtual ~FPCDecisionTree();

    virtual ClassificationResult classify ( Example & pce );

    virtual void train ( FeaturePool & fp, Examples & examples );

    DecisionTree & getTree ()
    {
      return *dt;
    };

    void restore ( std::istream & is, int format = 0 )
    {
      ROADWORKS
    };
    void store ( std::ostream & os, int format = 0 ) const
    {
      ROADWORKS
    };
    void clear ()
    {
      ROADWORKS
    };
    FeaturePoolClassifier *clone () const
    {
      ROADWORKS
    };



};


} // namespace

#undef ROADWORKS

#endif