X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2Fevalyfx%2FYACSEvalYFXPattern.hxx;h=8dd2d301096bbd9a8bdb66a16a3817707f45edad;hb=255150e4eec79294bbd06c7c464f309b4a264960;hp=9a1113a9af74fd4ebebb5925aa9ea717623ac791;hpb=3ba5c7fe19bf5fdcb2c683f4e59b2aba27415c71;p=modules%2Fyacs.git diff --git a/src/evalyfx/YACSEvalYFXPattern.hxx b/src/evalyfx/YACSEvalYFXPattern.hxx index 9a1113a9a..8dd2d3010 100644 --- a/src/evalyfx/YACSEvalYFXPattern.hxx +++ b/src/evalyfx/YACSEvalYFXPattern.hxx @@ -1,4 +1,4 @@ -// 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 @@ -37,6 +37,7 @@ namespace YACS class TypeCode; class ForEachLoop; class ComposedNode; + class InlineNode; class InputPyPort; class SequenceAny; } @@ -45,6 +46,7 @@ namespace YACS class YACSEvalYFX; class YACSEvalSession; class YACSEvalObserver; +class YACSEvalExecParams; class YACSEvalListOfResources; class ResourcesManager_cpp; class YACSEvalYFXRunOnlyPatternInternalObserver; @@ -81,7 +83,7 @@ public: virtual std::string getStatusOfRunStr() const = 0; virtual std::vector getResults() const = 0; virtual std::vector getResultsInCaseOfFailure(std::vector& 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); @@ -132,7 +134,7 @@ public: std::string getStatusOfRunStr() const; std::vector getResults() const; std::vector getResultsInCaseOfFailure(std::vector& 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); @@ -154,19 +156,30 @@ private: 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 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: @@ -176,6 +189,7 @@ public: 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 @@ -183,17 +197,19 @@ 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 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 getResults() const; + virtual std::string getErrors()const; private: std::string _locSchemaFile; std::string _jobName;