/** 
* @file VectorFeature.h
* @brief feature class to use in Examples stored features
* @author Erik Rodner
* @date 05/07/2008

*/
#ifndef VectorFeatureINCLUDE
#define VectorFeatureINCLUDE

#include "core/basics/Config.h"
#include "vislearning/cbaselib/Feature.h"


namespace OBJREC {

/** feature class to use in Examples stored features */
class VectorFeature : public Feature
{

    protected:
	int dimension;
	

    public:
	int feature_index;
  
	/** internally used by VectorFeature::explode */
	VectorFeature ( int _dimension, int _feature_index = 0 ) { dimension = _dimension; feature_index = _feature_index; };
      
	/** simple destructor */
	virtual ~VectorFeature();
     
	double val( const Example *example ) const;
	void explode ( FeaturePool & featurePool, bool variableWindow = true ) const;
	Feature *clone() const;
	Feature *generateFirstParameter () const;

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

	void getStump ( int & feature_index, int & dimension ) const;

};


} // namespace

#endif
