1 #ifndef YDEFX_TMONOPYJOB_HXX
2 #define YDEFX_TMONOPYJOB_HXX
3 #include "JobParametersProxy.hxx"
4 #include "MonoPyJob.hxx"
6 #include "SamplePyConversions.hxx"
7 #include "PyStudyFunction.hxx"
8 #include <py2cpp/py2cpp.hxx>
12 template <class ...Ts>
13 class TMonoPyJob : public MonoPyJob
17 TMonoPyJob(const PyStudyFunction& fnScript,
18 Sample<Ts...>& sample,
19 const JobParametersProxy& params)
23 if(_lastError.empty()) // no errors during parent contruction
27 py2cpp::PyPtr pySample = createPySample(sample);
28 py2cpp::PyFunction pyFn;
29 pyFn.loadExp(_pyStudy, "createNewJob");
30 pyFn(fnScript.content(), pySample, params);
32 catch(std::exception& e)
34 _lastError = "An error occured while creating the job.\n";
35 _lastError += e.what();
40 //! Connect to an existing job.
41 TMonoPyJob(const std::string& jobDump, Sample<Ts...>& sample)
45 if(_lastError.empty()) // no errors during parent contruction
49 py2cpp::PyFunction pyFn;
50 pyFn.loadExp(_pyStudy, "loadFromString");
53 catch(std::exception& e)
55 _lastError = "An error occured while creating the job.\n";
56 _lastError += e.what();
61 virtual ~TMonoPyJob(){}
67 py2cpp::PyFunction pyFn;
68 pyFn.loadExp(_pyStudy, "getResult");
69 fetchResults(_pyStudy.getAttr("sample"), _sample);
71 catch(std::exception& e)
73 _lastError = "An error occured while fetching the results.\n";
74 _lastError += e.what();
76 return _lastError.empty();
79 const Sample<Ts...>& getSample()const{return _sample;}
82 Sample<Ts...>& _sample;
87 #endif //YDEFX_TMONOPYJOB_HXX