// Dataset.h - Obsahuje deklarace funkcí sloužících pro přidání a odebírání vzorů z trénovací/testovací množiny
// Autor:   Jan Benda
// Datum:   16.02.2021

#ifndef DATASET_H
#define DATASET_H

#define DATASET_API __declspec(dllexport)

#include "Description.h"

namespace Dataset
    {
    struct TrainingSample
        {
        std::vector<float> iFeatureValues;
        std::vector<std::string> iFeatureNames;
        std::string iLabel;
        std::string iSampleName;
        };

    struct Predictions
        {
        std::string bayesLabel;
        std::string knearestLabel;
        std::string svmLabel;
        std::string rtreesLabel;
        std::vector<std::string> annLabels;
        std::vector<float> annWeights;
        };

    struct TestingSample
        {
        std::vector<float> iFeatureValues;
        std::vector<std::string> iFeatureNames;
        Predictions iPredictions;
        std::string iSamplePath;
        std::string iSegmentedPath;
        };

    struct Dataset
        {
        std::vector<TrainingSample> iTraining9, iTraining10, iTraining11, iTraining12;
        std::vector<TestingSample> iTesting;
        };

    extern "C++" DATASET_API bool addTrainingSample(const std::string iLabel, const std::string iFilepath, std::vector<TrainingSample>&iTraining);
    extern "C++" DATASET_API void deleteTrainingSample(const std::string iFilename, std::vector<TrainingSample>&iTraining);
    extern "C++" DATASET_API bool addTestingSample(const std::string iFilepath, std::vector<TestingSample>&iTesting, short& iID);
    extern "C++" DATASET_API void deleteTestingSample(const std::string iFilepath, std::vector<TestingSample>&iTesting);
    }


#endif /*DATASET_H*/