Files
VisualSapfor/Planner/CompilationTask.h
2023-09-17 22:13:42 +03:00

47 lines
1.6 KiB
C++

#include "Task.h"
#pragma once
class CompilationTask: public Task {
String test_id;
String makefile_text;
public:
void setTestId(String * test_id_in){
test_id = String(test_id_in->getCharArray());
}
void setMakefileText(String * makefile_text_in){
makefile_text = String(makefile_text_in->getCharArray(), '|');
}
virtual void print(){
printf("id=%ld; maxtime=%d; test_id=%s\n", id, maxtime,
test_id.getCharArray());
printf("makefile_text=%s\n", makefile_text.getCharArray());
}
CompilationTask(Text * lines, int offset):Task(lines,offset) {
setTestId(lines->get(offset+2));
setMakefileText(lines->get(offset+3));
setState(Waiting);
kernels=1;
}
virtual void prepareWorkspace(){
String makeFilePath = String(id)+"/Makefile";
File makeFileFile = File(makeFilePath, this->makefile_text);
String tests = userWorkspace+"/projects";
String testPath= tests+"/"+test_id;
String copyCommand = "cp -r " + String::DQuotes(testPath + "/.") + " "+ String::DQuotes(workspace);
system(copyCommand.getCharArray());
}
virtual String getLaunchScriptText(){
String modules = userWorkspace+"/modules";
String starterCall = modules+"/starter";
String launcherCall = modules+"/launcher";
return String::DQuotes(starterCall)+" "+
String::DQuotes(launcherCall)+" "+
String(maxtime)+" "+
String::DQuotes("")+" "+
"make -j -f Makefile";
}
virtual void analyseResults(){
String binary = workspace+"/0";
state = Utils::Exists(binary)? Done:DoneWithErrors;
}
};