+ YACSEvalYFXGraphGen *_gen;
+ YACSEvalYFXRunOnlyPatternInternalObserver *_obs;
+};
+
+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(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: