90 std::list<AbstractPoint *>
l;
l.push_back(
this);
151 std::list<AbstractPoint *>
l;
l.push_back(
this);
152 for(std::list<AbstractPoint *>::const_iterator it=lp.begin();it!=lp.end();it++)
158 Node *curFirst((*it)->getFirstNode()),*curEnd((*it)->getLastNode());
163 if(bb2==bb3 && ee2==ee3)
180 std::list<AbstractPoint *>
l;
l.push_back(
this);
181 for(std::list<AbstractPoint *>::const_iterator it=lp.begin();it!=lp.end();it++)
187 Node *curFirst((*it)->getFirstNode()),*curEnd((*it)->getLastNode());
209 std::list<AbstractPoint *>
l;
l.push_back(
this);
210 for(std::list<AbstractPoint *>::const_iterator it=lp.begin();it!=lp.end();it++)
216 Node *curFirst((*it)->getFirstNode()),*curEnd((*it)->getLastNode());
238 std::list<AbstractPoint *>
l;
l.push_back(
this);
239 for(std::list<AbstractPoint *>::const_iterator it=lp.begin();it!=lp.end();it++)
245 Node *curFirst((*it)->getFirstNode()),*curEnd((*it)->getLastNode());
274 auto it(_m->find(nodeName));
277 (*_m)[nodeName] = std::tuple< ElementaryPoint *, Node *, std::shared_ptr<Bloc> >(pt,pt->
getNode(),std::make_shared<Bloc>(nodeName));
284 std::map< std::string, std::tuple< ElementaryPoint *, Node *, std::shared_ptr<Bloc> > > *
_m;
293 ptToBeRewired->
accept(&vis);
301 for(
auto it : ptsToBeRewired)
307 for(
auto it : ptsToKill)
308 if(it->contains(node))
327 Node *node(std::get<1>(it.second));
328 auto newNode(std::get<2>(it.second).get());
334 Node *node(std::get<1>(it.second));
335 auto newNode(std::get<2>(it.second).get());
340 Node *nodeFwd(it2->getNode());
341 std::string nodeFwdName(nodeFwd->
getName());
342 auto it3(
m->find(nodeFwdName));
345 Node *nodeFwdNew = std::get<2>(it3->second).get();
370 Node *node(std::get<1>(it.second));
381 for(
auto it2 : newNode->getOutGate()->edSetInGate())
383 std::cerr << pt->
getNodeName() <<
" -> " << it2->getNode()->getName() <<
" " << newNode->typeName() << std::endl;
398 std::list<AbstractPoint *> lp2;
401 if(std::find(ptsToKill.cbegin(),ptsToKill.cend(),it)==ptsToKill.cend())
402 lp2.push_back(it->deepCopy(
nullptr));
408 std::map< std::string, std::tuple< ElementaryPoint *, Node *, std::shared_ptr<Bloc> > >
m;
424 if(std::find(ptsToKill.cbegin(),ptsToKill.cend(),it)==ptsToKill.cend())
428 for(
auto it : ptsToKill)
430 std::list<AbstractPoint *>
l;
l.push_back(it);
433 somethingDone =
true;
501 throw Exception(
"AbstractPoint::GetNodeB4 : precond not OK !");
504 return bl.front()->getNode();
512 throw Exception(
"AbstractPoint::GetNodeAfter : precond not OK !");
515 return (*fl.begin())->getNode();
521 throw YACS::Exception(
"AbstractPoint::GetDirectSonOf : sonOrLittleSon is null !");
523 while(curFath && curFath!=refFather)
529 throw YACS::Exception(
"AbstractPoint::GetDirectSonOf : not in the same family !");
536 throw YACS::Exception(
"AbstractPoint::GetCommonDirectSonOf1 : not enough !");
537 std::list<OutGate *>::const_iterator it(outgs.begin());
540 for(;it!=outgs.end();it++)
542 if(!ref2->
contains((*it)->getNode()))
552 throw YACS::Exception(
"AbstractPoint::GetCommonDirectSonOf2 : not enough !");
553 std::list<InGate *>::const_iterator it(ings.begin());
556 for(;it!=ings.end();it++)
558 if(!ref2->
contains((*it)->getNode()))
bool containsPtsToKill(const std::vector< AbstractPoint * > &ptsToKill, Node *node)
void endForkBlocPoint(ForkBlocPoint *pt)
void beginForkBlocPoint(ForkBlocPoint *pt)
void endElementaryPoint(ElementaryPoint *pt)
void endNotSimpleCasePoint(NotSimpleCasePoint *pt)
Visitor1(std::map< std::string, std::tuple< ElementaryPoint *, Node *, std::shared_ptr< Bloc > > > *m)
std::map< std::string, std::tuple< ElementaryPoint *, Node *, std::shared_ptr< Bloc > > > * _m
void beginNotSimpleCasePoint(NotSimpleCasePoint *pt)
void endLinkedBlocPoint(LinkedBlocPoint *pt)
void beginLinkedBlocPoint(LinkedBlocPoint *pt)
void beginElementaryPoint(ElementaryPoint *pt)
virtual Node * getLastNode()=0
static bool IsSimplyLinkedBeforeExt(Node *node)
static bool IsScatterAfterExt(Node *node)
static void Rewire(const std::vector< AbstractPoint * > &ptsToKill, std::map< std::string, std::tuple< ElementaryPoint *, Node *, std::shared_ptr< Bloc > > > *m)
static void Display(std::map< std::string, std::tuple< ElementaryPoint *, Node *, std::shared_ptr< Bloc > > > *m)
static void UnRewire(std::map< std::string, std::tuple< ElementaryPoint *, Node *, std::shared_ptr< Bloc > > > &m)
bool isSimplyLinkedAfterNullBefore(BlocPoint *sop)
bool isSimplyLinkedAfter(BlocPoint *sop, Node *node)
static bool IsCommonDirectSonOf(AbstractPoint *refFather, const std::list< OutGate * > &outgs, AbstractPoint *&ret)
LinkedBlocPoint * tryAsLink(BlocPoint *sop)
bool isSimplyLinkedBeforeNullAfter(BlocPoint *sop)
static bool IsNoLinksAfter(Node *node)
virtual AbstractPoint * findPointWithNode(Node *node)=0
static void FeedData(AbstractPoint *ptToBeRewired, std::map< std::string, std::tuple< ElementaryPoint *, Node *, std::shared_ptr< Bloc > > > *m)
virtual void accept(PointVisitor *pv)=0
static bool IsSimplyLinkedAfterExt(Node *node)
AbstractPoint * getFather() const
static Node * GetNodeB4(Node *node)
bool isSimplyLinkedBefore(BlocPoint *sop, Node *node)
static bool IsGatherB4Ext(Node *node)
static Node * GetNodeAfter(Node *node)
ForkBlocPoint * tryAsForkTer(BlocPoint *sop)
AbstractPoint * getGodFather()
ForkBlocPoint * tryAsForkBis(BlocPoint *sop)
virtual bool contains(Node *node) const =0
bool isSimplyLinkedBeforeAfter(BlocPoint *sop)
void setFather(AbstractPoint *father)
bool isNullBeforeNullAfter(BlocPoint *sop)
virtual Node * getFirstNode()=0
static void TryAsNotSimpleCase(AbstractPoint *father, const std::vector< AbstractPoint * > &ptsToKill, std::list< AbstractPoint * > &nodes, bool &somethingDone)
static bool IsNoLinksBefore(Node *node)
ForkBlocPoint * tryAsFork(BlocPoint *sop)
ForkBlocPoint * tryAsForkQuatro(BlocPoint *sop)
static AbstractPoint * GetDirectSonOf(AbstractPoint *refFather, AbstractPoint *sonOrLittleSon)
AbstractPoint * getNodeB4(Node *node)
const std::list< AbstractPoint * > & getListOfPoints() const
AbstractPoint * getNodeAfter(Node *node)
AbstractPoint * findPointWithNode(Node *node)
std::string getNodeName() const
std::list< OutGate * > getBackLinks()
Base class for all nodes.
const std::string & getName() const
std::list< InGate * > edSetInGate() const
bool edAddInGate(InGate *inGate)
AbstractPoint * getUniqueAndReleaseIt() const
def ref(target, callback=None)