32 LinkInfo::LinkInfo(
unsigned char level):_levelOfInfo(level),_level(0)
73 _infos[reason].push_back(pair<OutPort *, InPort *>(semStart,end));
79 _collapse[reason].push_back(vector< pair<OutPort *,InPort *> >());
81 if(
_collapse[reason].back()[0].second!=end)
82 _collapse[reason].push_back(vector< pair<OutPort *,InPort *> >());
83 _collapse[reason].back().push_back(pair<OutPort *,InPort *>(semStart,end));
93 _errors[reason].push_back(pair<OutPort *, InPort *>(semStart,end));
126 retS <<
"****** ERRORS ******" << endl;
131 retS <<
"****** WARNINGS ******" << endl;
136 retS <<
"****** INFO ******" << endl;
144 map<InfoReason, vector< pair<OutPort *,InPort *> > >::const_iterator iter;
145 ostringstream stream;
148 for(vector< pair<OutPort *,InPort *> >::const_iterator iter2=(*iter).second.begin();iter2!=(*iter).second.end();iter2++)
154 set< pair<Node *, Node *> >::const_iterator iter3;
157 stream <<
"Useless CF link between \"" <<
_pov->
getChildName((*iter3).first);
158 stream <<
"\" and \"" <<
_pov->
getChildName((*iter3).second) <<
"\"." << endl;
165 map<WarnReason, vector< vector< pair<OutPort *,InPort *> > > >::const_iterator iter;
166 ostringstream stream;
170 stream <<
getStringReprOfW((*iter).first) <<
" for group containing following group links: ";
171 vector< vector< pair<OutPort *,InPort *> > >::const_iterator iter2=(*iter).second.begin();
172 for(;iter2!=(*iter).second.end();iter2++)
174 stream <<
" Group # " <<
i++ <<
" : " << endl;
175 for(vector< pair<OutPort *,InPort *> >::const_iterator iter3=(*iter2).begin();iter3!=(*iter2).end();iter3++)
184 vector<InPort *>::const_iterator iter;
185 ostringstream stream;
190 map<ErrReason, vector< pair<OutPort *,InPort *> > >::const_iterator iter2;
192 for(vector< pair<OutPort *,InPort *> >::const_iterator iter3=(*iter2).second.begin();iter3!=(*iter2).second.end();iter3++)
195 (*iter3)->getHumanReprOfIncompleteCases(stream);
211 map<InfoReason, vector< pair<OutPort *,InPort *> > >::const_iterator iter=
_infos.begin();
213 for(;iter!=
_infos.end();iter++)
214 val+=(*iter).second.size();
221 map<InfoReason, vector< pair<OutPort *,InPort *> > >::const_iterator iter=
_infos.find(reason);
223 return (*iter).second.size();
232 map<WarnReason, vector< vector< pair<OutPort *,InPort *> > > >::const_iterator iter;
236 ret+=(*iter).second.size();
239 map<WarnReason, vector< vector< pair<OutPort *,InPort *> > > >::const_iterator iter2=
_collapse.find(reason);
241 return (*iter2).second.size();
258 map<ErrReason, vector< pair<OutPort *,InPort *> > >::const_iterator iter=
_errors.find(reason);
260 return (*iter).second.size();
274 return pair<OutPort *, InPort *>();
275 map<InfoReason, vector< pair<OutPort *,InPort *> > >::const_iterator iter=
_infos.find(reason);
277 return (*iter).second[
id];
279 return pair<OutPort *, InPort *>(
reinterpret_cast<OutPort *
>(0),
reinterpret_cast<InPort *
>(0) );
284 map<WarnReason, vector< vector< pair<OutPort *,InPort *> > > >::const_iterator iter=
_collapse.find(reason);
286 return (*iter).second[
id];
288 return vector< pair<OutPort *, InPort *> >();
299 map<ErrReason, vector< pair<OutPort *,InPort *> > >::const_iterator iter=
_errors.find(reason);
301 return (*iter).second[
id];
303 return pair<OutPort *, InPort *>(
reinterpret_cast<OutPort *
>(0),
reinterpret_cast<InPort *
>(0) );
319 ret=
"Back and useless";
340 ret=
"Collapse and useless";
343 ret=
"Collapse on ElementaryNode";
346 ret+=
"Collapse on ElementaryNode and useless";
349 ret+=
"Back collapse";
352 ret+=
"Back collapse and useless";
355 ret+=
"Back collapse on ElementaryNode";
358 ret+=
"Back collapse and useless on ElementaryNode";
368 return "Never set InPort ";
370 return "Never set InPort only back defined ";
374 ret=
"DS unestablishable";
377 ret=
"DF/DS collapse";
380 ret=
"Inter DS collapse";
383 ret=
"Unpredictable fed";
398 ret <<
"are " << val;
static const char LINK_REPR[]
static const char GLOBAL_MESSAGE1[]
Base class for all composed nodes.
std::string getChildName(const Node *node) const
std::string getOutPortName(const OutPort *) const
std::string getInPortName(const InPort *) const
Get the input port name.
static const unsigned char WARN_ONLY_DONT_STOP
void pushErrLink(OutPort *semStart, InPort *end, ErrReason reason)
std::vector< InPort * > _onlyBackDefined
std::set< std::pair< Node *, Node * > > _uselessLinks
unsigned getNumberOfErrLinks(ErrReason reason) const
static const unsigned char ALL_STOP_ASAP
void pushInfoLink(OutPort *semStart, InPort *end, InfoReason reason)
std::map< ErrReason, std::vector< std::pair< OutPort *, InPort * > > > _errors
void startCollapseTransac()
void pushUselessCFLink(Node *start, Node *end)
std::set< std::pair< Node *, Node * > > getInfoUselessLinks() const
static std::string printThereIsAre(unsigned val, const std::string &other)
void endCollapseTransac()
static std::string getStringReprOfI(InfoReason reason)
std::string getGlobalRepr() const
std::map< InfoReason, std::vector< std::pair< OutPort *, InPort * > > > _infos
std::map< WarnReason, std::vector< std::vector< std::pair< OutPort *, InPort * > > > > _collapse
unsigned getNumberOfInfoLinks(InfoReason reason) const
void pushWarnLink(OutPort *semStart, InPort *end, WarnReason reason)
void takeDecision() const
void pushErrSwitch(CollectorSwOutPort *collector)
std::vector< InPort * > _unsetInPort
std::string getInfoRepr() const
std::pair< OutPort *, InPort * > getInfoLink(unsigned id, InfoReason reason) const
std::vector< std::pair< OutPort *, InPort * > > getWarnLink(unsigned id, WarnReason reason) const
std::string getWarnRepr() const
std::vector< CollectorSwOutPort * > _errorsOnSwitchCases
bool areWarningsOrErrors() const
unsigned char _levelOfInfo
std::pair< OutPort *, InPort * > getErrLink(unsigned id, ErrReason reason) const
void setPointOfView(ComposedNode *pov)
static std::string getStringReprOfW(WarnReason reason)
unsigned getNumberOfWarnLinksGrp(WarnReason reason) const
std::string getErrRepr() const
static std::string getStringReprOfE(ErrReason reason)
Base class for all nodes.
@ E_ONLY_BACKWARD_DEFINED
@ E_DS_LINK_UNESTABLISHABLE
@ W_COLLAPSE_EL_AND_USELESS
@ W_BACK_COLLAPSE_AND_USELESS
@ W_BACK_COLLAPSE_EL_AND_USELESS