Skip to content
Snippets Groups Projects
Select Git revision
  • 1d29dbf6af0ca78c0f186868ead8a0f124e002b6
  • master default protected
  • fullUD
  • movementInAction
4 results

Classifier.cpp

Blame
  • 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)