X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2Fevalyfx%2FYACSEvalYFXPattern.hxx;h=01c836539c460c10ba7310d9daa31efc82d42ba0;hb=1c08ba9d8254258e0bed89a2cb2d9cf3cb4a434c;hp=39a56ff45c51df8cac7d6975e91843e9b56612b2;hpb=8e199c2a3c3bff4d3afa4997b08c82c9e31e5e1d;p=modules%2Fyacs.git diff --git a/src/evalyfx/YACSEvalYFXPattern.hxx b/src/evalyfx/YACSEvalYFXPattern.hxx index 39a56ff45..01c836539 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-2022 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 @@ -37,6 +37,7 @@ namespace YACS class TypeCode; class ForEachLoop; class ComposedNode; + class InlineNode; class InputPyPort; class SequenceAny; } @@ -155,6 +156,14 @@ 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; } @@ -169,6 +178,8 @@ public: 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: @@ -178,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 @@ -193,7 +205,7 @@ public: class YACSEvalYFXGraphGenCluster : public YACSEvalYFXGraphGen { public: - YACSEvalYFXGraphGenCluster(YACSEvalYFXRunOnlyPattern *boss):YACSEvalYFXGraphGen(boss) { } + YACSEvalYFXGraphGenCluster(YACSEvalYFXRunOnlyPattern *boss):YACSEvalYFXGraphGen(boss),_jobid(0) { } void generateGraph(); bool go(const YACSEvalExecParams& params, YACSEvalSession *session) const; std::vector getResults() const;