-// Copyright (C) 2012-2015 CEA/DEN, EDF R&D
+// Copyright (C) 2012-2021 CEA/DEN, EDF R&D
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
+//
// Author : Anthony Geay (EDF R&D)
#include "YACSEvalYFX.hxx"
#include <Python.h>
-class MyAutoThreadSaver
-{
-public:
- MyAutoThreadSaver():_save(PyEval_SaveThread()) { }
- ~MyAutoThreadSaver() { PyEval_RestoreThread(_save); }
-private:
- PyThreadState *_save;
-};
-
YACSEvalYFX *YACSEvalYFX::BuildFromFile(const std::string& xmlOfScheme)
{
YACS::ENGINE::RuntimeSALOME::setRuntime();
{
checkPortsForEvaluation(inputsOfInterest,outputsOfInterest);
_pattern->setOutPortsOfInterestForEvaluation(outputsOfInterest);
- _pattern->generateGraph();
}
void YACSEvalYFX::unlockAll()
return _pattern->isLocked();
}
+/*!
+ * Caller is not responsible from returned pointer
+ */
YACSEvalListOfResources *YACSEvalYFX::giveResources()
{
return _pattern->giveResources();
bool YACSEvalYFX::run(YACSEvalSession *session, int& nbOfBranches)
{
- _pattern->assignRandomVarsInputs();
- YACSEvalListOfResources *rss(giveResources());
- if(!rss->isInteractive())
- throw YACS::Exception("YACSEvalYFX::run : not implemented yet for non interactive !");
- YACSEvalSession *mySession(session);
- YACS::AutoCppPtr<YACSEvalSession> loc;
+ _pattern->generateGraph();
if(!session)
{
throw YACS::Exception("YACSEvalYFX::run : input session in null !");
- /*loc=new YACSEvalSession;
- mySession=loc;*/
}
+ session->launch();
+ YACSEvalListOfResources *rss(giveResources());
+ rss->checkOKForRun();
+ _pattern->assignRandomVarsInputs();
rss->apply();
nbOfBranches=_pattern->assignNbOfBranches();
- mySession->launch();
- YACS::ENGINE::Executor exe;
- exe.setKeepGoingProperty(!_params.getStopASAPAfterErrorStatus());
- //
- _pattern->emitStart();
- {
- MyAutoThreadSaver locker;
- exe.RunW(getUndergroundGeneratedGraph());
- }
- return getUndergroundGeneratedGraph()->getState()==YACS::DONE;
+ return _pattern->go(_params,session);
}
void YACSEvalYFX::registerObserver(YACSEvalObserver *observer)
return _pattern->getObserver();
}
+std::string YACSEvalYFX::getErrorDetailsInCaseOfFailure() const
+{
+ return _pattern->getErrorDetailsInCaseOfFailure();
+}
+
std::string YACSEvalYFX::getStatusOfRunStr() const
{
return _pattern->getStatusOfRunStr();