1 #ifndef __DIADES__SDMDL__BDDCOMPONENT__HH 2 #define __DIADES__SDMDL__BDDCOMPONENT__HH 15 #include <unordered_map> 24 using std::unordered_map;
38 static string typeName() {
return "Diades::Sdmdl::BddComponent"; }
58 mutable vector< reference_wrapper<FormulaFactory> >
_factory;
66 _events(),_setOfEvents(),_stateVariable(),_nextStateVariable(),
67 _eventVariable(),_factory(){};
122 require(Exception,_initialState.size() == 1,
123 "BddComponent::initialStates: not initialised");
124 return _initialState[0].get();
130 require(Exception,_behaviour.size() == 1,
131 "BddComponent::transitions: not initialised");
132 return _behaviour[0].get();
137 require(Exception,_behaviour.size() == 1,
138 "BddComponent::transitions: not initialised");
139 return _behaviour[0].get() && evt;
153 require(Exception,_behaviour.size() == 1,
154 "BddComponent::transitions: not initialised");
155 return (_behaviour[0].
get() && sources &&
events);
180 const SlStates &
trigger(
const SlStates & sources,
const SlEvents & events)
const;
194 const SlEvents & events)
const;
207 const SlStates &
reach(
const SlStates & sources,
const SlEvents & nonObservables,
const SlEvents & observations);
214 require(Exception,_factory.size() == 1,
215 "BddComponent::factory: not initialised");
216 return _factory[0].get();
const SlStates & synchronousTrigger(const SlStates &sources, const SlEvents &events) const
Diades::Graph::Edge Transition
const SlStates & initialStates() const
unordered_map< string, size_t > _eventLabels
vector< reference_wrapper< FormulaFactory > > _factory
void encodeEventLabels(const SynchronisationRules &model, const Component &component)
const SlStates & trigger(const SlStates &sources, const SlEvents &events) const
FormulaFactory & factory()
VariableVector _nextStateVariable
void encodeInitialStates(const Component &component)
const SlTransitions & transitions() const
const SlEvents & events(std::set< Event > &events)
AutFsm::Transition Transition
void encodeComponent(FormulaFactory &factory, const SynchronisationRules &model, const Component &component, Variable &stateVar, Variable &nextStateVar, Variable &event)
DdAutFsm::EventPropertyId Event
VariableVector _stateVariable
const SlStates & reach(const SlStates &sources, const SlEvents &nonObservables, const SlEvents &observations)
std::vector< Reference > VariableVector
#define require(Exception, expr, message)
Namespace of the Diades project.
FormulaVector _noTransitions
const SlTransitions & transitions(const SlStates &sources, const SlEvents &events) const
FormulaVector _setOfEvents
Diades::Utils::Exception< BddComponent > Exception
Variable::VariableVector VariableVector
VariableVector _eventVariable
const SlEvents & event(const Event &event)
const SlTransitions & noTransitions() const
Formula::FormulaVector FormulaVector
void encodeTransitions(const Component &component)
FormulaVector _initialState
const Formula & encodeTransition(const Component &component, const Transition &transition)
const SlTransitions & transitions(const SlEvents &evt) const