/**
* @file VCAmitSVM.h
* @brief interface to the svm generalization of Amit et al. 2007
* @author Erik Rodner
* @date 11/28/2007

*/
#ifndef VCAMITSVMINCLUDE
#define VCAMITSVMINCLUDE

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

#include "VCLearnFromSC.h"


namespace OBJREC
{

/** interface to the svm generalization of Amit et al. 2007 */
class VCAmitSVM : public VCLearnFromSC
{

  protected:
    double C;
    double gamma;

    std::string amitDir;

    std::string matlabExec;

    std::string matlabArgs;

  public:

    NICE::Matrix W;

    /** simple constructor */
    VCAmitSVM ( const NICE::Config *conf );

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

    /** classify using simple vector */

    virtual ClassificationResult classify ( const NICE::Vector & x ) const;

    virtual void preTeach ( const LabeledSetVector & teachSet );

    virtual void teach ( const LabeledSetVector & teachSet );

    virtual void finishTeaching() {};

    void restore ( std::istream & is, int format = 0 );

    void store ( std::ostream & is, int format = 0 ) const;

    void clear ();

};


} // namespace

#endif
