22 #ifndef UTAP_SIGNALFLOW_HH    23 #define UTAP_SIGNALFLOW_HH    61                 return (strcmp(s1,s2)<0);
    64         typedef std::set<const char*, const less_str> 
strs_t;
    66         typedef std::map<const proc_t*, strs_t> 
proc2strs_t;
    74             proc_t(
const char* _name): name(_name) {}
    78         typedef std::map<const symbol_t, expression_t> 
exprref_t;
    91         std::stack<std::pair<bool, bool> > 
ioStack;
    96         void addChan(
const std::string &, strs_t &, str2procs_t&);
   101             ioStack.push(std::make_pair(inp, out));
   104             inp = ioStack.top().first;
   105             out = ioStack.top().second;
   146         virtual void printForDot(std::ostream &os, 
bool ranked, 
bool erd,
   175     struct print: 
public std::unary_function<T, void>
   181             os(out), infix(sep), need(false) {}
   184                 if (need) os << infix;
   185                 os << x; need = 
true;
   197         SignalFlow::procs_t::const_iterator p=ps.begin(), e=ps.end();
   198         if (p!=e) { os << (*p)->name; ++p; }
   199         while (p!=e) { os << 
", " << (*p)->name; ++p; }
   250         int partition(
const strs_t& inputs, 
const strs_t& outputs);
   251         int partition(std::istream& ioinfo);
   252         void printForDot(std::ostream &os, 
bool ranked, 
bool erd, 
bool cEdged) 
override;
   253         void printViolation(
const proc_t* process, 
const char* variable);
   255         void fillWithIUTProcs(
strs_t& procs);
   270         bool distancesUpToDate;
   277             dist_t(
int h, 
int c, 
int d): hops(h), complexity(c), distance(d) {}
   278             dist_t(): hops(0), complexity(1), distance(0) {}
   281         typedef std::map<const char*, dist_t, less_str> str2dist_t;
   283         str2dist_t distances;
   285         void updateDistancesFromVariable(
const char* name,
   286                                          const dist_t* distance);
   287         void updateDistancesFromProcess(
const char* name,
   288                                         const dist_t* distance);
   289         int calcComplexity(
const char* process);
   296         void printVarsForDot(std::ostream &os, 
bool ranked, 
bool erd) 
override;
   300             SignalFlow(_title, ta), distancesUpToDate(false), taSystem(ta) {}
   303         void addVariableNeedle(
const char* var);
   305         void addProcessNeedle(
const char* proc);
   307         void updateDistances();
   309         uint32_t getDistance(
const char* element);
   312         void printForDot(std::ostream &os, 
bool ranked, 
bool erd,
   313                          bool cEdged) 
override;
 print(std::ostream &out, const char *sep)
 
virtual void printChansOnEdgesForDot(std::ostream &os)
 
Class SignalFlow is for analysing UPPAAL specifications and extracting the timed automata input/outpu...
 
Partial instance of a template. 
 
int32_t visitWhileStatement(WhileStatement *stat) override
 
int32_t visitBreakStatement(BreakStatement *stat) override
 
void visitExpression(const expression_t &)
 
DistanceCalculator is used in TargetFirst heuristic search order of Uppaal. 
 
int32_t visitCaseStatement(CaseStatement *stat) override
 
virtual void printVarsReadForDot(std::ostream &os)
 
virtual void printForDot(std::ostream &os, bool ranked, bool erd, bool cEdged)
Print I/O information in DOT format into given output stream. 
 
virtual ~SignalFlow()
All strings are from TASystem (don't dispose TASystem before SignalFlow). 
 
int32_t visitIfStatement(IfStatement *stat) override
 
void visitProcess(instance_t &)
 
int32_t visitContinueStatement(ContinueStatement *stat) override
 
Statement class for the iterator loop-construction. 
 
void addChan(const std::string &, strs_t &, str2procs_t &)
 
int32_t visitDefaultStatement(DefaultStatement *stat) override
 
std::stack< std::pair< bool, bool > > ioStack
 
int32_t visitEmptyStatement(EmptyStatement *stat) override
System visitor pattern extracts read/write information from UCode. 
 
virtual void printProcsForDot(std::ostream &os, bool erd)
 
std::set< proc_t * > procs_t
 
bool operator()(const char *s1, const char *s2) const
 
int32_t visitBlockStatement(BlockStatement *stat) override
 
Partitions the system into environment and IUT according to TRON assumptions. 
 
std::map< const char *, strs_t > str2strs_t
 
Partitioner(const char *_title, TimedAutomataSystem &ta)
 
std::ostream & operator<<(std::ostream &os, const SignalFlow::strs_t &s)
 
std::set< const char *, const less_str > strs_t
 
virtual void printChansSeparateForDot(std::ostream &os, bool ranked, bool erd)
 
std::stack< exprref_t > valparams
 
std::stack< exprref_t > refparams
 
virtual void printVarsForDot(std::ostream &os, bool ranked, bool erd)
 
int32_t visitIterationStatement(IterationStatement *stat) override
 
std::map< const proc_t *, strs_t > proc2strs_t
 
print – template for pretty printing lists. 
 
bool checkParams(const symbol_t &s)
 
int32_t visitReturnStatement(ReturnStatement *stat) override
 
std::map< const symbol_t, expression_t > exprref_t
 
proc_t(const char *_name)
 
SignalFlow(const char *_title, TimedAutomataSystem &ta)
Analyse the system and extract I/O information: 
 
void addVar(const symbol_t &, str2strs_t &, str2procs_t &)
 
void printForTron(std::ostream &os)
Print I/O information in TRON format into given output stream. 
 
int32_t visitSwitchStatement(SwitchStatement *stat) override
 
void operator()(const T &x)
 
A reference to an expression. 
 
DistanceCalculator(const char *_title, TimedAutomataSystem &ta)
 
int32_t visitForStatement(ForStatement *stat) override
 
std::map< const char *, procs_t, less_str > str2procs_t
 
int32_t visitExprStatement(ExprStatement *stat) override
 
void setVerbose(int verbose)
 
int32_t visitDoWhileStatement(DoWhileStatement *stat) override
 
virtual void printVarsWriteForDot(std::ostream &os)
 
int32_t visitAssertStatement(UTAP::AssertStatement *stat) override
 
TimedAutomataSystem & taSystem