1 #ifndef COMPONENTTYPE_H_ 2 #define COMPONENTTYPE_H_ 33 cerr <<
"EXCEPTION ComponentTypeInvalid -> " << whatArg << endl;
59 map<string, VariableVector::size_type >
_mapVar;
68 map<string,vector<Rule *>::size_type>
_mapRule;
84 void setLabel(
const string & label) { labl = label; }
85 const string &
label()
const {
return labl; }
88 Port & createInputPort(
const string & portLabel);
89 Port & createOutputPort(
const string & portLabel);
90 Port & createInputPort(
const string & portLabel,
bool observable);
91 Port & createOutputPort(
const string & portLabel,
bool observable);
93 void generateFactory();
96 void insertVariable(
Variable & variable);
97 Event & createSpontaneousEvent(
const string & label);
98 Event & createInputEvent(
const string & portLabel,
const string & label);
99 Event & createOutputEvent(
const string & portLabel,
const string & label);
100 void insertInvariant(
const string & label,
const Formula & f);
101 void insertInvariant(
const Formula & f);
102 void generateGlobalInvariant();
105 const Formula & stateInvariant();
110 const Event & spontaneousEvent(
const string & msg)
const;
112 {
return containsInputEventOfLabel(
"SpontaneousPort" , label);
118 "inputEvent: the input event is not present");
119 return *_inputEvents[_mapInEvt.find(portLabel+
"."+msg)->second];
124 {
return _mapInEvt.find(portLabel +
"." + msg) != _mapInEvt.end(); }
132 "outputEvent: the output event is not present");
133 return *_outputEvents[_mapOutEvt.find(portLabel+
"."+msg)->second];
136 {
return _mapOutEvt.find(portLabel +
"." + msg) != _mapOutEvt.end(); }
145 return *_inports[_mapInport.find(portLabel)->second];
149 {
return _mapInport.find(portLabel) != _mapInport.end(); }
157 return *_outports[_mapOutport.find(portLabel)->second];
160 {
return _mapOutport.find(portLabel) != _mapOutport.end(); }
169 {
return _mapVar.find(label) != _mapVar.end(); }
174 return _variables[_mapVar.find(label)->second];
InvariantIterator endOfInvariant() const
map< string, vector< Event * >::size_type > _mapInEvt
VariableIterator endOfVariables() const
vector< Event * > _outputEvents
EventIterator endOfInputEvents() const
const Port & inputPort(const string &portLabel) const
bool containsInputEventOfLabel(const string &portLabel, const string &msg) const
vector< Port * >::const_iterator PortIterator
EventIterator endOfOutputEvents() const
map< string, Formula::ConstReference >::const_iterator InvariantIterator
map< string, Formula::ConstReference > _invariant
const VariableVector & variables() const
bool containsSpontaneousEventOfLabel(const string &label) const
vector< Formula::ConstReference > _globalInvariant
PortIterator endOfOutputPorts() const
VariableVector _variables
bool containsOutputEventOfLabel(const string &portLabel, const string &msg) const
const Port & spontaneousPort() const
map< string, vector< Port * >::size_type > _mapOutport
map< string, vector< Rule * >::size_type > _mapRule
PortIterator beginOfOutputPorts() const
bool containsVariableOfLabel(const string &label) const
const Event & inputEvent(const string &portLabel, const string &msg) const
RuleIterator endOfRules() const
RuleIterator beginOfRules() const
Variable::VariableVector VariableVector
vector< Event * >::const_iterator EventIterator
VariableIterator beginOfVariables() const
#define require(Exception, expr, message)
PortIterator beginOfInputPorts() const
ComponentTypeInvalid(const string &whatArg)
Namespace of the Diades project.
map< string, vector< Event * >::size_type > _mapOutEvt
EventIterator beginOfOutputEvents() const
FormulaFactory * _factory
vector< Formula::ConstReference > _stateInvariant
const Port & outputPort(const string &portLabel) const
std::ostream & operator<<(std::ostream &os, const Identifier &identifier)
vector< Rule * >::const_iterator RuleIterator
PortIterator endOfInputPorts() const
map< string, vector< Port * >::size_type > _mapInport
FormulaFactory & factory()
vector< Port * > _inports
bool containsInputPortOfLabel(const string &portLabel) const
map< string, VariableVector::size_type > _mapVar
const Event & outputEvent(const string &portLabel, const string &msg) const
vector< Event * > _inputEvents
bool containsOutputPortOfLabel(const string &portLabel) const
const string & label() const
vector< Port * > _outports
InvariantIterator beginOfInvariant() const
const Formula & globalInvariant() const
VariableVector::const_iterator VariableIterator
void setLabel(const string &label)
Variable variable(const string &label) const
EventIterator beginOfInputEvents() const