88 std::ostringstream oss;
89 for(std::list<AbstractPoint *>::const_iterator it=
_nodes.begin();it!=
_nodes.end();it++)
90 oss << (*it)->getRepr() <<
" - ";
99 for(std::list<AbstractPoint *>::const_iterator it0=pts.begin();it0!=pts.end();it0++)
101 std::list<AbstractPoint *>::iterator it1(std::find(
_nodes.begin(),
_nodes.end(),*it0));
103 throw Exception(
"SetOfPoints::replaceInMe : internal error !");
112 for(std::list<AbstractPoint *>::iterator it=
_nodes.begin();it!=
_nodes.end();it++)
114 if(!(*it)->isSimplyLinkedBeforeAfter(
this))
115 if(!(*it)->isSimplyLinkedAfterNullBefore(
this) && !(*it)->isSimplyLinkedBeforeNullAfter(
this))
130 for(std::list<AbstractPoint *>::iterator it=
_nodes.begin();it!=
_nodes.end();it++)
132 if(!(*it)->isSimplyLinkedBeforeAfter(
this))
147 for(std::list<AbstractPoint *>::iterator it=
_nodes.begin();it!=
_nodes.end();it++)
149 if(!(*it)->isSimplyLinkedAfterNullBefore(
this))
164 for(std::list<AbstractPoint *>::iterator it=
_nodes.begin();it!=
_nodes.end();it++)
166 if(!(*it)->isSimplyLinkedBeforeNullAfter(
this))
181 for(std::list<AbstractPoint *>::iterator it=
_nodes.begin();it!=
_nodes.end();it++)
183 if(!(*it)->isNullBeforeNullAfter(
this))
204 std::vector<AbstractPoint *> v{*it};
215 for(;it2!=
_nodes.cend();it2++)
217 std::vector<AbstractPoint *> v{*it,*it2};
229 for(;it2!=
_nodes.cend();it2++)
231 auto it3(it2); it3++;
232 for(;it3!=
_nodes.cend();it3++)
234 std::vector<AbstractPoint *> v{*it,*it2,*it3};
253 throw YACS::Exception(
"BagPoint::expandNonSimpleCaseOn : pathologicalPt is expected to be a NotSimpleCasePoint !");
254 std::list<AbstractPoint *> nodes2;
255 std::for_each(
_nodes.begin(),
_nodes.end(),[&nodes2](
AbstractPoint *elt) { if(!dynamic_cast<NotSimpleCasePoint *>(elt)) nodes2.push_back(elt); });
257 throw YACS::Exception(
"BagPoint::expandNonSimpleCaseOn : Internal error only one AbstractPoint is expected !");
262 Bloc *parentc(
dynamic_cast<Bloc *
>(parent));
264 throw YACS::Exception(
"BagPoint::expandNonSimpleCaseOn : internal error, Bloc expected");
266 std::set<Node *> nodesBefore, nodesAfter;
268 std::map<Node *, std::set<Node *> > accelStr;
273 std::map<Node *, std::set<Node *> > accelStr;
278 std::set<Node *> nodesBeforeAfter(nodesBefore.begin(),nodesBefore.end());
279 nodesBeforeAfter.insert(nodesAfter.begin(),nodesAfter.end());
285 throw YACS::Exception(
"BagPoint::expandNonSimpleCaseOn : unexpected situation !");
287 std::list<AbstractPoint *> nodes3;
288 std::for_each(
_nodes.begin(),
_nodes.end(),[&nodes3,pathologicalPt](
AbstractPoint *elt) { if(elt!=pathologicalPt) nodes3.push_back(elt); else delete elt; });
299 std::vector<AbstractPoint *> pathologicalPt;
300 std::for_each(
_nodes.begin(),
_nodes.end(),[&pathologicalPt](
AbstractPoint *elt) { if(dynamic_cast<NotSimpleCasePoint *>(elt)) pathologicalPt.push_back(elt); });
301 if(pathologicalPt.empty())
302 throw YACS::Exception(
"BagPoint::expandNonSimpleCase : Not found any pathological case !");
303 for(
auto it : pathologicalPt)
virtual Node * getLastNode()=0
virtual void getWeightRegardingDPL(ComplexWeight *weight)=0
virtual AbstractPoint * expandNonSimpleCaseOn(NotSimpleCasePoint *pathologicalPt, const std::set< Node * > &uncatchedNodes)=0
void setFather(AbstractPoint *father)
virtual Node * getFirstNode()=0
static void TryAsNotSimpleCase(AbstractPoint *father, const std::vector< AbstractPoint * > &ptsToKill, std::list< AbstractPoint * > &nodes, bool &somethingDone)
virtual int getMaxLevelOfParallelism() const =0
virtual void partitionRegardingDPL(const PartDefinition *pd, std::map< ComposedNode *, YACS::BASES::AutoRefCnt< PartDefinition > > &zeMap) const =0
void deal2Quatro(bool &somethingDone)
Node * getFirstNode() override
void deal2Bis(bool &somethingDone)
void replaceInMe(BlocPoint *aSet)
AbstractPoint * expandNonSimpleCaseOn(NotSimpleCasePoint *pathologicalPt, const std::set< Node * > &uncatchedNodes) override
void accept(PointVisitor *pv) override
void expandNonSimpleCase()
void partitionRegardingDPL(const PartDefinition *pd, std::map< ComposedNode *, YACS::BASES::AutoRefCnt< PartDefinition > > &zeMap) const
void deal1(bool &somethingDone)
int getMaxLevelOfParallelism() const
Node * getLastNode() override
void dealNotSimpleCase(bool &somethingDone)
std::string getRepr() const
void deal2(bool &somethingDone)
void getWeightRegardingDPL(ComplexWeight *weight)
AbstractPoint * deepCopy(AbstractPoint *father) const override
void deal2Ter(bool &somethingDone)
const std::list< AbstractPoint * > & getListOfPoints() const
void deepCopyFrom(const BlocPoint &other)
AbstractPoint * getUnique()
std::list< AbstractPoint * > _nodes
Composed node to group elementary and composed nodes.
void findAllNodesStartingFrom(Node *start, std::set< Node * > &result, std::map< Node *, std::set< Node * > > &accelStr, LinkInfo &info) const
Base class for all composed nodes.
Class that deal with list of semantics links for high level analysis.
Base class for all nodes.