#ifndef LABELEDSETCREATORINTERFACE_H
#define LABELEDSETCREATORINTERFACE_H

#include "core/basics/Config.h"
#include "vislearning/cbaselib/ClassNames.h"
#include "vislearning/cbaselib/LabeledSet.h"

namespace OBJREC
{

/**
 * @brief Interface for extraction of information from xml files.
 *
 * This is used to have variable way of creating a LabeledSet from possibly many different xml file formats.
 * Each xml file has its own interface implementation to enable xml specific loadings.
 *
 * @see LabeledSetFactory
 *
 * @author Johannes Ruehle
 * @date 2012/05/18
 */
class LabeledSetCreatorInterface
{
public:
    LabeledSetCreatorInterface(){};

    virtual ~LabeledSetCreatorInterface(){};

    /**
     * @brief Extract label information from a xml file and insert in a LabeledSet data structure.
     * @param p_sXmlFilename xml file name to load
     * @param p_LabelSet LabeledSet to be filled by data extracted from the xml file.
     */
    virtual void createLabeledSet( std::string    p_sXmlFilename,
                                   const NICE::Config & p_conf,
                                   const ClassNames & p_classnames,
                                   LabeledSet &p_LabelSet) = 0;

};

}//Namespace

#endif // LABELEDSETCREATORINTERFACE_H
