-// Copyright (C) 2012-2016 CEA/DEN, EDF R&D
+// Copyright (C) 2012-2023 CEA, EDF
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
class TypeCode;
class ForEachLoop;
class ComposedNode;
+ class InlineNode;
class InputPyPort;
class SequenceAny;
}
class YACSEvalYFX;
class YACSEvalSession;
class YACSEvalObserver;
+class YACSEvalExecParams;
class YACSEvalListOfResources;
class ResourcesManager_cpp;
class YACSEvalYFXRunOnlyPatternInternalObserver;
virtual std::string getStatusOfRunStr() const = 0;
virtual std::vector<YACSEvalSeqAny *> getResults() const = 0;
virtual std::vector<YACSEvalSeqAny *> getResultsInCaseOfFailure(std::vector<unsigned int>& passedIds) const = 0;
- virtual bool go(bool stopASAP, YACSEvalSession *session) const = 0;
+ virtual bool go(const YACSEvalExecParams& params, YACSEvalSession *session) const = 0;
public://for _gen
const std::vector< YACSEvalInputPort >& getInputs() const { return _inputs; }
static YACS::ENGINE::TypeCode *CreateSeqTypeCodeFrom(YACS::ENGINE::Proc *scheme, const std::string& zeType);
std::string getStatusOfRunStr() const;
std::vector<YACSEvalSeqAny *> getResults() const;
std::vector<YACSEvalSeqAny *> getResultsInCaseOfFailure(std::vector<unsigned int>& passedIds) const;
- bool go(bool stopASAP, YACSEvalSession *session) const;
+ bool go(const YACSEvalExecParams& params, YACSEvalSession *session) const;
//
YACS::ENGINE::ForEachLoop *getUndergroundForEach() const;
static bool IsMatching(YACS::ENGINE::Proc *scheme, YACS::ENGINE::ComposedNode *& runNode);
class YACSEvalYFXGraphGen
{
+public:
+ class CustomPatcher
+ {
+ public:
+ virtual ~CustomPatcher() { }
+ virtual void addOutputVar(const std::string& name) = 0;
+ virtual void assignOutput(YACS::ENGINE::InlineNode *node) = 0;
+ };
protected:
YACSEvalYFXGraphGen(YACSEvalYFXRunOnlyPattern *boss);
YACSEvalYFXRunOnlyPattern *getBoss() const { return _boss; }
public:
virtual ~YACSEvalYFXGraphGen();
virtual void generateGraph() = 0;
- virtual bool go(bool stopASAP, YACSEvalSession *session) const = 0;
+ virtual bool go(const YACSEvalExecParams& params, YACSEvalSession *session) const = 0;
virtual std::vector<YACSEvalSeqAny *> getResults() const = 0;
+ virtual std::string getErrors()const = 0;
bool isLocked() const;
int assignNbOfBranches();
void resetGeneratedGraph();
YACS::ENGINE::Proc *getUndergroundGeneratedGraph() const { return _generatedGraph; }
YACS::ENGINE::ForEachLoop *getUndergroundForEach() const { return _FEInGeneratedGraph; }
+protected:
+ void generateGraphCommon(CustomPatcher& patcher);
private:
YACSEvalYFXRunOnlyPattern *_boss;
protected:
static const char DFT_PROC_NAME[];
static const char FIRST_FE_SUBNODE_NAME[];
static const char GATHER_NODE_NAME[];
+ static const char HIDDEN_INDEX_VAR[];
};
class YACSEvalYFXGraphGenInteractive : public YACSEvalYFXGraphGen
public:
YACSEvalYFXGraphGenInteractive(YACSEvalYFXRunOnlyPattern *boss):YACSEvalYFXGraphGen(boss) { }
void generateGraph();
- bool go(bool stopASAP, YACSEvalSession *session) const;
+ bool go(const YACSEvalExecParams& params, YACSEvalSession *session) const;
std::vector<YACSEvalSeqAny *> getResults() const;
+ virtual std::string getErrors()const;
};
class YACSEvalYFXGraphGenCluster : public YACSEvalYFXGraphGen
{
public:
- YACSEvalYFXGraphGenCluster(YACSEvalYFXRunOnlyPattern *boss):YACSEvalYFXGraphGen(boss) { }
+ YACSEvalYFXGraphGenCluster(YACSEvalYFXRunOnlyPattern *boss):YACSEvalYFXGraphGen(boss),_jobid(0) { }
void generateGraph();
- bool go(bool stopASAP, YACSEvalSession *session) const;
+ bool go(const YACSEvalExecParams& params, YACSEvalSession *session) const;
std::vector<YACSEvalSeqAny *> getResults() const;
+ virtual std::string getErrors()const;
private:
std::string _locSchemaFile;
std::string _jobName;