Something went wrong on our end
Select Git revision
Classifier.cpp
-
Franck Dary authoredFranck Dary authored
Classifier.cpp 7.01 KiB
#include "Classifier.hpp"
#include "File.hpp"
#include "util.hpp"
Classifier::Classifier(const std::string & filename, bool trainMode)
{
this->trainMode = trainMode;
auto badFormatAndAbort = [&filename](const char * errInfo)
{
fprintf(stderr, "ERROR (%s) : file %s bad format. Aborting.\n", errInfo, filename.c_str());
exit(1);
};
File file(ProgramParameters::expPath + filename, "r");
FILE * fd = file.getDescriptor();
char buffer[1024];
if(fscanf(fd, "Name : %s\n", buffer) != 1)
badFormatAndAbort(ERRINFO);
name = buffer;
if(fscanf(fd, "Type : %s\n", buffer) != 1)
badFormatAndAbort(ERRINFO);
type = str2type(buffer);
if(fscanf(fd, "Oracle : %s\n", buffer) != 1)
badFormatAndAbort(ERRINFO);
if(type != Type::Prediction)
{
char buffer2[1024];
if(type == Type::Information)
{
if(fscanf(fd, "Oracle Filename : %s\n", buffer2) != 1)
badFormatAndAbort(ERRINFO);
oracle = Oracle::getOracle(buffer, ProgramParameters::expPath + std::string("/") + buffer2);
}
else
oracle = Oracle::getOracle(buffer);
as.reset(new ActionSet(this->name + "_ActionSet", true));
return;
}
oracle = Oracle::getOracle(buffer);
if(fscanf(fd, "Feature Model : %s\n", buffer) != 1)
badFormatAndAbort(ERRINFO);
std::string fmFilename = ProgramParameters::expPath + buffer;
if (ProgramParameters::featureModelByClassifier.count(this->name))
fmFilename = ProgramParameters::featureModelByClassifier[this->name];
fm.reset(new FeatureModel(fmFilename));
if(fscanf(fd, "Action Set : %s\n", buffer) != 1)
badFormatAndAbort(ERRINFO);
as.reset(new ActionSet(ProgramParameters::expPath + buffer, false));
if(fscanf(fd, "Topology : %s\n", buffer) != 1)